深入浅出cassandra 3 例子背后的模型,深入浅出cassandra
/** * author: ahuaxuan(张荣华) * date 2010-2-25 */
深入浅出cassandra 3 例子背后的模型
在我们操作数据的代码中:
1.<span style="font-size: small;"> String table = "Keyspace1";
2. String row = "row007";
3. ColumnPath col = new ColumnPath("Standard1", null, "ahuaxuan".getBytes());
4.
5.
6. cassandraClient.insert(table, row, col, " first cassandra sample of ahuaxuan".getBytes(), 1, 1);
7.</span>
我们遇到了三个概念,第一个是keyspace, 第二个是ColumnFamily, 第三个是Row。 前面两个属性,我们将可以看成是数据库和表的关系,那么第三个属性呢? 在cassandra文中写道:ColumnFamily的数据是排序后存放在单独的文件中的,row就是排序因子,那个row其实就可以是我们的key, 事实上在cassandra的源代码中row就是key,比如我们看这段源代码:
1.public static void main(String[] args) throws TException, TimedOutException, InvalidRequestException, UnavailableException, NotFoundException {
2. init();
3. String table = "Keyspace1";
4. String row = "row007";
5. ColumnPath col = new ColumnPath("Standard1", null, "ahuaxuan".getBytes());
6. ColumnPath col2 = new ColumnPath("Standard2", null, "ahuaxuan".getBytes());
7.
8.
9. cassandraClient.insert(table, row, col, " first cassandra sample of ahuaxuan".getBytes(), 3, 1);
10. cassandraClient.insert(table, row, col2, " second cassandra sample of ahuaxuan ".getBytes(), 4, 1);
11. Column column = cassandraClient.get(table, row, col, 1).column;
12. Column column2 = cassandraClient.get(table, row, col2, 1).column;
13.
14.
15. System.out.println("read row " + row);
16. System.out.println("column name: " + new String(column.name));
17. System.out.println("column value" + ": " + new String(column.value));
18. System.out.println("column timestamp" + ":" + (column.timestamp));
19.
20.
21. System.out.println("\r\nread row " + row);
22. System.out.println("column name: " + new String(column2.name));
23. System.out.println("column value" + ": " + new String(column2.value));
24. System.out.println("column timestamp" + ": " + (column2.timestamp));
25. }
第一次放到Keyspace1--row007--Standard1中,列名为ahuaxuan,列值为first cassandra sample of ahuaxuan,timestamp为3, 接着我更新Keyspace1--row007--Standard1中,列名为ahuaxuan,列值为second cassandra sample of ahuaxuan,timestamp为2 结果更新不成功,但是如果我把timestamp改成4,更新可以成功。
如上图所示
这 是一个存储Web网页的范例列表片断。行名是一个反向URL{即com.cnn.www}。contents列族{原文用 family,译为族,详见列族} 存放网页内容,anchor列族存放引用该网页的锚链接文本。CNN的主页被Sports Illustrater{即所谓SI,CNN的王牌体育节目}和MY-look的主页引用,因此该行包含了名叫“anchor:cnnsi.com”和 “anchhor:my.look.ca”的列。每个锚链接只有一个版本{由时间戳标识,如t9,t8};而contents列则有三个版本,分别由时间 戳t3,t5,和t6标识。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。