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

130

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

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

Требования:

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

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

Спасибо

ConfusedNoob
источник
Попробуйте использовать 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
9

Попробуйте nStore, это похоже на приятный легкий встроенный db для узла. См. Https://github.com/creationix/nstore

Гай Корланд
источник
1
Последний коммит 2 апреля 2013 г.
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