Могу ли я иметь O (1000) вершин, соединяющихся с одной вершиной, и O (1000) свойств вне вершины для Cosmos DB и / или графических баз данных? - PullRequest
1 голос
/ 06 мая 2020

У меня есть график со следующим шаблоном:

- Workflow:

-- Step #1
--- Step execution #1
--- Step execution #2
    [...]
--- Step execution #n

-- Step #2
--- Step execution #1
--- Step execution #2
    [...]
--- Step execution #n

[...]

-- Step #m
--- Step execution #1
--- Step execution #2
    [...]
--- Step execution #n

У меня есть пара вопросов по дизайну:

  1. Сколько исполнительных документов может зависать от единственная вершина, не влияя на производительность? Например, на каждом «шаге» могут быть сотни «казней». Я использую два ребра для их соединения:'has_runs '(от шага → выполнение) и' Execution_step '(от выполнения → шаг).

    Являются ли базы данных графов (Cosmos DB или любая база данных графов), предназначенными для обработки тысячи вершин и ребер, связанных с одной вершиной?

  2. Каждое «выполнение» имеет (теоретически) неограниченные свойства, связанные с ним, но, вероятно, это 10 <<em> x <100 объектов. Это нормально? Созданы ли графические базы данных для поддержки такого большого числа свойств вершины? </p>

    Все демонстрации, которые я видел, имеют <10 общих свойств.

1 Ответ

4 голосов
/ 08 мая 2020

Уместно ли иметь столько исполнительных документов, свисающих с одной вершины? Например, на каждом «шаге» может быть 100 «выполнений».

Наличие 100 ребер из одной вершины не является нетипичным и звучит разумно. На практике вы можете легко найти себя с моделями, имеющими миллионы ребер, и погрузиться в проблему суперузлов, после чего вам нужно будет сделать некоторые конструктивные решения для таких вещей на основе ваших ожидаемых шаблонов запросов.

Каждое «выполнение» имеет (теоретически) неограниченное количество свойств, связанных с ним, но, вероятно, 10

Я не знаю ни одной системы графов, в которой были бы проблемы с сохранением 100 свойств. Конечно, есть предостережения для всех таких общих положений - несколько примеров:

  1. 100 отдельных простых примитивных свойств целых чисел и логических значений отличаются от 100-байтовых массивов, каждый из которых содержит 100 мегабайт данных.
  2. Сохранение 100 свойств подходит для большинства систем, но собираетесь ли вы индексировать все 100? В некоторых системах это может быть проблемой. Поскольку вы пометили свой вопрос с помощью «CosmosDB», я предлагаю, чтобы они не слишком беспокоились об этом, поскольку они автоматически индексируют все.
  3. Если какое-либо из этих 100 свойств мульти- properties вы можете поставить себя в положение для создания суперузла другого типа - толстой вершины (вершины с миллионами свойств).

Все это говорит, вообще говоря, ваша схема звучит разумно для любой графической системы.

...