如何使用历史数据[ArangoDB]

时间:2019-04-17 08:34:00

标签: arangodb historical-db

您能解释一下如何在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年Bart的学习非常好。在年底,他从“ NotveryBest B类”转到了新的“ NotveryBest A类”。 在2018年,他学习得更好了,他的父母决定将他转到另一所学校,在那里他可以发展自己的才能。他从“ NotveryBestSchool”转到新的学校“ BestSchool”和“ Best B Class”班。

假设: 我是否正确理解,为了跟踪Bart在班级和学校之间的流动,我必须在边缘添加日期?此边缘中的主要字段应为StartDates和EndDates? 还是我需要将其动作存储在Bart的参数中?第三个选项-制作一个单独的“历史记录”集合,并将所有内容存储在那里。

选择哪个选项?

1 个答案:

答案 0 :(得分:0)

这就是我的看待方式:

  • 快速又肮脏:将所有内容都放入历史记录集合中。这很容易做到,您可以立即将GUI放在此表的顶部。但是,将来尝试对该表进行分析将很麻烦,因为涉及多个联接以获取可用的基于时间的数据。另外,如果您有很多学生,这张桌子可能会长很多。

  • 以学生为中心:如果我们有很多学生,则将信息作为属性存储在学生对象中会很好用,并且通常在大多数情况下,我们会根据每个学生获取历史信息。对聚集的学生身体进行分析以找到模式会有些复杂,因为我们需要先从各个学生那里获取数据,然后才能对其进行分析。

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

最后,这完全取决于您要构建的内容,但是除非有特殊原因,否则我倾向于使用第三个选项。