2016-02-25 106 views
1

我有一個SQL表,正在模擬cassandra運行不同的查詢。更新性能cassandra

id primary key, 
fname, 
lname, 
age 

所有字段可以查詢這樣的IM創造多個表

Person_fname

fname primary key, 
lname, 
age, 
id 

Person_lname

lname primary key, 
fname, 
age, 
id 

Person_age

age primary key, 
lname, 
age, 
fname 

問題: -

1. If first_name is updated for a particular person, Should I need to update all the tables? 
2. What would be the performance impact in CASSANDRA because of this update 

回答

0

爲了您questuion#1,因爲你的意思是在不同的表更新列值,毫無疑問,你必須更新所有表。

對於問題#2,首先您可以進行批量更新,並且在其分區位於同一節點上時,多個表上的批更新性能最好,以確保這是使用與列分區鍵相同的列這些表格,例如爲person_id。

但是你的餐桌設計上面的cassandra看起來完全錯誤。 cassandra中需要記住的一件事是,對於相同的主鍵值,只能在表中有一行,並且使用相同的主鍵值插入或更新,具有相同的insertOrUpdate效果。

例如對於第二張表,不可能有兩行具有相同的fname值'tom'。如果插入fname ='tom'的兩行,則第二個插入行實際上會更新第一個插入插入的行。

+0

很多謝謝..我同意,我添加了所有表的主鍵的id部分..現在它看起來不錯嗎? – user1050619

+0

另外,這個Person表可能有10個屬性,用戶希望查詢所有屬性,並且即時計劃爲每種類型的查詢創建10個表。由於cassandra建議設計表用於不同的查詢......它是否真的使感? – user1050619

+0

使用id列作爲主鍵是正確的。但是創建10個表格僅用於不同列的查詢沒有多大意義。是的,cassandra不允許在所有字段上查詢,對於您的情況,考慮將Solr或Elasticearch與Cassandra一起使用。插入或更新記錄時,還要更新Solr/Elasticsearch索引,以便您可以使用Solr/Elasticsearch搜索API自由搜索。 –