Database-Design
儲存在鍵值 NoSQL DB 中的評論系統的日期模型?
我正在嘗試利用 Cassandra 對時間序列數據的強大支持來建構評論系統。
到目前為止,我認為每一行都是一個特定的主題,每條評論都是一個新列,以 event_time 降序儲存,這樣我就可以獲得最新的回复。
CREATE TABLE topic ( topic_id text, user_id text, event_time timestamp, data text, PRIMARY KEY (topic_id,event_time), ) WITH CLUSTERING ORDER BY (event_time DESC);
但是,例如,如果我想獲得“約翰”發表的最後 10 條評論,這對於目前模型來說似乎很困難。
任何人都可以就如何有效地檢索“約翰的評論”以及是否必須更改數據模型提供任何建議?
在 Cassandra 中,您需要採用基於查詢的建模方法。在您的情況下,我將創建一個類似結構的查詢表,如下所示:
CREATE TABLE topicbyuser ( topic_id text, user_id text, event_time timestamp, data text, PRIMARY KEY (user_id,event_time), ) WITH CLUSTERING ORDER BY (event_time DESC);
然後,如果您想查詢 John 發表的最後 10 條評論,這將起作用:
SELECT * FROM topicbyuser WHERE user_id='John' LIMIT 10;
您也可以添加
ORDER BY
, 但由於您的列族定義中有它,因此您不需要它。另外,您應該注意,此查詢表不會替換原始topic
表。它與它一起工作。