Как работать с историческими данными [ArangoDB] - PullRequest
0 голосов
/ 17 апреля 2019

Можете ли вы объяснить, как работать с историческими данными в 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» в новый класс «NotveryBest A Class». В 2018 году он учился еще лучше, и его родители решили перевести его в другую школу, где он мог развивать свои таланты. Он был переведен из "NotveryBestSchool" в новую школу "BestSchool" и класс "Best B Class".

Успение : Правильно ли я понимаю, чтобы отслеживать движение Барта между классами и школами, я должен добавить даты к краю? Основными полями в этих краях должны быть StartDates и EndDates? А может, его движения мне нужно хранить в параметрах Барта? И третий вариант - сделать отдельный сборник «История» и хранить там все.

Какой вариант выбрать?

1 Ответ

0 голосов
/ 25 апреля 2019

Итак, вот как я это вижу:

  • Быстро и грязно: поместите все в коллекцию истории. Это легко сделать, и вы можете поместить GUI поверх этой таблицы в кратчайшие сроки. Тем не менее, попытка сделать анализ этой таблицы в будущем будет грязной, потому что множественные объединения будут задействованы для получения полезных данных, основанных на времени. Кроме того, если у вас много учеников, эта таблица может немного вырасти.

  • Ориентация на учащегося: хранение информации в объекте ученика в качестве свойства будет работать хорошо, если у нас много учеников, и мы обычно получаем историческую информацию о ученике на каждого учащегося большую часть времени. Выполнение анализа совокупного числа учащихся с целью выявления закономерностей будет немного сложным, поскольку нам потребуется получить данные от отдельных учащихся, прежде чем мы сможем их проанализировать.

  • Добавление дат к краям: для первоначальной настройки требуется немного больше усилий, но это наиболее гибкий способ хранения данных. Кроме того, вы можете добавить дополнительную информацию, например, причину перевода. Эта настройка позволит вам сделать большинство анализов по шаблонам перевода студентов или времени их перевода и т. Д. *

В конце концов, все зависит от того, что вы строите, но я склоняюсь к третьему варианту, если у меня нет особых причин не делать этого таким образом.

...