К сожалению, ваши основные требования уже сегодня расширяют общее представление о графиках - даже в академических кругах.Ни одна из перечисленных чистых графовых баз данных не сможет удовлетворить все ваши потребности.Алгоритмы распределенных графов, которые знают о больших распределенных, но взаимосвязанных графах, все еще остаются большой исследовательской проблемой.Поэтому для вашего приложения лучше всего найти хорошо подходящую базу данных графов, стек обработки графиков или RDF-Store и самостоятельно реализовать недостающие части.Если ваше приложение в основном представляет собой онлайновую обработку транзакционных графов (OLTP) (интенсивное чтение / запись) с акцентом на вершины, и вы можете на мгновение отказаться от распределенных алгоритмов, используйте один из них:
- Neo4j
- OrientDB
- DEX
- HyperGraphDB
- InfiniteGraph
- InfoGrid
- Microsoft Horton
Когда это больше онлайн-аналитическая обработка (OLAP) (в основном читаемая), все еще с акцентом на вершины и распределение действительно имеет значение, тогда:
- Apache Hama (проект ранней стадии)
- Microsoft Trinity (исследовательский проект)
- Золотой шар (хорошо, но только на Java)
- Сигнал / сбор (http://www.ifi.uzh.ch/ddis/research/sc, но исследовательский проект)
Или больше внимания уделяется краям, логическим рассуждениям / сопоставлению с образцом, и вам нужно или лучше жить с распределением на уровне ребер, как в семантической паутине, а затем использовать один из этих RDF- / Triple- / Quadstores:
- AllegroGraph (ладно, это гибрид магазина graphdb / rdf;)
- Йена
- Кунжут
- Stardog
- Виртуоз
- ...и много других хранилищ RDF
Хорошей отправной точкой могут быть DEX или Neo4j: если вы ищете хорошее и действительно быстрое ядро graphdb для C ++, то лучше всего подойдет DEX, но вам придется реализоватьмного сетевого и дистрибутивного материала самостоятельно.Neo4j имеет большое распространение и отказоустойчивость, но на данный момент больше на уровне разделения вершин, и его ядро - Java.Для идей и вдохновения для реализации алгоритмов распределенных графов, возможно, взгляните на Golden Orb и Signal / Collect.Альтернативный подход может начинаться с AllegroGraph или Stardog.Особенно AllegroGraph может быть немного хитрым в начале, пока вы не привыкнете к их образу мышления.Stardog еще молод и Java, но быстр и уже достаточно зрел.