Мультимодельная база данных против нескольких отдельных баз данных?

Я работаю над приложением, которому требуются функции, предлагаемые как графической базой данных (для хранения необработанных данных), так и базой данных документов (извлеченные отчеты из необработанных данных). Я планировал использовать neo4j и mongodb. У меня есть вторые мысли о и смотрю на orientDB. лучше ли иметь одну многомодельную базу данных, чем две отдельные базы данных? Причиной, по которой я склонялся к neo4j, является его собственное хранилище графов, которое может пригодиться для размещения памяти для больших графов. OrientDB не хранит график изначально. или это?

2 ответа

Решение

OrientDB хранит график изначально. Его движок на 100% состоит из графической базы данных, такой как Neo4j. На самом деле OrientDB и Neo4j - единственные графовые базы данных с безиндексной смежностью. Некоторая другая база данных графиков действует как слой поверх существующей модели (СУБД, хранилища столбцов или документов).

Так что с Neo4j вы ничего не можете сделать, как с OrientDB. Но OrientDB позволяет моделировать более сложные данные, как это делает СУБД Document (MongoDB). Например, каждая вершина и ребро в OrientDB является документом (json), поэтому вы можете хранить в вершинах и ребрах сложные типы, такие как встроенные свойства, список, наборы, дата, десятичное число и т. Д.

Не будь ослеплен терминологией. "Безиндексная смежность" - это термин, который просто означает, что вершины графа хранятся "с" их ребрами. Каждая база данных делает это немного по-своему. Neo4J сохраняет их на диске в связанном списке. Если они у вас в памяти, и их не так много, они быстрые. Если вам нужно нажать их на диске, то вам может понадобиться индекс. Titan хранит их в виде столбцов в базе данных с широкими столбцами, такой как Cassandra. Если они в памяти, они быстрые. Если вам нужно нажать на них на диске, запросы диапазона базовой базы данных ускоряют их массовую загрузку, а дополнительная индексация может снизить стоимость поиска больших списков ребер.

Это обсуждение довольно ценно: как Титан достигает постоянного поиска по времени, используя HBase / Cassandra?

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

Другие вопросы по тегам