Ищете зрелую, масштабируемую базу данных GraphDB с привязкой к .NET или C ++
-
28-10-2019 - |
Вопрос
Мой основные требования из базы данных GraphDB:
- Зрелый (готовый к производству)
- Родной .Привязка к сети или языку C ++
- Горизонтальная масштабируемость:и то , и другое
- Автоматическое резервирование и сегментирование данных
- Алгоритмы распределенного графа / выполнение запросов
В настоящее время я дисквалифицировал следующих:
- Бесконечный график:нет привязки к языку C ++ / .NET
- HyperGraphDB:нет привязки к языку C ++ / .NET
- Microsoft Тринити:Не зрелый
- Neo4j:не распространяется
Я не уверен в масштабируемости следующего:
- Разреженность DEX
- Franz Inc.Аллегрография
- Соны GraphDB
Я нашел доступную информацию о возможностях горизонтальной масштабируемости довольно общей.Я думаю, для этого есть веские причины.
Будем признательны за любую информацию.
Решение
К сожалению, ваши базовые требования уже расширяют сегодняшнее общее понимание графиков - даже в академических кругах.Ни одна из перечисленных баз данных pure graph не сможет удовлетворить все ваши потребности.Алгоритмы распределенных графов, которые знают о больших распределенных, но взаимосвязанных графах, по-прежнему являются большой исследовательской проблемой.Поэтому для вашего приложения, возможно, было бы лучше найти хорошо подходящую базу данных графиков, стек обработки графиков или RDF-хранилище и реализовать недостающие части самостоятельно.Если ваше приложение в основном использует онлайн-обработку графов транзакций (OLTP) (интенсивное чтение / запись) с акцентом на вершины, и вы можете на мгновение отказаться от распределенных алгоритмов, тогда используйте один из них:
- Neo4j
- OrientDB
- ДЕКС
- HyperGraphDB
- Бесконечный график
- Информационная сетка
- Microsoft Хортон
Когда это больше интерактивная аналитическая обработка (OLAP) (в основном для чтения), по-прежнему с акцентом на вершины и распределение, это действительно имеет значение :
- Apache Hama (проект на ранней стадии)
- Microsoft Trinity (исследовательский проект)
- Золотой шар (хороший, но только для Java)
- Подавать сигналы / собирать (http://www.ifi.uzh.ch/ddis/research/sc , но это исследовательский проект)
Или он больше фокусируется на ребрах, логических рассуждениях / сопоставлении шаблонов, и вам нужно или лучше работать с дистрибутивом на уровне ребер, как в Semantic Web, а затем использовать один из этих RDF-/ Triple- / Quadstores:
- AllegroGraph (хорошо, это гибрид хранилища graphdb / rdf ;)
- Jena
- Кунжут
- Звездный Пес
- Виртуоз
- ... и многие другие магазины RDF
Хорошими отправными точками могут быть DEX или Neo4j:Если вы ищете хорошее и действительно быстрое ядро graphdb для C ++, возможно, лучше всего подойдет DEX, но вам придется самостоятельно внедрять множество сетевых и дистрибутивных материалов.Neo4j обладает высоким уровнем дистрибутивности и отказоустойчивости, но на данный момент больше на уровне сегментирования вершин, и его ядром является Java.Для получения идей и вдохновения по реализации алгоритмов распределенного графирования, возможно, взгляните на Golden Orb и Signal / Collect.Альтернативным подходом может быть использование AllegroGraph или Stardog.Особенно AllegroGraph может быть немного сложным поначалу, пока вы не привыкнете к их образу мышления.Стардог все еще молод и подвижен, но быстр и уже достаточно зрелый.