2013-06-05 31 views
0

我可以根據需要多次運行此更新。即如果行'測試'已經存在,則代碼不會錯誤:向cassandra列家族添加同一行兩次會產生什麼影響?

[[email protected]] update column family my_column_family with 
...   column_metadata = 
...   [ 
...   {column_name: test, validation_class: UTF8Type} 
... ]; 
f20046d1-0f89-3c52-b568-c41061e32071 
Waiting for schema agreement... 
... schemas agree across the cluster 
[[email protected]] update column family my_column_family with 
...   column_metadata = 
...   [ 
...   {column_name: test, validation_class: UTF8Type} 
... ]; 
299eebb0-3c71-378d-b9cd-972bb35a49e0 
Waiting for schema agreement... 
... schemas agree across the cluster 

此外,更新不會刪除該行中的任何現有數據。

我的問題:多次添加同一行有次要的影響,我應該知道嗎?我相信一個索引會被刪除,除非再次指定,但我不擔心這一點。

我不希望更新以較高的速度運行。可能每天都這樣做,但列家可能包含數百萬條記錄。

回答

1

簡答題:使用CQL,它會更有意義。 http://www.datastax.com/docs/1.2/ddl/table

較長的答案:設置Thrift column_metadata將根據需要刪除或創建索引,以使Cassandra的內部模式與您告訴它更新的內容匹配。它不會讓您將列類型更改爲不兼容的東西,但您可以通過刪除定義並重新添加它來「愚弄」它。

注意:如果您每天都在更改您的模式,那麼您是否做錯了,無論您是使用CQL還是Thrift。

+0

是的,我誇大了模式的「每日」更新。基本上我正在編寫一個腳本來產生一個cli update命令,系統管理員可能會偶爾運行這個命令,並且想知道是否需要擔心讓我的腳本知道現有的列以僅創建新的命令。 – Lolo

+0

不是用這種方法,你不。 – jbellis

相關問題