Является ли 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, но не все, реализованная часть совместима сверху.

Это определенно достаточно быстро для ваших требований, и мы сделали его очень стабильным за последние несколько месяцев (больше сообщений об ошибках)

Другие вопросы по тегам