有沒有一種方法可以使用列家族模板更新cassandra數據庫中的多行,如提供一個鍵列表。 當前我正在使用updater columnFamilyTemplate來遍歷一個鍵的列表併爲每一行進行更新。我看到過像multigetSliceQuery這樣的查詢,但我不知道它們在進行更新時的等價性。如何使用Hector更新多行
回答
ColumnFamilyTemplate中沒有實用方法,只允許您在一個調用中傳遞帶有突變列表的鍵列表。 你可以使用mutators來實現你自己的。
這是如何做到這一點的赫克託
Set<String> keys = MY_KEYS;
Map<String, String> pairsOfNameValues = MY_MUTATION_BY_NAME_AND_VALUE;
Set<HColumn<String, String>> colums = new HashSet<HColumn<String,String>>();
for (Entry<String, String> pair : pairsOfNameValues.entrySet()) {
colums.add(HFactory.createStringColumn(pair.getKey(), pair.getValue()));
}
Mutator<String> mutator = template.createMutator();
String column_family_name = template.getColumnFamily();
for (String key : keys) {
for (HColumn<String, String> column : colums) {
mutator.addInsertion(key, BASIC_COLUMN_FAMILY, column);
}
}
mutator.execute();
那麼它應該是一個基本的代碼。這是插入一個例子,一定要使用下面的方法進行批量突變:
mutator.addInsertion
mutator.addDeletion
mutator.addCounter
mutator.addCounterDeletion
因爲這樣的會馬上執行,而不必等待mutator.execute():
mutator.incrementCounter
mutator.deleteCounter
mutator.insert
mutator.delete
由於最後一個注意事項:一個增變器可以讓你一次對多個列族的多行進行批處理變異......這就是爲什麼我通常更喜歡用它們代替CF模板的原因。對於使用NoSQL的「push-on-write」模式的功能,我有很多反規範化功能。
您可以使用批量突變來儘可能多地插入(在thrift_max_message_length_in_mb內)。見http://hector-client.github.com/hector//source/content/API/core/1.0-1/me/prettyprint/cassandra/model/MutatorImpl.html。
我認爲你提到節儉的最大尺寸是很重要的,因爲如果你不小心,它會丟失連接。所以+1 – 2013-05-09 10:23:35
嗨理查德,你能否闡述節儉的最大規模和失去聯繫。我一直沒有暗示最大尺寸,我需要知道我應該採取什麼樣的照顧。 – qualebs 2013-05-16 20:45:39
- 1. 使用hector api根據cassandra中的列值更新行
- 2. 使用codeigniter更新多行
- 3. 如何更新多行?
- 4. 如何更新多行PHP
- 5. 如何更新多行
- 6. 如何使用Hector重新連接到Cassandra?
- 7. 如何用子查詢更新多行?
- 8. 如何用隨機值更新多行
- 9. 如何使用多個值更新多行?
- 10. Cassandra Hector:如何驗證行更新的成功/失敗(錯誤處理)
- 11. 使用Hector對Cassandra數據運行mapreduce
- 12. Cassandra Hector:如何使用索引列執行MultigetSliceQuery?
- 13. 如何使用Hector中的複合鍵讀取行?
- 14. 如何使用現有行更新行?
- 15. 如何用條件使用mysql數據庫更新多行?
- 16. Mongoose - 如何使用多個更新語句執行單個更新
- 17. MySQL更新 - 更新多行?
- 18. 如何使用此方法更新多行表?
- 19. 如何使用一個查詢更新mysql中的多行
- 20. SQL Server 2005中如何-----使用更新多行子查詢
- 21. 如何使用linq to sql進行多個更新?
- 22. 如何使用SQL查詢更新表中的多個行?
- 23. 如何在PHP中使用MySQL執行多個更新查詢?
- 24. MS SQL如何使用單個值更新多行?
- 25. 如何使用mysql執行多個更新查詢
- 26. 如何使用子查詢更新多行
- 27. 如何使用Propel ORM更新具有不同值的多行?
- 28. 如何使用python/Django更新MySQL中的多行(CASE,WHEN,THEN)
- 29. PHP的 - 如何使用foreach更新多行?
- 30. 如何使用生成多行的select語句更新表?
我想要澄清一點:如果我想刪除多行,那麼我應該先獲取鍵列表,然後嘗試逐個刪除每一行鍵。或者有其他方式可以刪除多行。因爲這個場景就像我不知道行鍵(因爲它隨機生成),但我知道電子郵件或每行的某個特定列值。 – manish 2013-05-09 05:22:10
你應該看一看Reddit的內容......他們在Board/Message/Comment類型的數據中處於使用Cassandra的最前沿。我寧願使用couchbase/bigcouch/couchdb。使用cassandra的挑戰性部分是擺脫「讀 - 修改 - 寫」,並將任何修改寫入cass。 – 2013-05-09 10:20:09
如果您要將您最後的評論發佈爲問題,我認爲這對我們很多人來說是一個有趣的練習。 – 2013-05-09 10:22:34