2015-02-10 2 views
4

Есть одна вещь, которую я не получаю в ArangoDB:Edge Collection vs. Graph

В чем разница между реберной сетью и графиком? В каких случаях я должен выбрать, какой?

ответ

6

Графики в ArangoDB построены на основе документов и краев.

Пограничные коллекции имеют автоматические индексы на _from и _to, что позволяет эффективно извлекать любые подключенные документы. Поскольку данные все еще хранятся в обычных (документах и ​​краях) коллекциях, вы также можете использовать эти коллекции в неграфических запросах.

Графики добавляют некоторые функции (то есть методы запроса, обходы) поверх данных. Вы можете иметь несколько из них в ArangoDB. Подумайте, что «график» является средством группировки для частей или всех ваших данных и делает их доступными в запросах.

2

Это край:

{ 
    "_id": "edges/328701573688", 
    "_from": "nodes/150194180348", 
    "_to": "nodes/328668871224", 
    "_rev": "3680146597", 
    "_key": "328701573688", 
    "type": "includes" 
} 

Это документ:

{ 
    "_id": "nodes/328668871224", 
    "_rev": "3610088613", 
    "_key": "328668871224", 
    "name": "Gold-edged Gem", 
    "type": "species" 
} 

Как вы можете видеть, что нет никакой принципиальной разницы. Это оба документа. Коллекции краев полезны только тогда, когда вы используете Arango для его возможностей базы данных графа.

Как я понимаю, точка, указывающая тип коллекции на «край», говорит Аранго, что она должна гарантировать, что все хранящиеся там документы минимально имеют атрибуты _to и _from, чтобы документ мог служить своей функцией как соединитель между двумя другими документами.

Как только у вас есть коллекция документов, документы которой связаны связкой краевых документов в краевой коллекции ... теперь у вас есть график.

+0

Я не согласен с 'Edge collection полезны только для [...] graphs'. Есть функции AQL, чтобы, например, следовать за ребрами, но они работают напрямую с коллекциями, не требуя общего графика. Если вы хотите эффективно пересечь высокосвязный график и с определенным алгоритмом, необходим общий граф. Что использовать зависит от вашей структуры данных и использования. – CoDEmanX

+0

Я получал тот факт, что можно использовать Arango в качестве прямого хранилища документов, например MongoDB. Для людей, использующих его таким образом, краевые коллекции можно безопасно игнорировать. – mikewilliamson

+0

Edge коллекции тоже являются документами :) Разница только в том, что атрибуты '_to' и' _from' присутствуют и имеют на них индексы. – CoDEmanX