我已经对cassandra集群执行了1000次插入。但似乎表中只有5行。这怎么可能?我知道有一种兑现机制,cassandra不会发布插入内容。但是如何最终确定插入
for (int i = 0; i < 1000; i ++ ) {
try {
String testIns =
"INSERT INTO keyspace.testtable ( var1, var . . . ) " +
" VALUES ( " . . . ); "
;
session.execute( testIns ) ;
System.out.println("Row " + i );
}
catch (Exception e) {
}
}
但是这个talbe SELECT * FROM keyspace.testtable
只包含6行。为什么?如何解决这个问题?
答案 0 :(得分:1)
可能的一种方式是,因为PRIMARY KEY的基数。
Cassandra PRIMARY KEYs是独一无二的。所以如果我的表定义如下:
cassdba@cqlsh> use stackoverflow ;
cassdba@cqlsh:stackoverflow> CREATE TABLE singlePrimaryKey (
key1 text PRIMARY KEY, letter1 text);
然后我插入六行......
cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
VALUES ('A','A');
cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
VALUES ('A','B');
cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
VALUES ('A','C');
cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
VALUES ('A','D');
cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
VALUES ('A','E');
cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
VALUES ('A','F');
当我从整个表中选择时,我看到了这一点:
cassdba@cqlsh:stackoverflow> SELECT * FROM singleprimarykey ;
key1 | letter1
------+---------
A | F
(1 rows)
这怎么可能?
如您所见,这就是多个INSERT成为一行的方式。