база даних node.js [закрита]


115

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

  • couchdb
  • mongodb
  • redis

У когось є перегляди / історії війни про сумісність / розгорнутість вищезазначеного з node.js? Якісь явні фаворити?


2
Я думаю, було б корисно відповісти на питання, якщо згадуються ще більш широкі вимоги. У кожної БД є свої плюси, мінуси та спеціальність. Дайте нам знати специфікації!
Самяк Бхута

Відповіді:


79

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

Драйвер Mongodb для node.js

(Безсоромний штекер) Не соромтеся задавати будь-які питання щодо водія за адресою

Група Google для драйвера mongodb

або тут, на Stackoverflow

Розважайтеся з node.js. Я абсолютно люблю платформу: D


1
також дивіться на мангусту, яка є досить приємною ORM, яка створює поверх / використовує драйвер mongodb для node.js
таксілій

2
Ми використовуємо Node.js + MongoDB досить давно, і це чудово. І повний кудос до @christkv, водій непомітний і не підведе вас. Ми легко розгорнули node.js / express.js + mongodb на EC2. Також зауважте, що ми не використовуємо мангуст. Якщо говорити про виклики (якщо припустити, що ви вже хороші в Node), вам потрібно добре попрацювати з методом Монго (запити та агрегація) для будь-якої серйозної розробки додатків чи послуг. Дізнатися, чим Монго відрізняється від інших БД, насправді вам слід спочатку, якщо ви все ще на етапах оцінки.
Сам’як Бхута

з того, що я розумію, деякі дійсно круті функції надходять вниз, щоб прискорити агрегацію в mongodb. Однією з них є нативні функції агрегації. slideshare.net/cwestin63/mongodb-aggregation-mongosf-may-2011, а також можливий перехід на v8 замість spidermonkey для двигуна javascript, що дозволить кожній команді зменшити карту запускатись у власну нитку (до побачення, singlethreaded map-Reduce )
christkv

25

Хоча ваш вибір дуже залежить від функцій, які ви збираєтеся, я дуже ціную CouchDB за його рідне середовище JavaScript. І дані, і перегляди написані на JavaScript, так що він дуже добре підходить для node.js, на мою думку.

Також доступні різні бібліотеки клієнтів , деякі досить низького рівня, інші - дуже абстраговані.

Але, як я вже сказав, ви також повинні подумати про функції, які вам потрібні для вашої бази даних.


18

Redis - популярний вибір. Ви шукаєте драйвер бази даних, який не блокується.

Перелічені вами бази даних дуже відрізняються. Redis приймає ідею сховищ ключових значень і працює з нею, додаючи різноманітні типи даних і способи запиту даних. Люди часто зазначають, що редис теж дуже добре зменшується; Це означає, що він має дуже низькі накладні витрати, незважаючи на можливість виконання.

Ось перелік доступних модулів бази даних: http://wiki.github.com/ry/node/modules#database


Так, Redis - це чудово, але, здається, ми можемо зберігати бінарні дані, але не можемо отримати це! Принаймні, я не зміг знайти жодної команди Redis для двійкових даних.
AppleGrew

Дійсно? Я використовував для зберігання двійкових даних (використовуючи клас буфера Node), і це працювало чудово. Яка версія Redis / Node?
DanielS

12
За замовчуванням node_redis повертає рядки JavaScript для всіх команд. Для отримання буферів замість цього створіть клієнта з createClient (порт, хост, {return_buffers: true});
Метт Ранні

4
@MattRanney, ти економив щойно врятував мене більше годин копання! Я не бачив цього ніде в вузлі-документах Redis і буквально затонув 5 годин. Моя вдячність в цей момент безмежна.
ghayes

ну все теоретично добре звучить, але візьміть практичний приклад, у вас є JSON API, який ви запитуєте кожні 20 секунд, який повертає масив, ви хочете мати можливість кешувати це, чи все-таки ви б пішли з Redis? також треба зробити нечіткий пошук через цей масив
PirateApp

15

Мені дуже подобається CouchDB. Це трохи крива навчання, але погляди дійсно потужні, коли ти зрозумієш, як ними користуватися. Існує модуль під назвою колиска на github та npm, з яким дуже легко працювати. Я не зміг перевірити, наскільки це швидко, але це дійсно гнучко (ви можете отримати доступ до своїх даних і в браузері, якщо хочете).

Тут головне питання, який дизайн бази даних має сенс для вашої програми. Чи є у вас дані, які в основному мають ключове значення? Якщо так, то використовуйте Redis. Чи є у вас дані, де не всі документи обов’язково мають однакові поля? Якщо так, використовуйте базу даних NoSQL, як CouchDB.

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

Придумайте свій випадок використання. Чи швидше ви захочете зробити повнотекстовий пошук, просто отримайте дані за ключем або отримайте діапазон документів, що мають подібні атрибути?


8

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

від thechangelog.com :

Персистентність - це проект, що дозволяє API високого рівня для збереження даних між процесами. Метою є підтримка програмних засобів, які є простими у використанні, потужними, гнучкими або, якщо це можливо, всіма перерахованими вище.

Підтримувані бази даних включають:

  • PostgreSQL - реляційна база даних на рівні підприємства. Драйвер реалізований у чистому JavaScript та спілкується через TCP, використовуючи провідний протокол PostgreSQL.
  • Sqlite3 - проста, швидка, без сервера реляційна база даних. Цей драйвер є обгорткою навколо командного рядка sqlite3. Для цього потрібно sqlite3, щоб бути на шляху. Зв'язок надзвичайно швидкий, але типи не дуже точні. Повертаються лише рядки та нулі.
  • MongoDB - масштабована, високопродуктивна, відкрита програма, без схем, орієнтована на документи, база даних. Цей драйвер також реалізує провідний протокол у JavaScript та спілкується з сервером через TCP.
  • JSON-DB - Базована в документах орієнтована на схему документа, орієнтована на документи, що використовує прості плоскі файли, що містять JSON-об'єкти. Тут взагалі немає вимог, крім вузла та файлової системи. Продуктивність слід визначити, коли вона буде реалізована повністю.

13
Наполегливість не оновлювалася з березня 2010 року та виходить на реліз 0.0.4, тому здається, що вона могла бути залишена.
брак


3

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

Ви аналізуєте канали щебетання або інші великі дані для шаблонів, але не потребуєте транзакційної підтримки? Тоді виберіть щось дійсно швидко.

Ви просто хочете зберігати деяку дійсно основну інформацію в кількох таблицях, а її наразі не програма, орієнтована на підприємство? Тоді виберіть щось класне, щоб навчитися.

Можливо, ви збираєтеся зберігати дані, які дійсно важливі для клієнта, надійні, повинні бути транзакційними і мати реплікацію в реальному часі на віддалені хостинг-сервіси тощо. Це також не буде дзеркально, але драйвер node.js працює дуже добре, і якщо ви не боїтесь sql, він отримує те, що ви хочете входити і виходити досить легко.

Що стосується моєї власної думки, я думаю, що введення з новим стеком, як node.js (проти традиційних фреймворків у php / java), додає достатньо «нової» складності, що не слід додавати зайві шари відразу. Це гарна стаття, в якій йдеться про те, що:

http://nodeguide.com/convincing_the_boss.html


2

Я буду говорити зі свого досвіду: CouchDB поставляється з певною кривою навчання, тоді як у MongoDB мені було дуже легко вивчити та налаштувати. Я ніколи не використовував redis. Я пропоную MongoDB - але це, можливо, безсоромний фанбоїзм - у мене немає номерів, хе, лише претензії на простоту використання.


1

брудний - це ще одне сховище ключових значень плоских файлів. Як випливає з назви, це швидке і брудне, але ефективне рішення для простих справ. Я не автор :)



0

Я знайшов CouchDB дуже легким в освоєнні. Є багато електронних книг , доступних в Інтернеті , який навчить вас , як використовувати CouchDB з Node.js .

Я вважав цю книгу дуже корисною для вивчення CouchDB.

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

CouchDB можна розмістити на Iriscouch або Cloudant .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.