ArangoDB производительность нескольких краев коллекции
Я создаю коллекцию краев ArangoDB, которая состоит из множества "типов". По типу представьте таксономию видов животных.
Я буду строить график, который соединяет все это. Пример: родитель / потомок древних гомо видов: Homo habilis-> Homo floresiensis-> Homo erectus-> Homo sapiens
Помещение их разных типов в разные коллекции будет только по поверхностным организационным причинам. Есть небольшая вероятность того, что это будет полезно в будущем для функций, о которых я еще не думал.
Мои конкретные вопросы: строят ли графики в ArangoDB, который использует несколько коллекций, снижение производительности? Будет ли использование одной большой коллекции более эффективным для графов?
Отвечая на первый комментарий: если бы я разбил это на различные коллекции ребер, это было бы 4 коллекции с около 300000 строк в каждой. Типа может быть несколько родителей и детей. Типы запросов будут кратчайшим путем и любой связью между ними. Если это имеет смысл? 6 градусов Кевина Бэкона.
РЕДАКТИРОВАТЬ: Пожалуйста, смотрите комментарии для некоторых вопросов и ответов. Почти каждый запрос будет охватывать несколько типов. Многие запросы будут иметь глубину 5-7 вершин. Этот проект будет почти исключительно ЧТЕНИЕ... Я не беспокоюсь о скорости записи вообще.
РЕДАКТИРОВАТЬ 2: я буду использовать один экземпляр или распределенный кластер? Честно говоря, тоже! Что бы ни ускорило, читает. Кому ты рассказываешь.
2 ответа
При настройке одного сервера использование нескольких коллекций не имеет никаких штрафов. Особенно, если ваш запрос не охватывает все граничные коллекции, будет быстрее выполнять поиск в небольших коллекциях.
Насколько быстрее / медленнее это будет зависеть от механизма хранения (откачка файлов / мм). Учитывая, что вы хотите добиться максимальной производительности чтения, mmfiles, скорее всего, будет быстрее.
У меня есть проект таксономии в ArangoDB, который кажется примерно эквивалентным с точки зрения количества записей данных, о которых вы сообщаете.
Этот объем данных не представляет никаких проблем с производительностью для ArangoDB. Я решил сосредоточиться на моделировании отношений, чтобы наилучшим образом представлять набор данных, и не пожалел об этом.
В вашем примере у меня, вероятно, будет одна коллекция для узлов видов. И начните с одной коллекции для коллекции кромок 'begats', чтобы охватить пути эволюции видов.
Если есть несколько школ мышления, несколько классификаций или другие структуры, которые описывают альтернативные пути между видами, то я бы посмотрел, как захватить каждую из них в отдельную коллекцию краев.
Например, если один путь таксономии достигается по форме челюсти, другой всегда использует таз, если у страны X есть другой метод, а другой основан на ДНК, может быть полезно выделить для каждого из них коллекцию ребер. Вы будете создавать альтернативные межсетевые сети, используя точно / в основном один и тот же набор узлов видов.
Видовая таксономия не является моей областью, и примеры, вероятно, ерунда. Но я бы посоветовал не упустить возможность структурировать данные наиболее полезным способом. Производительность, скорее всего, не будет проблемой.