2017-10-11 46 views
0

我已經對cassandra集羣執行了1000次插入。但似乎只有5行在表中。這怎麼可能?我知道有一種兌現機制,cassandra不會發布插入內容。但我怎麼能完成插入Cassandra JDBC INSERT不能始終工作

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行。爲什麼?如何解決這個問題?

回答

1

有一種可能的方式是因爲PRIMARY KEY的基數。

卡桑德拉PRIMARY KEY是獨一無二的。所以,如果我的表的定義是這樣的:

[email protected]> use stackoverflow ; 
[email protected]:stackoverflow> CREATE TABLE singlePrimaryKey (
           key1 text PRIMARY KEY, letter1 text); 

然後我插入六行...

[email protected]:stackoverflow> INSERT INTO singleprimarykey (key1,letter1) 
           VALUES ('A','A'); 
[email protected]:stackoverflow> INSERT INTO singleprimarykey (key1,letter1) 
           VALUES ('A','B'); 
[email protected]:stackoverflow> INSERT INTO singleprimarykey (key1,letter1) 
           VALUES ('A','C'); 
[email protected]:stackoverflow> INSERT INTO singleprimarykey (key1,letter1) 
           VALUES ('A','D'); 
[email protected]:stackoverflow> INSERT INTO singleprimarykey (key1,letter1) 
           VALUES ('A','E'); 
[email protected]:stackoverflow> INSERT INTO singleprimarykey (key1,letter1) 
           VALUES ('A','F'); 

我看到這個的時候我從整個表中選擇:

[email protected]:stackoverflow> SELECT * FROM singleprimarykey ; 

key1 | letter1 
------+--------- 
    A |  F 

(1 rows) 

這怎麼可能?

正如您所看到的,這是多個INSERT成爲一行的方式。