2010-05-01 2 views
112

Я ищу базу данных для сопряжения с приложением node.js. Я предполагаю, что json/nosql db предпочтительнее реляционной БД [я могу обойтись без несоответствия импеданса json/sql]. Я рассматриваю:База данных node.js

  • CouchDB
  • MongoDB
  • Redis

Кто-нибудь есть какие-либо мнения/военные истории вновь compatiability/развертыванию из вышеперечисленного с Node.js? Любые четкие фавориты?

+2

Я думаю, было бы полезно ответить на вопрос, если будут упомянуты даже более широкие требования. У каждой БД есть свои плюсы, минусы и специальность. Дайте нам знать спецификации! –

ответ

18

Redis - популярный выбор. Зачем вам нужен драйвер базы данных, который не блокируется.

Базы данных, которые вы указали, очень разные. Redis берет на себя идею хранения ключей и работает с ним, добавляя различные типы данных и способы запроса данных. Люди часто отмечают, что redis также очень хорошо масштабируется; что у него очень низкие накладные расходы, несмотря на способность выполнять.

Вот список доступных модулей базы данных: http://wiki.github.com/ry/node/modules#database

+0

Да, Redis отлично, но, похоже, мы можем хранить двоичные данные, но не можем получить это! По крайней мере, я не мог найти команду Redis для двоичных данных. – AppleGrew

+0

Действительно? Я использовал для хранения двоичных данных (используя класс буфера Node), и он работал нормально. Какая версия Redis/Node? – DanielS

+12

По умолчанию node_redis вернет строки JavaScript для всех команд. Чтобы получить буферы вместо этого, создайте клиент с createClient (порт, хост, {return_buffers: true}); –

25

Хотя ваш выбор очень многое зависит от особенностей вы собираетесь, я действительно ценю CouchDB для своей родной среде JavaScript. Как данные, так и представления написаны на JavaScript, поэтому, по моему мнению, он очень хорошо подходит для node.js.

Есть также разные client libraries, некоторые из них довольно низкого уровня, другие действительно очень абстрактные.

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

79

Я разработчик драйвера mongodb для node.js. Я использую mongodb для своих собственных проектов и очень доволен производительностью mongodb.

Mongodb driver for node.js

(Shameless вилка) Не стесняйтесь задавать любые вопросы водителя на

Google group for the mongodb driver

или здесь на Stackoverflow

Веселитесь с Node.js. Я очень люблю платформу: D

+1

также посмотрите на mongoose, который является довольно хорошим ORM, который построен поверх/использует драйвер mongodb для node.js – taxilian

+2

Мы используем Node.js + MongoDB в течение некоторого времени, и это идет здорово. И полное удовольствие для @christkv, водитель прочный и не подведет вас.Мы с легкостью развернули node.js/express.js + mongodb на EC2. Кроме того, обратите внимание, что мы не используем Mongoose. Говоря о проблемах (предполагая, что вы уже хорошо разбираетесь в узле), вы должны хорошо относиться к монгольскому способу делать вещи (запросы и агрегации) для любого серьезного приложения или разработки службы. Изучение того, как Монго отличается от других БД, было бы действительно в первую очередь, если вы все еще находитесь на этапах оценки. –

+0

от того, что я понимаю, некоторые действительно крутые функции идут по линии, чтобы ускорить агрегацию в mongodb. Одна из них - собственные функции агрегации. http://www.slideshare.net/cwestin63/mongodb-aggregation-mongosf-may-2011 , а также возможный переход на v8 вместо spidermonkey для механизма javascript, который позволит каждой команде уменьшить карту для запуска в это собственный поток (bye bye bye singlethreaded map-reduce) – christkv

8

Возможно, вы захотите проверить Persistence, систему высокого уровня/базу данных для node.js.

из thechangelog.com:

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

Поддерживаемые базы данных включают в себя:

  • PostgreSQL - уровне предприятия реляционная база данных. Драйвер реализован в чистом JavaScript, а обменивается данными через TCP, используя проводной протокол PostgreSQL .
  • Sqlite3 - Простая, быстрая, серверная реляционная база данных . Этот драйвер является оберткой вокруг командной строки sqlite3 . Для этого требуется, чтобы sqlite3 находился в пути . Сообщение чрезвычайно быстрое, но типы не очень точный. Есть только строки и nulls возвращено.
  • MongoDB - A масштабируемый, высокопроизводительный, открытый источник, без схемы, документ . Этот драйвер также реализует проводной протокол в JavaScript и , связанный с сервером через TCP.
  • JSON-DB - базовая система без схемы, ориентированная на документ база данных, в которой используются простые плоские файлы , содержащие объекты JSON. У этого нет никаких требований вообще, кроме узла, и файловой системы . Производительность должна быть определена после ее внедрения полностью.
+13

Стойкость не обновлялась с марта 2010 года и находится на релизе 0.0.4, поэтому кажется, что она, возможно, была оставлена. – lacker

15

Мне очень нравится CouchDB. Это немного кривая обучения, но взгляды действительно мощные, когда вы понимаете, как их использовать. Существует модуль под названием cradle on github и npm, с которым очень легко работать. Я не смог проверить, насколько быстро он работает, но он очень гибкий (вы можете получить доступ к своим данным в браузере, если хотите).

Основная проблема заключается в том, какой дизайн базы данных имеет смысл для вашего приложения. У вас есть данные, которые в основном имеют ключевое значение в природе? Если это так, используйте Redis. У вас есть данные, где не все документы обязательно имеют одинаковые поля? Если это так, используйте базу данных NoSQL, такую ​​как CouchDB.

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

Подумайте о своем прецеденте. Скорее всего, вы захотите сделать полнотекстовый поиск, просто получить данные по ключу или получить диапазоны документов, имеющих похожие атрибуты?

3

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

Вы анализируете каналы твиттера или другие данные большого объема для шаблонов, но не нуждаетесь в транзакционной поддержке? Тогда выберите что-то очень быстро.

Вы просто хотите сохранить некоторую действительно базовую информацию в нескольких таблицах и ее не в настоящее время не «ориентированное на предприятие» приложение?Затем выберите что-нибудь классное, чтобы учиться.

Возможно, вы собираетесь хранить данные, которые действительно важны для клиента, надежные, должны быть транзакционными и иметь живую репликацию на удаленный хостинг, и т. Д. Тогда, возможно, посмотрите на что-то вроде postgresql. Это тоже не отразится, но драйвер node.js работает очень хорошо, и если вы не смертельно опасаетесь sql, он получает то, что вы хотите/выходите довольно легко.

Что касается моего собственного мнения, я думаю, что переход с более новым стекем, таким как node.js (против традиционных фреймворков в php/java), добавляет достаточно «новой» сложности, что нельзя добавлять дополнительные слои одновременно. Это хорошая статья, которая обсуждает, что:

http://nodeguide.com/convincing_the_boss.html

1

загрязнен еще один плоский-файл хранилища ключ-значение. Как следует из названия, это быстрое и грязное, но эффективное решение для простых случаев. Я не автор :)

2

Я буду говорить от моего опыта: CouchDB приходит с определенной кривой обучения, в то время как M ongoDB Мне было очень легко учиться и настраивать. Я никогда не использовал redis. Я предлагаю MongoDB - но это, возможно, бесстыдный фанатизм - у меня нет цифр, хе-хе, только утверждения о простоте использования.

0

Я нашел CouchDB очень прост в освоении. В Интернете есть много электронных книг, которые научат вас использовать CouchDB с Node.js.

Я нашел this book очень полезно для изучения CouchDB.

Для использования CouchDB с Node.js, я использую модуль NANO.

CouchDB может быть размещен на Iriscouch или Cloudant.

 Смежные вопросы

  • Нет связанных вопросов^_^