簡體   English   中英

Apache Cassandra中的復合索引

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM