Что может СУБД сделать, что Neo4j (и графовые базы данных) не могут? - PullRequest
11 голосов
/ 15 января 2012

«База данных графиков - преобразует -> СУБД»

Сайт Neo4j, похоже, подразумевает, что все, что вы можете делать в СУБД, вы можете делать в Neo4j.

Прежде чем выбрать Neo4j в качестве замены для СУБД, мне нужно ответить на некоторые сомнения.


Меня интересует Neo4j для

  • Возможность быстро изменять данные "схемы"
  • способность выражать сущности естественным образом вместо отношений и нормализаций
  • ... что приводит к очень выразительному коду (лучше, чем ORM)

Это решение NoSQL, которое меня интересует из-за его возможностей, а не высокой производительности.


Вопрос: Представляет ли Neo4j какие-либо проблемы, которые могут сделать его непригодным в качестве замены СУБД?

Я особенно обеспокоен этим:

  • есть ли функция БД , которую я должен реализовать в логике приложения ? (Например, для нескольких БД NoSQL вы должны реализовать соединения на уровне приложений)
  • Являются ли поля " проиндексированными ", чтобы поиск был быстрее, чем O (n)?
  • Как мне справиться с горячим резервным копированием и репликацией?
  • есть какие-либо проблемы с "изменением" схемы или разрешением сущностям с разными версиями схемы жить вместе?

Ответы [ 3 ]

2 голосов
/ 23 октября 2014

Это чрезвычайно обширная тема, охватывающая все: от моделирования и внедрения до ИТ и поддержки. Здесь невозможно действительно ответить на все эти вопросы, особенно без подробностей о вашей ситуации. Тем не менее, вы, кажется, изучаете варианты и пути. Итак, я просто передам некоторую общую пищу для размышлений как человеку, который внедрил несколько систем.

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

Мне нравится думать в терминах 3 фундаментальных моделей: реляционная, документная и графическая. В зависимости от вашей проблемной области один или несколько из них - правильный ответ. Я не стал бы делать финансовые транзакции ни в чем другом, кроме реляционного (на основе SQL). Если вы создаете CMS, то лучше всего использовать Document DB. Если мое приложение моделирует сети (дороги, люди, соединения, сети и т. Д.), Я использую Neo4J.

Что касается качества продукции, в каждой категории есть солидные варианты. Реляционный имеет кучу. Для баз данных документов я бы выбрал MongoDB или систему JCR более высокого уровня, например Apache Jackrabbit. Что касается графиков, у меня есть опыт работы только с Neo4j, и он для меня очень хорош.

Что бы вы ни делали, не поддавайтесь на обман, что "У нас есть единственная технология, которая решает все ваши проблемы". Его там нет, и оно сужает ваше мышление.

1 голос
/ 02 января 2015

Я убежден, что Neo4j сейчас является хорошей заменой для реляционных баз данных.

  • Это соответствует кислоте
  • Хотя в версии сообщества отсутствуют некоторые функции, такие как горячее резервное копирование, в корпоративной версии
  • Вы можете получить поддержку для него
  • На первый взгляд (и в новых выпусках, где вам не нужно предложение START) его язык запросов CYPHER может делать практически все, что SQL может

но

  • Сложнее найти разработчика CYPHER, чем SQL
  • и у него нет эквивалентного оптимизатора: для написания запроса важнее, чем с SQL,

Хотя он поддерживает репликацию и Neo явно рекламирует его как продукт с большими данными, я не могу подтвердить, что он достаточно масштабируемый, и я не изучал аспекты безопасности.

В последних выпусках (моложе вопроса, приведенного выше) можно определять индексы для меток, которые работают как индексы для таблиц в реляционной БД, что позволяет выполнять O (log (n)) поиск.

(fyi: Neo4j не имеет таблиц, но каждый узел (~ = строка) может иметь разные метки, сравнимые с метками gmail. Это более гибкий подход: вам не нужно выбирать, ставить ли вы автомобили и велосипеды в одну для стол для транспортных средств или нет: у велосипеда будет и: транспортное средство, и: велосипедная метка.)

Чтобы ответить на оригинальный вопрос: Neo4j почти не поддерживает принудительное применение схемы . Neo дает советы по внедрению автоматических тестов согласованности в вашей базе данных, которые вы запускаете в своем экземпляре приемочного теста в рамках цикла выпуска.

0 голосов
/ 29 июля 2014

Использование корпоративной базы данных, такой как oracle, предоставит вам множество возможностей, которые могут быть или не быть частью neo. К ним относятся:

  • КИСЛОТНЫЕ транзакции
  • Высокая доступность / резервное копирование / режим ожидания
  • возможность использовать sql для получения данных наиболее эффективным способом с использованием оптимизатора на основе затрат - БД определяет лучший способ извлечения данных на основе вашей последней статистики
  • Масштабируемость, разбиение
  • поддержка
  • безопасность

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

...