Database-Design

儲存在鍵值 NoSQL DB 中的評論系統的日期模型?

  • November 14, 2014

我正在嘗試利用 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表。它它一起工作。

引用自:https://dba.stackexchange.com/questions/82205