2013-08-28 5 views
22

Существуют триплестры (семантические базы данных), и существуют базы данных общего назначения.В чем разница между триплесторами и базами данных графов?

Оба основаны на аналогичных концепциях связывания одного «элемента» с другим через отношения. Triplestores поддерживают RDF и запрашиваются SPARQL, но такие надстройки могут быть (и реализованы) реализованы на основе баз данных общего назначения.

В чем принципиальная разница, которая заставит вас предпочесть семантический db/triplestore для базы данных общего назначения, например neo4j?

ответ

6

Мои 2 цента.

Neo4j относится к категории График свойств. Они поддерживают направленные отношения, и каждое отношение имеет только два узла; начальный узел и конечный узел. Узлы и отношения могут хранить произвольные данные в виде пар ключ-значение. Однако они не могут поддерживать трехсторонние отношения. т. е. вы не можете иметь одно ребро, соединяющее более двух узлов i.e a kind of hyperdege. Однако вы можете эмулировать 3-арные отношения в графах свойств, создавая узлы объединения. You can see how to implement this in neo4j here.

Triplestores имеют стандартизованный язык запросов в виде SPARQL, но пока не существует стандарта для запросов к другим базам данных графа. RDF является стандартом для импорта/экспорта из трипестреров.

11

Триплетные магазины являются Графические базы данных. RDF - График. Конечно, тройные магазины, как правило, не хранят информацию внутри, как график; это не оптимально для ответа на запросы, но они все еще являются графовыми базами данных.

Вы бы предпочли их что-то вроде neo4j, если вы заинтересованы в экосистеме, основанной на стандартах W3C. Делает взаимодействие с другими системами на базе RDF тривиальными, и он забирает все и перемещается в другой трехместный магазин, совершенно безболезненный.

10

Для начала, все структуры данных могут проецироваться более или менее болезненно на любой базовый механизм хранения (или даже на вашу файловую систему и текстовые файлы). Причина выбора определенной модели и хранение данных бэкэнда является IMHO:

  • ваших разработок и моделирования предпочтения
  • вашей ожидаемая производительности выполнения для вставки, хранения и запросы к вашей модели.

Как упоминалось ранее, оба RDBMSes и TripleStores имеют тенденцию быть полезными во время выполнения в «мелкой» обходе дизъюнктивно или SPARQL обходов, и делать много работы в тайниках или подготовленные взгляды и т.д. График Базы данных (однозначно Neo4j) поставить на самом деле, вплоть до уровня хранилища, и выполняют операцию починки указателя (с несколькими оптимизациями) на уровне записи узлов. Таким образом, при перемещении графика вам не нужно касаться больше, чем ваш текущий подграф, вплоть до уровня хранилища, таким образом, он может перемещать части данных, не касаясь всего графика, что приводит к постоянной производительности для ряда интересных сценариев ,