Существует ли хранилище nosql, которое также позволяет устанавливать связи между хранимыми объектами?

StackOverflow https://stackoverflow.com/questions/1899843

Вопрос

Я ищу хранилища значений ключей nosql, которые также обеспечивают хранение/поддержание отношений между хранимыми объектами.Я знаю, что хранилище данных Google App Engine позволяет устанавливать отношения собственности и отсутствия собственности между объектами.Предлагает ли какой-нибудь популярный магазин nosql что-то подобное?

Несмотря на то, что большинство из них не имеют схемы, существуют ли методы для сопоставления отношений с хранилищем значений ключей?

Это было полезно?

Решение

Это относится к основным функциям графовые базы данных обеспечить поддержку отношений между сущностями.Обычно вы моделируете свои объекты как узлы, а отношения — как отношения/ребра на графике.В отличие от СУБД вам не нужно заранее определять отношения — просто добавляйте их в график по мере необходимости (без схемы).Я создал галерея моделирования домена приведя несколько примеров того, как это может выглядеть на практике.В примерах используется графическая база данных Neo4j, проект, в котором я участвую.А список рассылки Использование этого проекта оказалось очень полезным для решения вопросов графового моделирования.

Документоориентированная база данных Риак имеет поддержку связей между документами.

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

К сожалению, теперь я увидел, что в заголовке написано «хранилище nosql», а затем ваш фактический вопрос сужает его до «хранилища значений ключей nosql».Поскольку в хранилищах ключей/значений нет семантики для определения отношений между сущностями, я все равно опубликую свой ответ.

Другие советы

MongoDB — это база данных документов, а не хранилище ключей/значений.Однако он обеспечивает простую форму междокументные ссылки.Они работают более или менее как внешние ключи SQL, которые автоматически обнуляются при удалении объекта, на который ссылаются.

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

Отношения в Google App Engine — это всего лишь ключи к сущностям, ссылки на которые автоматически разыгрываются при доступе к ним в коде.И являются значениями только при использовании для фильтрации.Это функция API БД, а не что-то явное, поэтому доступ к ReferenceProperty будет просто выполнять запрос к ссылочной модели, чтобы получить доступ к объекту.

Если вы посмотрите на что-то вроде MongoDB, отношения хранятся внутри объекта (насколько я помню), но их также можно хранить так, как вы хотите, в том смысле, что вы создадите API, который будет искать в объединенной таблице ваш элемент в отношения аналогичны тем, с кем работает App Engine.

Павел.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top