

Cassandra 3.xのSecondary Indexのディスク使用量の見積りで困っています。  
DataStaxのcommiterであるTyler Hobbs氏が0.7に関しては以下の様に回答しています。

> Their size will roughly be:  
>  (cardinality of the set of indexed values * the avg size of the index
> values) + (the number of keys in the indexed column family * the avg size of
> keys in the column family).  
>  Nodes only index rows that are stored locally -- that is, only rows for
> which they are a replica.

ここでの(the number of keys in the indexed column family * the avg size of keys in
the column family)  
で使用されているkeysはインデックス作成対象テーブルのPrimary Keyに含まれるカラムという認識で正しいでしょうか。  
また、これはVer3.xでも有効でしょうか。  
よろしくお願いいたします。


CC BY-SA 4.0
2020-03-11T06:21:18.303
63755
2020-03-13T00:40:02.010
2020-03-11T11:16:38.020
32986
38169
question
apache database cassandra
Cassandra 3.xのSecondary Indexのディスク使用量の見積りに関して


Cassandraのセカンダリーインデックスは転置インデックスです。  
例えば、以下のようなテーブルがあり、

[code]

    CREATE TABLE users (
        user_id text,
        name text,
        group text,
        PRIMARY KEY (user_id)
    );
    
[/code]

このテーブルにインデックスを作成します。

[code]

    CREATE INDEX users_by_group ON users (group);
    
[/code]

すると、Cassandraの各ノードは、そのノードが保持しているusersテーブルのデータに対して以下のような内部テーブルを作成します。

[code]

    CREATE TABLE users_by_group (
        user_id text,
        group text,
        PRIMARY KEY ((group), user_id)
    );
    
[/code]

そして、インデックスを用いたSELECTの際に、インデックスのテーブルをまず検索し、元テーブルのプライマリーキー情報を取得します。  
そして、取得したプライマリーキーで改めて、元テーブルを検索します。

したがって、質問にある

> ここでの(the number of keys in the indexed column family * the avg size of keys
> in the column family)で使用されているkeysはインデックス作成対象テーブルのPrimary
> Keyに含まれるカラムという認識で正しいでしょうか。

keys はおっしゃる通りPrimary Keyに含まれるカラムです。  
この構造は Ver3.x でも変わっていません。


CC BY-SA 4.0
2020-03-12T06:26:11.447
63786
2020-03-12T06:26:11.447
4157
63755
answer