2014-12-02 46 views

回答

3

有很多方法可以解決這個問題,我建議檢查DataStax的Data Modeling training,以獲得系統深入的外觀。

實際上,構建普通的ERD和預期查詢列表可能是讓您的數據模型正確的好的一步。

一旦你有了這個,你想把它轉換成一個Cassandra特定的圖表,其中你代表主鍵,集羣鍵和even secondary indexes(但只適用於低基數字段)。請記住,ERD中的多個實體可能會翻譯成一個C *表,並且最終可能會重複某些寫入操作,以提高讀取性能並允許進行不同類型的查詢。一個簡單的例子可能如下所示:

Reviews_by_Day 
userid text  P 
day int   C 
productid text 
reviewid uuid 
profilename text 
helpfulness text 
score text 
summary text 
review text 
time timestamp 

您也可以在您的羣集列中指定asc/desc。上面的圖表將代表如下表:

CREATE TABLE reviews_by_day 
(
userid text, 
day int, 
productid text, 
reviewid uuid, 
profilename text, 
helpfulness text, 
score text, 
summary text, 
review text, 
time timestamp, 
PRIMARY KEY (userid, day) 
) 

預計查詢您將在C *進行想想吧,將用於各表的列表結合這一點。您可以通過添加查詢(以Q1,Q2等標記)並使用箭頭來演示應用程序流程來擴充圖表。

另一個可能有用的工具是data modeling application,它允許您鍵入表定義並查看它如何存儲在Cassandra存儲引擎中(目前不支持集合)。它還可讓您計算表格的估計分區大小,並生成一個樣本.yaml文件,用於Cassandra從C * 2.1(與2.0向後兼容)的新cassandra-stress。

注意:此工具正在開發中,可能會更改。

-1

我編寫了工具cql2plantuml,該工具從CQL模式中提取plantuml .puml文件。

您仍然需要對模式中關係的.puml文件進行一些編輯,作爲Cassandra Keyspace不包含表格之間關係的任何表示。