ArangoDB - Модели данных и моделирование
В этой главе мы сосредоточимся на следующих темах -
- Взаимодействие с базой данных
- Модель данных
- Получение данных
ArangoDB поддерживает модель данных на основе документов, а также модель данных на основе графов. Давайте сначала опишем модель данных на основе документа.
Документы ArangoDB очень похожи на формат JSON. В документе содержится ноль или более атрибутов, и к каждому атрибуту прилагается значение. Значение может быть либо атомарного типа, например числа, логического или пустого, буквальной строки, либо составного типа данных, например встроенного документа / объекта или массива. Массивы или подобъекты могут состоять из этих типов данных, что означает, что один документ может представлять нетривиальные структуры данных.
Далее по иерархии документы организованы в коллекции, которые могут не содержать документов (теоретически) или содержать более одного документа. Можно сравнивать документы со строками, а коллекции с таблицами (здесь таблицы и строки относятся к таковым систем управления реляционными базами данных - RDBMS).
Но в РСУБД определение столбцов является необходимым условием для хранения записей в таблице, вызывая эти схемы определений. Однако в качестве новой функции ArangoDB не имеет схемы - нет никакой априорной причины указывать, какие атрибуты будет иметь документ.
И, в отличие от СУБД, каждый документ может быть структурирован совершенно иначе, чем другой документ. Эти документы можно сохранить вместе в одной коллекции. На практике у документов в коллекции могут существовать общие характеристики, однако система баз данных, то есть сама ArangoDB, не привязывает вас к определенной структуре данных.
Теперь попробуем разобраться в [graph data model], для которого требуются два типа коллекций: первая - это коллекции документов (на теоретико-групповом языке - коллекции вершин), вторая - это коллекции ребер. Между этими двумя типами есть небольшая разница. Коллекции Edge также хранят документы, но они характеризуются двумя уникальными атрибутами:_from а также _toдля создания отношений между документами. На практике документ (край чтения) связывает два документа (вершины чтения), оба хранятся в своих коллекциях. Эта архитектура основана на теоретико-графической концепции маркированного ориентированного графа, за исключением ребер, которые могут иметь не только метки, но и сами по себе могут быть полным JSON-подобным документом.
Для вычисления свежих данных, удаления документов или для работы с ними используются запросы, которые выбирают или фильтруют документы в соответствии с заданными критериями. Будучи простыми как «пример запроса» или сложными как «соединения», запросы кодируются на AQL - языке запросов ArangoDB.