Легкий БД Javascript для використання в Node.js [закрито]


130

Хтось знає про легку, але довговічну базу даних, написану на Javascript, яку можна використовувати з Node.js.

Я не хочу «ваги» (чудових) рішень, таких як Mongo або Couch. Буде достатньо простої бази даних JS в пам'яті з можливістю збереження диска як файл. Я б використовував його лише для зберігання невеликої кількості даних.

Вимоги:

  • може працювати за допомогою серверного додатку node.js
  • може зберегти всю базу даних на диску та відновити після відмови
  • НЕТ необхідності в атомних записах або підтримках транзакцій
  • швидкі запити та сортування було б добре
  • потрібно підтримувати лише невеликі обсяги даних, до 1 МБ

Я натрапив на TAFFY db поки, але він дійсно не оптимізований для використання в Node.js. Хтось бачив, що я шукаю там?

Дякую


Спробуйте використовувати github.com/rvagg/node-levelup
Hellboy

Відповіді:



103

У мене були ті ж вимоги, що і ви, але не вдалося знайти відповідну базу даних. nStore був багатообіцяючим, але API був майже не повним і не дуже узгодженим.

Ось чому я створив NeDB - базу даних, що не має залежностей, для проектів Node.js. Ви можете використовувати його за допомогою простого require(), він є стійким, а його API - це найпоширеніший підмножина дуже відомого API MongoDB.

https://github.com/louischatriot/nedb


8
nedb - це чудово, але майте на увазі, що ви не можете використовувати його в декількох процесах - кожен отримує свою копію при запуску.
Meekohi

12
Начебто голова здається, що від NeDB, можливо, його покинули.
Хлопець

3
Я не розумію, чому останні зобов’язання 1,5 року тому означають, що проект відмовився. Це абсолютно не так, він просто досяг своєї мети, і я не бачу ніякої цінності в
повзанні риси

7
Розглянемо простий сценарій, який оновлює README кожні 3 місяці, замінюючи останній рядок із написом "Цей проект все ще активний як <сьогоднішня дата> - NeDB (c) 2013- <сьогоднішній рік> Луї Чатріот"; повідомлення комісії повинно бути чимось на кшталт "заявляючи, що проект все ще активний станом на <сьогоднішню дату>", що буде першим, що люди бачать у верхній частині github.
Джакомо Лакава

6
@LouisChatriot Я повинен погодитися. У вас є 107 випусків, 32 PR, а остання зміна коду була 3 роки тому. Щойно переконавшись у цьому, це програмне забезпечення, яке я не хочу приносити і мати справу з невідповідністю (3 роки в js dev - це вічність), проблемами, які ігноруються тощо. Правильна кількість зірок, але вона не кричить свіжою.
Карлес Алколія

18

Здається, NeDB - це те, що ви шукаєте. З розмиття:

Вбудована стійка база даних для Node.js, написана на Javascript, без залежності (крім модулів npm, звичайно). Ви можете розглядати це як SQLite для проектів Node.js, який можна використовувати з простим оператором вимагати. API - це підмножина MongoDB. Ви можете використовувати його як стійкий або лише в пам'яті.


@Deilan Я не розумію, чому остання фіксація 1,5 року тому означає, що проект відмовився. Це абсолютно не так, вона просто досягла своєї мети, і я не бачу ніякої цінності в
повзанні риси

@LouisChatriot Я згоден, що я взагалі помиляюся з будь-якими судженнями. Тому я видалив це з моїх початкових коментарів.
Дейлан

16

Lokijs : Швидке сховище документообігу, орієнтоване на пам'ять, для node.js, браузера та кордова.

  • У пам'яті зберігання даних Javascript з постійністю
  • In-Browser NoSQL db з синхронізацією та збереженням
  • магазин у стилі Редіс із встановленням npm
  • Постійний db NoSQL для Cordova
  • Вбудований db NoSQL з наполегливістю для node-webkit

LokiJS - ідеальне рішення:

  • Мобільні додатки - особливо на основі HTML5 (Кордова, Фонегап тощо)
  • Node.js вбудований сховище даних для додатків малого та середнього рівня
  • Вбудований у настільний додаток за допомогою Node Webkit

https://github.com/techfort/LokiJS


чи видаляться мої дані в lokiJS, якщо я очищую місцеве зберігання?
HIRA THAKUR

@LeonardoDaCodinchi - Залежить від того, як ви його використовуєте, але в Node він зберігає у json-файл для збереження.
BryanGrezeszak

База даних все ще зберігається в пам'яті при запуску. З того, що я зрозумів.
mjwrazor

14

Погляньте на http://www.tingodb.com . Я вважаю, це робить те, що ви шукаєте. Крім того, він повністю сумісний з MongoDB API. Це зменшує ризики впровадження та надає можливість перейти до важкого рішення у міру зростання вашої програми.

https://github.com/sergeyksv/tingodb


1
Повна сумісність з MongoDB - це дуже приємна особливість - розробіть додаток для роботи з невеликими локальними db, тоді, якщо вам потрібно, масштабуйте до MongoDB .... Дякую!
Бред Паркс

... але точно не забудьте порівняти з nedb , який також сумісний з MongoDB, і подивіться, що для вас працює
Brad Parks

Останній
вчинок


8

У мене виникли проблеми із SQLite3, nStore та Альфредом.

Те, що для мене працює, є забрудненим вузлом :

path = "#{__dirname}/data/messages.json"
messages = db path

message = 'text': 'Lorem ipsum dolor sit...'

messages.on "load", ->    
    messages.set 'my-unique-key', message, ->
        console.log messages.get('my-unique-key').text

    messages.forEach (key, value) ->
        console.log "Found key: #{key}, val: %j", value

messages.on "drain", ->
    console.log "Saved to #{path}"

Дякую за частку, я щось таке шукав деякий час. Це в поєднанні з невеликими веб-сайтами працює чудово!
Дітерг

1
@DieterGoetelen ласкаво просимо! Нещодавно я також був дуже задоволений тим, що використовував більш потужний EJDB, який має синтаксис, схожий на MongoDB і має прив’язки в Node.js та поза межами github.com/Softmotions/ejdb-node
Radek


5

Можливо, вам варто спробувати LocallyDB - це простий у використанні і легкий на додаток до вдосконаленої системи вибору, схожу на умовне вираження javascript ...

https://github.com/btwael/locallydb


Спасибі Wael Amine Boutglay LocallyDB щойно зробив мою справу для node js. Раніше я працював з php, і я створив власну базу даних з плоскими файлами github.com/sguha-work/LifeDB
Angshu Guha

LocallyDB приємний для локального тестування! Зверніть увагу, що він використовує блок IO. Як НЕ використовувати його у виробництві.
Junle Li

1
Посилання не працює. Це сторінка паркування домену.
rsp

Виправлено посилання @rsp, перевірте http://boutglay.com/locallydb/
Wael Boutglay

Останній
комітет


1

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

https://github.com/hectorcorrea/jaguarDb


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