在上一篇文章中,ahuaxuan和大家一起写了一个cassandra的insert和get的例子。从这个例子中我们也得知了操作cassandra的最基本流程,
除此之外我们也初步了解了cassandra中的数据模型,但是只是肤浅的了解了一下,那么我们接着上一篇的话题,继续阐述这个问题。
在我们操作数据的代码中:
String table = "Keyspace1";
String row = "row007";
ColumnPath col = new ColumnPath("Standard1", null, "ahuaxuan".getBytes());
cassandraClient.insert(table, row, col, " first cassandra sample of ahuaxuan".getBytes(), 1, 1);
我们遇到了三个概念,第一个是keyspace, 第二个是ColumnFamily, 第三个是Row。
前面两个属性,我们将可以看成是数据库和表的关系,那么第三个属性呢?
在cassandra文中写道:ColumnFamily的数据是排序后存放在单独的文件中的,row就是排序因子,那个row其实就可以是我们的key,
事实上在cassandra的源代码中row就是key,比如我们看这段源代码:
看上面这个方法的第二个参数,其实就是key.
所以看到这里,我们基本上确定了cassandra中的存储模型,为:
Keyspace1--row007--Standard1,可以确定某个keyspace下的某个key的某个ColumnFamily,
然后再创建某个Column, 包