2016-09-15 6 views
-3

私は新しいカサンドラです。 Cassandraで最良のデータモデルを定義する方法を理解するのを手伝ってください。カサンドラデータモデル設計のアプローチ

モデル1:

CREATE TABLE users (
    id uuid PRIMARY KEY, 
    username text, 
    email text, 
    age int 
) 

CREATE TABLE users_by_username (
    username text PRIMARY KEY, 
    id uuid 
) 

CREATE TABLE users_by_email (
    email text PRIMARY KEY, 
    id uuid 
) 

利点

:重複するレコード1.No 。 2.更新/削除は一度だけですが、ユーザーの詳細を検索するには、
クエリを1つ選択する必要があります。

ディス利点

1. To get user records, Need to select in 2 tables ( users_by_username 
     or users_by_email and users) 

モデル2

CREATE TABLE users_by_username (
    id uuid PRIMARY KEY, 
    username text, 
    email text, 
    age int 
) 

    CREATE TABLE users_by_email (
    id uuid PRIMARY KEY, 
    username text, 
    email text, 
    age int 
) 

利点:

1. To get user records, only once select query. 

ディス利点:

1.Duplicate records in two tables. 
    2. Update/Delete needs to performed in two tables. 

良いだろうどのモデルに私を提案してください?

答えて

0

テーブル(列ファミリ)をモデル化する最も良い方法は、最初に情報にアクセスする方法を定義することです。 - uuid、email、usernameでクエリを実行しますか?あなたの例はuuid(プライマリキー)を参照している場合にのみうまくいくでしょう

+0

ユースケースの場合はメールで、別のユースケースの場合はユーザ名でクエリ – Gnana

+0

'CREATE TABLE users_by_username( のid UUID、 ユーザ名のテキスト、 電子メール、テキスト、 年齢はint、 PRIMARY KEY(ID、ユーザ名) ) ' ' TABLEのusers_by_emailをCREATE( のid UUID、 ユーザ名のテキスト、 電子メール、テキスト、 年齢int、 PRIMARY KEY(ID、Eメール) ) ' アトミック[更新](https://docs.datastax.com/en/cql/3.1/cql/cql_reference/batch_r.html)を使用する必要がある挿入、更新、または削除を行うとき ' BEGIN UNLOGGED BATCH INSERT INTO users_by_username VALUES(...); INSERT INTO users_by_email VALUES(...); バッチを適用; –

+0

ありがとうございます。それは役に立つだろう – Gnana

関連する問題