API за създаване на графики на ArangoDB

Може ли някой да ми каже защо колекцията edge в HTTP API взема списък от from и tos?

JSON за създаване на нова графика е така:

{ 
  "name" : "myGraph", 
  "edgeDefinitions" : [ 
    { 
      "collection" : "edges", 
      "from" : [ 
        "startVertices" 
      ], 
      "to" : [ 
        "endVertices" 
      ] 
    } 
  ] 
}

Това ме кара да вярвам, че системата може да има множество edgeDefinitions и че всяка edgeDefinition може да има множество записи от и към. Не разбирам множеството от и до на дефиниция. Получавам множество дефиниции на ръбове.

Ето документацията: ArangoDB Graph Docs


person Virmundi    schedule 20.04.2015    source източник


Отговори (1)


Графика в 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