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