Является ли CRUD API NeDB совместимым с MongoDB?
Я ищу MongoDB API-совместимый движок БД, который не требует запуска полноценного процесса Mongod (своего рода SQLite для Node).
Из нескольких кандидатов, которые постоянно хранят данные на локальном диске с похожим API, получилось два:
проблема
- Я не работал ни с одним из них.
- Я также очень плохо знаком с API MongoDB, поэтому мне трудно судить о сопоставимости.
Требования
Мне нужна ваша помощь / совет по выбору только одной библиотеки, которая удовлетворяет
- Это достаточно стабильно.
- Быстро обрабатывать документы JSON размером ~ 1 Мб на диске или больше.
- Я хочу иметь возможность переключаться на MongoDB в качестве бэкэнда данных в будущем или по требованию путем изменения файла конфигурации. Я не хочу дублировать код.
API инициализации БД отличается
Теперь только tingodb заявляет о совместимости API. Даже инициализация выглядит довольно похоже.
tingodb
var Db = require('tingodb')().Db, assert = require('assert');
против
MongoDB
var Db = require('mongodb').Db,
Server = require('mongodb').Server,
assert = require('assert');
В случае NeDB это выглядит немного иначе, потому что он использует абстракцию хранилища данных:
// Type 1: In-memory only datastore (no need to load the database)
var Datastore = require('nedb')
, db = new Datastore();
ВОПРОС
Очевидно, что инициализация не совместима. Но как насчет CRUD? Насколько сложно это принять?
Поскольку большая часть кода, который я не хочу дублировать, будет представлять собой операции CRUD, мне нужно знать, насколько они похожи, то есть насколько независимым может быть мой код относительно того, какой у меня бэкэнд.
// If doc is a JSON object to be stored, then
db.insert(doc); // which is a NeDB method which is compatiable
// How about *WriteResult*? does not look like it..
db.insert(doc, function (err, newDoc) { // Callback is optional
// newDoc is the newly inserted document, including its _id
// newDoc has no key called notToBeSaved since its value was undefined
});
Я буду признателен за ваше понимание этого выбора!
Также см:
Кто-нибудь использовал Тунгус? Это зрелый?
1 ответ
Операции CRD NeDB совместимы сверху с MongoDB, но инициализация действительно нет. NeDB реализует часть API MongoDB, но не все, реализованная часть совместима сверху.
Это определенно достаточно быстро для ваших требований, и мы сделали его очень стабильным за последние несколько месяцев (больше сообщений об ошибках)