Граф в ArangoDB может использоваться для хранения как однородных, так и разнородных отношений. Если все отношения однородны и хранятся в одном наборе ребер, достаточно одного определения ребер.
Определение ребра содержит имя коллекции ребер, в которой хранятся отношения (атрибут collection
), а также имена коллекций вершин, которым разрешено хранить отношения в коллекции ребер (атрибуты from
и to
).
В следующем примере определяется граф с одним определением ребра, причем соединения разрешены только между коллекциями вершин users
и users
. Отношения хранятся в коллекции ребер с именем knows
:
"edgeDefinitions" : [
{
"collection" : "knows",
"from" : [
"users"
],
"to" : [
"users"
]
}
]
Можно объявить несколько определений ребер для хранения различных типов отношений в одном графе с несколькими коллекциями ребер, например:
"edgeDefinitions" : [
{
"collection" : "knows",
"from" : [
"users"
],
"to" : [
"users"
]
},
{
"collection" : "buys",
"from" : [
"users"
],
"to" : [
"products"
]
}
]
Обратите внимание, что здесь также можно было бы использовать одно определение ребра и хранить все отношения в единой коллекции ребер (теперь называемой connections
). Обратите внимание, что все еще существуют разные коллекции вершин (users
и products
) и некоторые ограничения на то, как они могут быть связаны:
"edgeDefinitions" : [
{
"collection" : "connections",
"from" : [
"users"
],
"to" : [
"users",
"products"
]
}
]
person
stj
schedule
21.04.2015