如何使用历史数据 [ArangoDB]

How to work with historical data [ArangoDB]

您能解释一下如何在 ArangoDB 中处理历史数据吗?

比如我有5个合集:

1. School [Type = Documents] - I keep information about schools. I have 2 school:
- BestSchool
- NotveryBestSchool
2. Class [Type = Documents] - I keep information about class. I have 4 class:
- Best A Class
- Best B Class
- NotveryBest A Class
- NotveryBest B Class
3. Students [Type = Documents] - I keep information about Students:
- Timmi
- Lisa
- Kail
- Bart
4. ClassinSchool [Type = Edge] - I keep information about class in school, where "parents" = "school" and "child" = Class:
_From: School/BestSchool _To: Class/Best A Class
_From: School/BestSchool _To: Class/Best B Class
_From: School/NotveryBestSchool: Class/NotveryBest A Class
_From: School/NotveryBestSchool: Class/NotveryBest B Class
And, finally:
5. StudentsinClass [Type = Edge] -  I keep information about Students in Class, where "parents" = "Students" and "Child" = Class
_From: Students/Timmi _To: Class/Best A Class
_From: Students/Lisa _To: Class/Best B Class
_From: Students/Kail: Class/NotveryBest A Class
_From: Students/Bart: Class/NotveryBest B Class

情况就是这样。 2017年巴特学习很好。在年底,他从 "NotveryBest B Class" 转到了新的 class "NotveryBest A Class"。 2018 年,他的学习更加出色,parents 决定将他转到另一所学校,在那里他可以发挥自己的才能。他从 "NotveryBestSchool" 转到一所新学校 "BestSchool" 和 class "Best B Class"。

假设: 我是否理解正确,为了跟踪 Bart 在 classes 和学校之间的移动,我必须在边缘添加日期?这个边缘的主要字段应该是 StartDates 和 EndDates? 或者我需要将他的动作存储在 Bart 的参数中?第三个选项 - 制作一个单独的集合 "History" 并将所有内容存储在那里。

选择哪个选项?

所以这是我的看法:

  • 快速而肮脏:将所有内容放入历史集合中。这很容易做到,您可以立即在此 table 之上放置一个 GUI。但是,将来尝试对此 table 进行分析将会很麻烦,因为将涉及多个连接以获得可用的基于时间的数据。另外,如果你有很多学生,这个 table 可能会增长很多。

  • 以学生为中心:如果我们有很多学生,将学生对象中的信息存储为 属性 会很有效,而且我们通常以每个学生为基础检索历史信息的时间。对汇总的学生群体进行分析以找到模式会有点复杂,因为我们需要先从个别学生那里获取数据,然后才能对其进行分析。

  • 将日期添加到边缘:这在最初设置时需要花费更多精力,但这是存储数据的最灵活方式。另外,您可以添加其他信息,例如转移原因。此设置将允许您对学生转学模式或学生转学时间等进行最多的分析...

最后这一切都取决于你在建造什么,但我倾向于第三种选择,除非我有特定的理由不这样做。