我有数据告诉我发生了特定事情的事件。
例子:
- Box #1 在 2015-02-15 10:00 位于位置 A。
- Box #1 已于 2015-02-15 10:15 放入 Box #2。
- Box #2 已于 2015-02-15 11:00 放入 Box #3。
- Box #3 于 2015-02-16 03:00 位于位置 B。
- Box #2 已于 2015-02-16 04:30 从 Box #3 中移除。
- Box #3 于 2015-02-16 05:00 位于位置 C。
我有三个主要要求:
- 我现在应该能够知道我所有的盒子在哪里查询。例如,在 2015 年 2 月 16 日 06:00 查询应该会导致。框 #1 在位置 B 的框 #2 内。框 #3 在位置 C 并且里面没有任何东西。
我应该能够看到发生在特定盒子上的一切。例如对于框 #1:
- 2015-02-15 10:00 在 A 地
- 在 2015-02-15 10:15 被放入 Box #2
- 在 Box #2 内,在 2015-02-15 11:00 被放入 Box #3
- 在 2015 年 2 月 16 日 03:00 位于位置 B 的 Box #2 内。
- 在 2015 年 2 月 16 日 04:30 从 Box #3 中移除的 Box #2 内。
我应该能够分辨出所有盒子在特定时间的位置。例如,在 2015-02-16 10:30,Box #1 在位置 A 的 Box #2 内。
我一直在研究图形数据库,因为它们似乎比关系数据库更好地处理这种类型的关系(尝试在 Sql 中进行递归查询并不容易)。看起来我需要一个 Box 节点、一个 Location 节点和它们之间的边,用于关系“Inside”和“At”。但我不确定如何将时间要求纳入图形模型。我已经看过这个,但我不确定如何使它符合我的要求。
另请注意:这必须扩展到 1-40 亿个盒子,每个盒子包含 1 到 5000 个事件。并且能够处理数以千计的事件