Есть ли какая-либо база данных NoSQL так же просто, как SQLite?

Есть ли какая-либо база данных NoSQL так же просто, как SQLite? Я ищу легкую базу данных, чтобы сохранить небольшой набор данных для простого настольного приложения. Я все еще могу использовать SQLite, но предпочитаю более OO-подход, поскольку мое приложение не обрабатывает много данных.

Ответ 1

UnQLite - это встроенная программная библиотека, которая реализует автономный, безсерверный, нулевой конфигурации транзакционный механизм базы данных NoSQL.

Ответ 2

Я думаю, Berkeley DB - это классический выбор.

Berkeley DB (BDB) - это программная библиотека, которая обеспечивает высокопроизводительную встроенную базу данных для данных ключа/значения. Berkeley DB написан на C с привязками API для С++, С#, PHP, Java, Perl, Python, Ruby, Tcl, Smalltalk и многих других языков программирования. BDB хранит произвольные пары ключ/данные в виде массивов байтов и поддерживает несколько элементов данных для одного ключа. Berkeley DB не является реляционной базой данных.

Ответ 3

Вы также можете следить за UnQL от разработчиков CouchDB и SQLite.

Ответ 4

Токийский кабинет и его преемник Киотский кабинет являются лучшими.

Kyoto Cabinet - это библиотека подпрограмм управления базой данных. База данных представляет собой простой файл данных, содержащий записи, каждая из которых представляет собой пару ключей и значение. Каждый ключ и значение представляют собой последовательные байты с переменной длиной. Оба двоичных данных и символьная строка могут использоваться как ключ и значение. Каждый ключ должен быть уникальным в базе данных. Не существует ни концепции таблиц данных, ни типов данных. Записи организованы в хэш-таблице или дереве B +.

Ответ 5

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

Ответ 6

Я нашел UnQLite пару дней назад, но он, похоже, не поддерживает индексы и не имеет адаптеров.

Ответ 7

Звучит как задание для y_serial; -)

Здесь описание: "Сериализация + персистентность" в нескольких строках кода, сжатие и аннотирование объектов Python в SQLite, а затем их хронологически восстанавливать по ключевым словам без какого-либо SQL. Самый полезный "стандартный" модуль для хранения базы данных без данных схемы. "

Подробнее см. http://yserial.sourceforge.net/.

Ответ 8

RavenDB - интересный вариант здесь (честное раскрытие - я только немного играл с ним - не использовал его в настоящий проект еще).

Наиболее интересной особенностью является то, что она автоматически сопоставляет вашу объектную модель с постоянным хранилищем. В мире RDMS единственным инструментом, который делает это хорошо (насколько мне известно), является Fluent NHibernate.

Автоматизация может быть огромной экономией времени во время разработки, особенно если у вас сложная объектная модель или быстро изменяющиеся требования.

Ответ 9

Я лично ищу что-то, что работает с Python 3. Я вижу, что принятый ответ UnQLite, где Связи Python в настоящее время недоступны для Python 3.

Однако TinyDB выглядит хорошей альтернативой.

Ответ 10

Технически, если вам не нужны SQL-функции для выбора определенных элементов, вы можете использовать простую сериализацию и сохранять каждый объект в виде отдельного файла.

Например, используя С# lang + psuedo для сокращения

   List<Customer> customers = ...//some data here

   JsonSerlializer.Save(customers, "c:\...\customers.json"); //you can use .db extension if you will
   //load back
   List<Customer> customers = JsonSerlializer.Load("c:\...\customers.json");

Один объект одного документа в файловой системе, или вы можете сделать один большой объект полезной нагрузки для хранения всех ваших данных и сохранения в один файл, просто рассмотрите нагрузку приложения, если вы используете большое количество данных.

Теперь, отвечая "Есть ли какая-либо база данных NoSql так же просто, как SQLite", я не знаю, поэтому я задаю тот же вопрос:), но для простого файла конфигурации или нескольких объектов или списков локальный файл json должен быть достаточно.

EDIT: это может быть обещание http://unqlite.org/

"UnQLite - это библиотека программного обеспечения в процессе, которая реализует автономный, безсерверный, нулевой конфигурации, транзакционный NoSQL двигатель базы данных. UnQLite - это база данных хранилища документов, аналогичная MongoDB, Redis, CouchDB и т.д., А также стандартный хранилище ключей/значений аналогично BerkeleyDB, LevelDB и т.д."

Ответ 11

Вы можете проверить некоторые oodb (объектно-ориентированная база данных)

Ответ 12

stsdb является простым в использовании. все, что вам нужно использовать, это клиентская библиотека и файл db, который он может создать.

Я использую его в приложении С#/wpf. Но это не подходит для стадии разработки. Поскольку вы не можете изменять уже сохраненные модели.

Но это легко, быстро и мало. Так много профессионалов делает его достойным

Ответ 13

В некоторых случаях (если вам не нужны/есть некоторые реквизиты в качестве индексов), вы можете использовать файловую систему как базу данных: имя файла/путь как ключ и содержимое файла как значение. JSON - эффективная память, поэтому вы можете использовать синтаксический анализатор для сериализации/несериализации данных.

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

Реальная проблема этого решения (в дополнение к отсутствию некоторых функций) заключается в том, что записи файлов будут сохранены в блоки 4 КБ, поэтому файл размером 10 байт будет использовать 4 КБ, файл из 4097 байт будет использовать 8 КБ и так (по крайней мере, на большинстве файловых систем), поэтому для больших количеств небольших записей не очень эффективно с диска.

Преимущества: быстрый, легкий, потому что он использует гораздо меньше бара, а дополнительное узкое место межпроцессного соединения добавлено, проверено и прозрачно оптимизировано ОС через кеш-память. Вы можете использовать блокировки, и вы можете даже распространять их через удаленный mount.

Наконец, я бы не стал использовать это решение, если ваша производственная платформа является машиной Windows, но также возможна.

Ответ 14

Другим решением является LevelDB. На домашней странице написано:

LevelDB - это быстрая библиотека хранения ключевых значений, написанная в Google, которая обеспечивает упорядоченное сопоставление от строковых ключей до строковых значений.

Особенности

  • Ключами и значениями являются произвольные байтовые массивы.
  • Данные хранятся отсортированными по ключу.
  • Абоненты могут предоставлять пользовательскую функцию сравнения, чтобы переопределить порядок сортировки.
  • Основными операциями являются Put (ключ, значение), Get (ключ), Delete (ключ).
  • Несколько изменений могут быть сделаны в одной атомной партии.
  • Пользователи могут создавать временный снимок для получения согласованного представления данных.
  • Итерация вперед и назад поддерживается данными.
  • Данные автоматически сжимаются с использованием библиотеки сжатия Snappy.
  • Внешняя активность (операции файловой системы и т.д.) передается через виртуальный интерфейс, поэтому пользователи могут настраивать операционную систему взаимодействия.
  • Подробная документация о том, как использовать библиотеку, включена в исходный код.

Ограничения

  • Это не база данных SQL. Он не имеет реляционной модели данных, он не поддерживает SQL-запросы и не поддерживает индексов.
  • Только один процесс (возможно, многопоточный) может одновременно обращаться к определенной базе данных.
  • В библиотеке не поддерживается поддержка клиент-сервер. Приложению, нуждающемуся в такой поддержке, придется обернуть свой собственный сервер вокруг библиотеки.

Ответ 15

Вы можете попробовать rabaDB. Это python NoSQL схематический ORM для SQLite с очень легким интерфейсом.

Ответ 16

Friendly - это своего рода база данных NOSQL, в которой используется Ruby + SQLite. Это своего рода взломать, но это тоже мило. Я написал пример приложения Sinatra, который демонстрирует его здесь.