Подтвердить что ты не робот

Методы проектирования базы данных графов

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

Примеры вопросов (из многих возникающих вопросов):

  • Это хорошая идея создать пользователей Top- Node, имеющих отношения ( "существуют" ) в любом пользовательском Node в базе данных?
  • Хорошо ли строить в управлении версиями (т.е. создавать отношения (что-то вроде "следует" )), указывая на обновленные версии документа/сообщения таким образом, что возврат этих отношений означает просмотр изменений, которые прошел документ.
  • и т.д...

Итак, нужна ли нам кулинарная книга по дизайну баз данных?

4b9b3361

Ответ 1

Группа пользователей Gremlin (http://tinkerpop.com/) и группа пользователей Neo4j (https://groups.google.com/forum/?fromgroups#!forum/neo4j) являются хорошими местами для обсуждения моделирования диаграмм на основе графов.

Вы можете создавать суперноды, такие как "Пользователи", но может быть лучше и эффективнее использовать индексы и создавать индексную запись для каждого пользователя с ключом = element_type, value = "user", id = user_node_id.

A "следует" отношение часто используется для людей/друзей, например, на Facebook и Twitter, поэтому я не буду использовать это для управления версиями. Вы можете создать систему управления версиями в Neo4j, которая отметит каждую запись и использует алгоритм с последними комментариями, и есть другие системы баз данных, такие как Datomic, которые имеют встроенный интерфейс.

См. модель Lightbulb (https://github.com/espeed/lightbulb/blob/master/lightbulb/model.py) для примера модели блога в Bulbs/Python (http://bulbflow.com).