Легкая база данных Javascript для использования в Node.js [закрыто]


130

Кто-нибудь знает легкую, но надежную базу данных, написанную на Javascript, которую можно использовать с Node.js.

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

Требования:

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

Я пока сталкивался с TAFFY db, но он действительно не кажется оптимизированным для использования в Node.js. Кто-нибудь видел то, что я ищу там?

Спасибо


Попробуйте использовать github.com/rvagg/node-levelup
hellboy

Ответы:


6

Я знаком только с Mongo и Couch, но есть еще один под названием Persistence .


14
Вы все еще считаете это решением? последняя фиксация была 7 лет назад.
mjwrazor

3
Последний коммит 31 марта 2010 г.
Deilan

1
Я думаю, вы ищете более новую
версию

1
как это может быть лучше @Chamilyan
Zee

104

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

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

https://github.com/louischatriot/nedb


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

12
В качестве хедз-апа похоже, что от NeDB отказались.
Гай

4
Я не понимаю, почему последний коммит 1,5 года назад означает отказ от проекта. Это абсолютно не так, он просто достиг своей цели, и я не вижу никакой пользы в
расширении

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

6
@LouisChatriot Я должен согласиться. У вас 107 вопросов, 32 PR, а последнее изменение кода было 3 года назад. Просто увидев это, это программное обеспечение, которое я не хочу вводить и бороться с несовместимостью (3 года в js dev - это вечность), проблемами, которые игнорируются, и т. Д. Правильное количество звезд, но оно не кричит свежо.
Carles Alcolea

18

NeDB - это то, что вы ищете. Из аннотации:

Встроенная постоянная база данных для Node.js, написанная на Javascript, без зависимости (за исключением, конечно, модулей npm). Вы можете думать об этом как о SQLite для проектов Node.js, который можно использовать с простым оператором require. API - это подмножество MongoDB. Вы можете использовать его как постоянное хранилище данных или хранилище данных только в памяти.


@Deilan Я не понимаю, почему последняя фиксация 1,5 года назад означает отказ от проекта. Это абсолютно не так, он просто достиг своей цели, и я не вижу никакой пользы в
расширении

@LouisChatriot Я согласен, что в целом я ошибаюсь в своих суждениях. Поэтому я удалил его из своих первоначальных комментариев.
Deilan

17

Lokijs : быстрое хранилище данных в памяти, ориентированное на документы, для node.js, браузера и Cordova.

  • Хранилище данных Javascript в памяти с сохранением
  • БД NoSQL в браузере с синхронизацией и сохранением
  • магазин в стиле Redis, установка npm
  • Устойчивая база данных NoSQL для Кордовы
  • Встраиваемая база данных NoSQL с сохранением для node-webkit

LokiJS - идеальное решение:

  • Мобильные приложения, особенно на основе HTML5 (Cordova, Phonegap и т. Д.)
  • Встроенное хранилище данных Node.js для малых и средних приложений
  • Встраивается в настольное приложение с помощью Node Webkit

https://github.com/techfort/LokiJS


будут ли мои данные в lokiJS очищены, если я очищу свое локальное хранилище?
ХИРА ТАКУР

@LeonardoDaCodinchi - зависит от того, как вы его используете, но в Node он сохраняется в файл json для сохранения.
BryanGrezeszak

Тем не менее, база данных все еще сохраняется в памяти при запуске. Из того, что я пришел к пониманию.
mjwrazor

14

Взгляните на http://www.tingodb.com . Я верю, что он делает то, что вы ищете. Кроме того, он полностью совместим с MongoDB API. Это снижает риски внедрения и дает вам возможность переключаться на тяжелое решение по мере роста вашего приложения.

https://github.com/sergeyksv/tingodb


1
Полная совместимость с MongoDB - очень приятная функция - разработайте свое приложение для работы с небольшими локальными базами данных, а затем, если вам нужно, масштабируйте до MongoDB .... Спасибо!
Брэд Паркс

... но определенно не забудьте сравнить с nedb , который также совместим с MongoDB, и посмотреть, какой из них вам подходит ,
Брэд Паркс,

Последний коммит 26 декабря 2016 г.
Deilan


8

У меня были проблемы с SQLite3, nStore и Alfred.

Для меня работает грязный узел :

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}"

Спасибо за долю, давно искал что-то подобное. В сочетании с небольшими веб-сайтами это прекрасно работает!
Dieterg

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 хорош для локального тестирования! Обратите внимание, что он использует блочный ввод-вывод. Как не использовать его в производстве.
Цзюнь Ли

1
Ссылка не работает. Это страница парковки домена.
rsp

Исправлена ​​ссылка на @rsp, проверьте http://boutglay.com/locallydb/
Wael Boutglay

Последний коммит 1 августа 2016 г.
Deilan


1

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

https://github.com/hectorcorrea/jaguarDb


2
Последний коммит 3 апреля 2013 г.
Deilan
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.