Cassandra静态列设计

9

静态列在Cassandra中是如何存储的?能否有人举例说明Cassandra中静态列的设计实现?


我已经在互联网上搜索了文档,但没有找到任何与内部结构相关的详细信息。 - Sachin Janani
1个回答

19

为什么不看一下磁盘上具有静态列的表的结构,然后找出答案呢?

cqlsh:test> CREATE TABLE test (k int, v int, s int static, d int, PRIMARY KEY(k,v))

cqlsh:test> INSERT INTO test (k, v, s, d) VALUES ( 1, 1 ,20, 1 );
cqlsh:test> INSERT INTO test (k, v, s, d) VALUES ( 1, 3 ,21, 2 );
cqlsh:test> INSERT INTO test (k, v, s, d) VALUES ( 1, 2 ,21, 2 );

退出C*并运行nodetool flush来制作我们的sstables。在数据目录中创建的.db文件上运行sstable2json
[
{"key": "1", <--- K=1 Partition
 "cells": [[":s","21",1425050917842350], <---- Our Static Column
           ["1:","",1425050906896717], < --- C=1 row
           ["1:d","1",1425050906896717], < --- C=1, D=1 value
           ["2:","",1425050917842350], < --- C=2 row
           ["2:d","2",1425050917842350], < --- C=2, D=2 value
           ["3:","",1425050912874025], <--- C=3 Row
           ["3:d","2",1425050912874025]]} <--- C=3, D=2 Value
]

你可以看到,在Cassandra中,这个静态列保存在我们分区的开头,一个标题为“Blank:ColumnName”的单元格中。与所有其他单元格不同,该单元格名称中没有关于聚簇列 c 的任何信息,因此 c 的所有值仍将修改相同的静态列 s 要了解更多详情,请查看JIRA上的内容 https://issues.apache.org/jira/browse/CASSANDRA-6561 以及博客文章 http://www.datastax.com/dev/blog/cql-in-2-0-6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接