Я ищу базу данных для соединения с приложением node.js. Я предполагаю, что json/nosql db предпочтительнее реляционной БД [я могу обойтись без несоответствия импеданса json/sql]. Я рассматриваю:
У кого-нибудь есть какие-либо взгляды/военные истории, совместимость/развертывание выше с помощью node.js? Любые четкие фавориты?
Я разработчик драйвера mongodb для node.js. Я использую mongodb для своих собственных проектов и очень доволен работой mongodb.
(Бесстыдный плагин) Не стесняйтесь задавать любые вопросы о драйвере в
Группа Google для драйвера mongodb
или здесь, в Stackoverflow
Удачи с node.js. Я абсолютно люблю платформу: D
Хотя ваш выбор очень сильно зависит от функций, которые вы собираетесь использовать, я действительно ценю CouchDB для его родной среды JavaScript. И данные, и представления написаны на JavaScript, поэтому он очень хорошо подходит для node.js, на мой взгляд.
Существуют также различные клиентские библиотеки, некоторые из них довольно низки, другие действительно очень абстрактны.
Но, как я уже сказал, вы также должны подумать о возможностях, которые вам нужны для вашей базы данных.
Redis - популярный выбор. Зачем вам нужен драйвер базы данных, который не блокируется.
Все перечисленные вами базы данных очень разные. Redis берет на себя идею хранения ключей и работает с ним, добавляя различные типы данных и способы запроса данных. Люди часто отмечают, что redis также очень хорошо масштабируется; что означает, что у него очень низкие накладные расходы, несмотря на способность выполнять.
Ниже приведен список доступных модулей базы данных: http://wiki.github.com/ry/node/modules#database
Мне очень нравится CouchDB. Это немного кривая обучения, но представления действительно мощные, как только вы понимаете, как их использовать. Существует модуль под названием cradle on github и npm, с которым очень легко работать. Я не смог проверить, насколько быстро он работает, но он очень гибкий (вы можете получить доступ к своим данным в браузере, если хотите).
Основная проблема заключается в том, какой дизайн базы данных имеет смысл для вашего приложения. У вас есть данные, которые в основном имеют ключевое значение в природе? Если это так, используйте Redis. У вас есть данные, где не все документы обязательно имеют одинаковые поля? Если это так, используйте базу данных NoSQL, такую как CouchDB.
Следующая худшая вещь для использования базы данных блокировки - использование неправильной базы данных для ваших данных. CouchDB управляется Apache, поэтому вы знаете, что это хорошее качество, но использовать его не имеет смысла, если ваши данные будут иметь больше смысла в таблице SQL или в простом хранилище ключей.
Подумайте о своем случае использования. Скорее всего, вы захотите сделать полнотекстовый поиск, просто получить данные по ключу или получить диапазоны документов, имеющих похожие атрибуты?
Возможно, вы захотите проверить Persistence, систему высокого уровня/систему базы данных для node.js.
из thechangelog.com:
Стойкость - это проект, позволяющий API высокого уровня для хранения данных между процессами. Цель состоит в том, чтобы поддерживающие бэкэнды, которые просты в использовании, мощный, гибкий или все выше, если это возможно.
Поддерживаемые базы данных:
- PostgreSQL - уровень предприятия реляционная база данных. Водитель реализован в чистом JavaScript и обменивается данными через TCP, используя Протокол проводки PostgreSQL.
- Sqlite3 - Простая, быстрая, без сервера реляционная база данных. Этот драйвер является оберткой вокруг командной строки sqlite3 программа. Для этого требуется, чтобы sqlite3 находился в путь. Сообщение очень быстро, но тип arent очень точный. Есть только строки и nulls возвращены.
- MongoDB - A масштабируемый, высокопроизводительный, открытый источник, без схемы, документированный база данных. Этот драйвер также реализует проводной протокол в JavaScript и передается с сервером через TCP.
- JSON-DB - встроенная система без схем, ориентированная на документы база данных, в которой используются простые плоские файлы содержащих объекты JSON. Это не имеет требования вообще, кроме node и файловая система. Производительность должна быть определяется после его осуществления полностью.
Отказ от ответственности: я автор.
Возможно, посмотрите BarricaneDB, объявленный здесь.
Я не уверен, что правильное решение состоит в том, чтобы сосредоточиться только на сопоставлении базы данных с вашим веб-стеклом, а также с учетом требований к конкретным приложениям.
Вы анализируете каналы твиттера или другие данные большого объема для шаблонов, но не нуждаетесь в транзакционной поддержке? Тогда выберите что-то очень быстро.
Вы просто хотите сохранить некоторую действительно базовую информацию в нескольких таблицах и ее не в настоящее время не "ориентированное на предприятие" приложение? Затем выберите что-нибудь классное, чтобы узнать.
Возможно, вы собираетесь хранить данные, которые действительно важны для клиента, надежные, должны быть транзакционными и иметь живую репликацию на удаленные объекты хостинга и т.д. Тогда, возможно, посмотрите на что-то вроде postgresql. Это тоже не отразится, но драйвер node.js работает очень хорошо, и если вы не смертельно опасаетесь sql, он легко получает то, что вы хотите/вне.
Что касается моего собственного мнения, я думаю, что переход с более новым стекем, вроде node.js(против традиционных фреймворков в php/java), добавляет достаточно "новой" сложности, из-за которой нельзя добавлять дополнительные слои одновременно. Это хорошая статья, в которой говорится, что:
Я буду говорить по своему опыту: CouchDB поставляется с определенной кривой обучения, тогда как MongoDB мне очень легко учиться и настраиваться. Я никогда не использовал redis. Я предлагаю MongoDB - но это, возможно, бесстыдный фанатизм - у меня нет цифр, хе-хе, только утверждения о простоте использования.
Еще несколько примеров:
Глобалы: http://globalsdb.org
GT.M(см. https://github.com/robtweed/node-mwire для начальной точки)
M/DB (клон с открытым исходным кодом SimpleDB): https://github.com/robtweed/node-mdb, и вы можете использовать клиента Node.js SimpleDB для доступ к ней: https://github.com/rjrodger/simpledb
dirty - еще одно хранилище ключей. Как следует из названия, это быстрое и грязное, но эффективное решение для простых случаев. Я не автор:)