База данных node.js
Я ищу базу данных для сопряжения с приложением node.js. Я предполагаю, что json/nosql db предпочтительнее реляционной БД [я могу обойтись без какого-либо несоответствия импеданса json / sql]. Я считаю:
- CouchDB
- MongoDB
- Redis
У кого-нибудь есть какие-либо взгляды / военные истории о совместимости / развертывании вышеупомянутого с node.js? Есть четкие фавориты?
11 ответов
Я разработчик драйвера mongodb для node.js. Я использую mongodb для своих собственных проектов и был очень доволен работой mongodb.
(Бесстыдная вилка) Не стесняйтесь задавать любые вопросы о водителе на
Группа Google для драйвера mongodb
или здесь, в Stackru
Веселитесь с node.js. Я очень люблю платформу:D
Хотя ваш выбор во многом зависит от функций, которые вы собираетесь использовать, я действительно ценю CouchDB за его родную среду JavaScript. И данные, и представления написаны на JavaScript, поэтому, на мой взгляд, он очень хорошо подходит для node.js.
Также доступны различные клиентские библиотеки, некоторые довольно низкого уровня, другие действительно очень абстрактные.
Но, как я уже сказал, вы должны также подумать о функциях, которые вам требуются для вашей базы данных.
Redis - популярный выбор. Вам нужен драйвер базы данных, который не блокирует.
Все базы данных, которые вы перечислили, очень разные. Redis берет идею хранилищ ключей и значений и использует их, добавляя различные типы данных и способы запроса данных. Люди часто отмечают, что redis тоже очень хорошо масштабируется; Это означает, что у него очень низкие накладные расходы, несмотря на способность выполнять.
Вот список доступных модулей базы данных: http://wiki.github.com/ry/node/modules
Мне очень нравится CouchDB. Это что-то вроде кривой обучения, но представления становятся действительно мощными, когда вы понимаете, как их использовать. На github и npm есть модуль под названием cradle, с которым действительно легко работать. Я не смог проверить, насколько это быстро, но он действительно гибкий (вы также можете получить доступ к своим данным в браузере).
Основная проблема заключается в том, какой дизайн базы данных имеет смысл для вашего приложения. У вас есть данные, которые в основном имеют ключевое значение по своей природе? Если это так, используйте Redis. У вас есть данные, где не все документы обязательно имеют одинаковые поля? Если это так, используйте базу данных NoSQL, например, CouchDB.
Следующее худшее, что может случиться с использованием блокирующей базы данных, это использование неверной базы данных для ваших данных. CouchDB управляется Apache, поэтому вы знаете, что это хорошее качество, но не имеет смысла использовать его, если ваши данные будут иметь больше смысла в таблице SQL или в простом хранилище значений ключей.
Подумайте о вашем случае использования. Вы с большей вероятностью захотите выполнить полнотекстовый поиск, просто получить данные по ключу или получить диапазоны документов, имеющих похожие атрибуты?
Возможно, вы захотите проверить персистентность, систему персистентности высокого уровня / базы данных для node.js.
от thechangelog.com:
Постоянство - это проект, позволяющий использовать API высокого уровня для сохранения данных между запусками процесса. Цель состоит в том, чтобы поддерживать бэкэнды, которые просты в использовании, мощны, гибки или все вышеперечисленное, если это возможно.
Поддерживаемые базы данных включают в себя:
- PostgreSQL - реляционная база данных уровня предприятия. Драйвер реализован на чистом JavaScript и связывается по TCP с использованием проводного протокола PostgreSQL.
- Sqlite3 - Простая, быстрая, менее серверная реляционная база данных. Этот драйвер является оболочкой для программы sqlite3 командной строки. Это требует sqlite3, чтобы быть в пути. Связь очень быстрая, но типы не очень точные. Возвращаются только строки и нули.
- MongoDB - масштабируемая, высокопроизводительная, с открытым исходным кодом, без схемы, документно-ориентированная база данных. Этот драйвер также реализует проводной протокол в JavaScript и связывается с сервером через TCP.
- JSON-DB - внутренняя система без документов, ориентированная на документы и ориентированная на документы, которая использует простые плоские файлы, содержащие объекты JSON. Это не имеет никаких требований, кроме узла и файловой системы. Производительность должна быть определена после ее полной реализации.
Отказ от ответственности: я автор.
Возможно, посмотрите на объявленный здесь BarricaneDB.
Я не уверен, что правильное решение состоит в том, чтобы сосредоточиться исключительно на сопоставлении базы данных с вашим веб-стеком, а также с учетом требований конкретного приложения.
Вы анализируете каналы Twitter или другие большие объемы данных для шаблонов, но не нуждаетесь в транзакционной поддержке? Тогда выберите что-то действительно быстрое.
Вы просто хотите хранить некоторую действительно основную информацию в нескольких таблицах, и в настоящее время это не приложение, ориентированное на предприятия? Тогда выберите что-нибудь классное, чтобы учиться.
Возможно, вы собираетесь хранить данные, которые действительно важны для клиента, надежны, должны быть транзакционными, иметь репликацию в реальном времени на удаленные хостинги и т. Д. Затем, возможно, посмотрите что-то вроде 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 - еще одно хранилище значений ключей в плоском файле. Как следует из названия, это быстрое и грязное, но эффективное решение для простых случаев. Я не автор:)