[英]Compound Indexes in Apache Cassandra
我正在嘗試在幾個列上設置一個帶有二級索引的cassandra列族,我需要在讀取數據時進行過濾。 在我的初始測試中,當我一起使用多個索引時,事情變慢了。 這是我目前如何配置它(通過cassandra-cli):
update column family bulkdata with comparator=UTF8Type and column_metadata=[{column_name: test_field, validation_class: UTF8Type}, {column_name: create_date, validation_class: LongType, index_type: KEYS}, {column_name: domain, validation_class: UTF8Type, index_type: KEYS}];
我想獲取create_date> somevalue1和column_name = somevalue2的所有數據。 使用pycassa為我的客戶端我執行以下操作:
domain_expr = create_index_expression('domain', 'whatever.com')
cd_expr = create_index_expression('create_date', 1293650000, GT)
clause = create_index_clause([domain_expr, cd_expr], count=10000)
for key, item in col_fam.get_indexed_slices(clause):
...
這當然是SQL中的一個常見錯誤,人們通常必須根據查詢需要創建復合索引。 我對cassandra很新,所以我不知道這樣的東西是否需要甚至存在。
我與cassandra的交互將包括大量的寫入,以及大量的讀取和更新。 我已經建立了索引,認為它們是正確的做法,但也許我完全錯了。 我對設置高性能系統的任何想法感興趣,我的索引設置或不設置。
哦,這是在cassandra 0.7.0-rc3
Native Cassandra二級索引有一些限制。 根據datastax文檔,它們不應該用於具有高基數的列(太多的唯一值)。 您正在編制索引的create_date列似乎具有高基數。 此外,在本地Cassandra索引支持中沒有復合索引這樣的東西。
如需更深入的報道,請訪問我的博客文章http://pkghosh.wordpress.com/2011/03/02/cassandra-secondary-index-patterns/
普拉納布
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.