Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > neo4j vs postgresql


Автор: gelo86 23.11.2011, 19:51
Если откинуть аспект того, что чтото новое, что надо его изучять, что бы для нового проекта ви использовали бы neo4j или postgresql ? Проект например електронный магазин. Что лутще по быстродействию ?

Автор: Nofate 23.11.2011, 20:07
Исходить нужно из проекта, т.к. вы сравниваете 2 очень разные СУБД. PostgreSQL - традиционная реляционная СУБД с таблицами, SQL-запросами, хранимыми процедурами и т.п., в то время как Neo4j - NoSQL, ориентированная к тому же на хранение графов.

Поэтому для магазина, наверное, стоит ограничиться постгресом )

Автор: gelo86 23.11.2011, 20:19
Но ведь в магазине тоже графы.
- Каталоги -> Продукты -> Параметры 
- Пользователи -> Любимые Продукты
- Продукты -> Одновременно купленные продукты
и т.д.
Можно думаю найти и другие графы, но конечно же в RelationalDB ето все можно сделать. Но вот вопрос, если например Параметров около милиона, продуктов около 100.000, то в neo4j получение данных небудет быстрее чем традиционными join'ами ?


Автор: Ares4322 23.11.2011, 21:40
Я так понимаю, что в neo4j графы не из разных сущностей, а из одинаковых. Такие БД активно используются в соцсетях. Например, в виде графа пользователей. 
А отношение, про которое написали Вы, хорошо ложится на внешние ключи из РСУБД.
Чтобы принимать решение, какую технологию взять, Вы сначала определитесь с основными требованиями к ней.
Если это необходимо для электронного магазина, то  самым первым в списке важных вещей идет поддержка транзакций. Вы же все-таки с деньгами работать будете.
Далее идет производительность. Вряд ли у вас будет супер нагрузка сразу. Поэтому проще начать с РСУБД.
Ну и т.д.
NoSQL базы  - это хорошо. Но РСУБД стары как мир и потому стабильны. По ним куча доков, куча обвязок.
Ну короче, Вы поняли)

Автор: Nofate 24.11.2011, 10:58
Цитата(gelo86 @ 23.11.2011,  20:19)
Но вот вопрос, если например Параметров около милиона, продуктов около 100.000, то в neo4j получение данных небудет быстрее чем традиционными join'ами ?

Что-то у меня скепсис имеется относительно миллиона параметров в интернет-магазине )

А для сравнения производительности в конкретной ситуации всегда же можно синтетический тест организовать.

Автор: Skynin 24.11.2011, 15:35
Непонятно почему в качестве NoSQL базы рассматривается neo4j

Может что-то изменилось, но если не путаю (есть еще похожая, графо-ориентированная)
Как-то я его смотрел, он для специфических задач хорош. Но и расплата - внутри используется tuProlog, реализация Пролога.
Хотите с Прологом пободаться ради "магазина"? Зачем?

Есть: db4o, ObjectDB, java версия BerkleyDB. А на 99% уверен они быстрее будут чем neo4j

Но и, магазинов на реляционных БД понаписано немеряно. Задача - типичнейшая. Смысл использовать нетипичные БД?
Быстродействие? Да бросьте, вариантов тюнинга полно, но главное - у вас уже такие нагрузки? Или - "ожидаются в будущем"?
Если в будущем - то советую все же вначале выдать первую рабочую версию, а не пытаться сразу стать амазоном.

Автор: gazdovsky 14.3.2012, 01:13
Цитата(Skynin @ 24.11.2011,  15:35)
Но и расплата - внутри используется tuProlog, реализация Пролога


tuProlog не используется внутри нео, это отдельный проект, 
который использует нео как хранилище онтологий.

Добавлено через 1 минуту и 45 секунд
Мы используем нео в своем проекте, если интересно, велкам
https://docs.google.com/document/d/1DrlUT30L1qeRcyjTxGi3Zu5IPUpI4ia3Uu7YHoDYMGE/edit#

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)