2017-01-30 2 views
1

1つのクエリで行ごとに更新する列の数を増やすと、cassandraのパフォーマンスが向上または低下しますか。 -Cassandraのパフォーマンス:行ごとの列の更新

1 /テーブルグループ(>ロール)のgroupIdのInt、名前の文字列、メンバーマップ(USERID):最適なapproches我々は、テーブルのグループ(例えばFBグループを)持っていることを言っ

または

2 /テーブルグループ(groupIdをINT、名前の文字列は、設定してください管理者[INT]、モデレータセット[INT]、simpleMembersセット[INT])

私たちは、ユーザーがモデレーターを持っていると役割をAMINできると仮定 このユーザーを削除するときは、第2のaproachの2つの列の管理者とモデレータを更新します。これは、最初の列メンバーではなく、列メンバーのみを更新する必要があります。

答えて

1

マルコのコメントからCopid -

Basically the write performance will not be affected but the read performance will suffer if you have very 
very long rows and always read stuff from the back of it. 
Over time when you insert the data cassandra will also have to read more sstables to satisfy your read requests, 
so with time read performance will degrade if you are not careful 

私は削除を避け考えるでしょう。上記のユースケースを設計して、削除を避けることができれば。

 create table groups(
     groupid int, 
     userid int, 
     groupName text static, 
     attributes Map(text , text), 
     primary key (groupid,userid) 
    ); 

クエリ - 私たちは、テーブル内の任意の値を削除する必要はありません

insert into groups (groupid,userid,groupName,attributes) values (100,200,'friends',{'admin':'false','moderator':'true','user-member':'true'}); 

update groups set attributes['admin'] = 'true' where groupid=100 and userid = 200; 

この方法です。また将来、新しい属性を追加したい場合は、テーブル定義を変更する必要はありません。

+0

グループに1000人のメンバーがいるとします。グループ名が変更されたら、1000行を更新する必要があります。これは悪くないですか? –

+0

グループ名を静的に保つことができます – Gunwant

+1

基本的に書き込みパフォーマンスは影響を受けませんが、非常に長い行があり、常にその背後のものを読み取ると、読み取りパフォーマンスが低下します。 データを挿入すると時間が経つにつれて、cassandraは読み込み要求を満たすために多くのsstableを読み込む必要があります。したがって、気をつけないと読み込みパフォーマンスが低下します。 –

関連する問題