【发布时间】:2018-01-02 12:55:49
【问题描述】:
鉴于以下简化的域模型:
火车之旅
- id uuid
- 火车名称字符串(一天内唯一)
- 行程日期
- ...
旅程驿站
- 站 uuid
- 到达时间戳
- 出发时间戳
- ...
有了这个关系:
- 1 Train Journey 有 n 个旅程站
有此查询要求:
- 给定车站的所有火车旅程,包括所有旅程车站,在给定时间范围内出发。
这个查询应该如何在 Cassandra 中建模?
我在想这样的事情:
CREATE TABLE departures_by_station (
date_of_yourney date,
train_name varchar,
station uuid,
arrival timestamp,
departure timestamp,
primary key((date_of_journey, station), train_name, departure)
);
SELECT * from departures_by_station
WHERE date_of_journey = '2018-01-02' AND station = 'Paris' AND departure ...;
这将不起作用,因为它会导致部分火车旅程 - 除了请求的站点之外的所有旅程站都丢失了。 更糟糕的是,到达和离开时间可能会经常变化。我无法使用新的出发时间更新此表,因为它是一个集群键。
任何想法或提示如何解决这个问题?我想我在这里缺少一些基本的东西,但我对 nosql 世界很陌生。
【问题讨论】:
-
您如何处理历史数据 - 您是否保留“旧旅程”?你每天有多少趟旅程?
-
一天几万。过去的旅程是可忽略的,它们将被单独跟踪。假设我们谈论的是 7 天的数据,每天有 3000 次行程。
-
还有多少站?
-
首先:感谢您的时间和兴趣,Alex!我说的是每次行程 2-100 个站点。
标签: cassandra nosql domain-model