NeDB: SQLite для NodeJS



NeDB (Node.js Embedded Database) — вбудована база даних для NodeJS, що реалізує підмножину MongoDB API. Ця легка NoSQL СУБД написана на чистому JavaScript, не має бінарних залежностей і, крім NodeJS, може використовуватися в NW.js, Electron або прямо в браузері.
NeDB забезпечує збереження даних у простому файлі на диску в json-форматі, який схожий на колекції в MongoDB.

Установка
NeDB доступний з bower і npm:
npm install nedb --save

Давайте створимо сховище даних під назвою «users»:
var Datastore = require('nedb');
var db = new Datastore({filename : 'users'});
db.loadDatabase();

Це створить файл з ім'ям users у вашому робочому каталозі. Якщо ви хочете використовувати NeDB для зберігання в пам'яті, вам необхідно використовувати конструктор без параметрів, тобто не передавати йому ім'я файлу.

CRUD
Давайте вставимо запис:
db.insert({name : "Boris the Blade", year: 1946});

Відкрийте файл users, щоб побачити вставлений об'єкт. NeDB автоматично додає поле "_id" для кожного об'єкта. Щоб вставити більше одного запису передати масив в метод insert. Така операція є атомарною, так що якщо одна з вставок зазнає невдачі, для іншого буде виконаний відкат.

Витяг даних:
db.find({year: 1946}, function (err, docs) {
console.log(docs);
});

Цей метод приймає запит у вигляді об'єкта і функцію зворотного виклику; docs являє собою масив, що містить результати пошуку. У даному прикладі ми просто виведемо цей масив в консоль.

Оновлення даних:
Для оновлення даних вам потрібно передати три аргументи:
— запит для пошуку документа, який потрібно змінити;
— об'єкт для заміни;
— параметри заміни (їх ми залишимо порожніми – {}).
db.update({year: 1946}, {name: "Doug the Head", year: 1940}, {});

Виконайте запит і подивіться на файл users. Помічаєте щось незвичайне? Перша запис (Бориса Бритви) досі у файлі. Це відбувається з-за механіки NeDB, яка вважає, що не варто витрачає час на переписування записів. NeDB просто додає нові рядки. Те ж саме стосується операції видалення:
db.remove({year: 1946}, {});

Індексація
NeDB підтримує індекси майже як у Mongo:
db.ensureIndex({fieldName: 'year'});

Це дозволяє прискорити пошук даних по полю year. Ви можете індексувати будь-які поля, включаючи поля у вкладених документах.

Швидкість
NeDB не призначений для того, щоб замінити великомасштабні бази даних, такі як MongoDB. Тим не менш, база працює досить швидко на очікуваних наборах даних, особливо після індексації. Документація стверджує, що «на звичайній, не-дуже-швидкої dev-машині» для колекції з 10,000 документів NeDB показує:
Вставка: 10,680 ops/s
Пошук: 43,290 ops/s
Оновлення: 8,000 ops/s
Вилучення: 11,750 ops/s
Трохи більш точні порівняльні тести продуктивності NeDB проти MongoDB, Tingodb і EJDB.

От і все. Тільки що ви познайомилися з NeDB.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.