Простая in-memory база данных с постоянством в одном файле

Вопрос или проблема

Я ищу базу данных в памяти, где я буду хранить длинный список записей.

  • Каждая запись будет иметь переменное количество неуникальных (!) атрибутов (аналогично тому, как организованы таблицы NoSQL).
  • Мне нужно иметь возможность сохранять данные из памяти на диск и обратно, предпочтительно имея все в одном файле.
  • Скорость имеет для меня значение.
  • Параллелизм не требуется: файл будет загружен движком базы данных в память, изменен, а затем сохранен в другой файл.
  • Размер базы данных будет до 100 Мб и до 10 тыс. записей.
  • В основном будут запросы SELECT (в значительной мере полагающиеся на индексы), обновления (UPDATE) и вставки (INSERT) (удалений (DELETE) не будет)
  • Журналирование или транзакции ACID не требуются.
  • Скорость загрузки данных в память и их сохранения обратно на диск не имеет значения.

Какое программное обеспечение вы порекомендуете использовать?

Я бы обратил внимание на SQLite. Я считаю, что он соответствует всем вашим требованиям.

Ответ или решение

Для ваших требований я бы рекомендовал рассмотреть использование SQLite. Этот легковесный реляционный встроенный движок баз данных может функционировать как in-memory база данных с возможностью персистентного хранения данных в одном файле. Позвольте объяснить, как именно SQLite может удовлетворить ваши потребности:

  1. Непостоянные атрибуты: SQLite поддерживает динамические таблицы, что позволяет создавать записи с переменным числом атрибутов. Вы можете использовать формат JSON для хранения неструктурированных данных, что особенно удобно для реализации модели, аналогичной NoSQL.

  2. Персистентное хранение данных: SQLite позволяет сохранять всю базу данных в одном файле на диске, что полностью соответствует вашему требованию иметь все данные в одном месте. Вы можете с легкостью загружать данные в память и сохранять их обратно в файл.

  3. Высокая скорость: SQLite очень быстрый и эффективный для малых и средних объемов данных. Поскольку вы упомянули, что основное количество операций будет составлять SELECT, UPDATE и INSERT, SQLite отлично подойдет для вашей задачи, особенно с использованием индексов для оптимизации SELECT запросов.

  4. Нет необходимости в параллелизме и транзакциях: SQLite хорошо работает в средах, где не требуется сложная схема параллельного доступа или полные транзакции ACID. Поскольку вы указали, что не нужны журналы или сложные транзакционные механизмы, это позволит вам избежать излишней сложности.

  5. Гибкость работы с данными: SQLite позволяет использовать SQL-запросы для выполнения операций с данными, что добавляет удобство и гибкость при работе с вашей базой данных.

  6. Простота использования: SQLite имеет достаточно простую и понятную API, что позволит вам быстро интегрировать его в ваше приложение.

Помимо SQLite, вы также можете рассмотреть использование других небольших библиотек, таких как DuckDB или LevelDB. Однако, учитывая ваши требования, SQLite кажется наиболее подходящим вариантом из-за своей простоты и эффективности.

В итоге, я рекомендую использовать SQLite как решение для вашей задачи по созданию простой in-memory базы данных с персистентным хранением данных в одном файле.

Оцените материал
Добавить комментарий

Капча загружается...