Лёгкие СУБД¶
Лёгкие СУБД (англ. lightweight database management systems) — это класс систем управления базами данных, отличающихся минимальными требованиями к вычислительным ресурсам (оперативной памяти, процессорному времени, дисковому пространству) и предназначенных для работы на устройствах с ограниченной производительностью, во встраиваемых системах, мобильных приложениях, а также для простых однопользовательских или маломасштабных проектов. В отличие от тяжеловесных серверных СУБД (например, Oracle Database, Microsoft SQL Server, PostgreSQL), лёгкие СУБД часто не требуют отдельного серверного процесса, управляются библиотекой, встраиваемой непосредственно в приложение, и имеют упрощённую архитектуру.
¶История
Развитие лёгких СУБД началось в конце 1980-х — начале 1990-х годов, когда рост популярности персональных компьютеров и появление портативных устройств (карманных компьютеров, смартфонов) потребовали решений для локального хранения данных без постоянного подключения к централизованным серверам. Одним из первых широко известных представителей стала СУБД dBase (1980-е), которая, хотя и не была полностью лёгкой по современным меркам, задала тренд на встраиваемость и простоту.
Настоящий прорыв произошёл в 2000 году с выходом SQLite — самой популярной на сегодняшний день лёгкой реляционной СУБД. SQLite была создана Ричардом Хиппом (D. Richard Hipp) как встраиваемая библиотека, работающая без отдельного сервера. Её исходный код помещается в один файл (амальгамация), а база данных хранится в единственном файле на диске. К 2020-м годам SQLite используется в миллиардах устройств: от смартфонов на Android и iOS до браузеров (Firefox, Chrome), встроенных систем автомобилей, бытовой техники и промышленного оборудования.
Параллельно развивались и другие направления. В 2009 году появилась Berkeley DB (изначально разрабатывалась в Калифорнийском университете в Беркли, затем приобретена Oracle) — нереляционная (ключ-значение) СУБД, ориентированная на высокую производительность и встраиваемость. В 2010-х годах с ростом популярности NoSQL-решений возникли лёгкие документоориентированные СУБД, такие как LevelDB (Google, 2011) и RocksDB (Facebook, 2013), оптимизированные для работы с SSD и флэш-памятью.
В России лёгкие СУБД активно применяются в разработке встраиваемых систем, автоматизации промышленности и мобильных приложениях. Например, SQLite используется в операционной системе Аврора (российская мобильная ОС) для хранения настроек и пользовательских данных.
¶Классификация
Лёгкие СУБД можно классифицировать по нескольким признакам.
¶По модели данных
- Реляционные (SQL) — поддерживают язык SQL, таблицы, строки и столбцы. Примеры: SQLite, H2 (Java), Firebird Embedded.
- Ключ-значение (key-value) — хранят данные как пары «ключ — значение». Примеры: Berkeley DB, LevelDB, RocksDB.
- Документоориентированные — хранят данные в виде документов (обычно JSON или BSON). Примеры: LiteDB (.NET), UnQLite.
- Графовые — оптимизированы для хранения и обработки связей между объектами. Примеры: Neo4j Embedded (ограниченная версия).
¶По способу развёртывания
- Встраиваемые (embedded) — библиотека, которая включается непосредственно в приложение. Не требуют установки отдельного сервера. Примеры: SQLite, LevelDB, Berkeley DB.
- Локальные (desktop) — могут работать как отдельное приложение, но не требуют сетевого доступа. Примеры: Microsoft Access (лёгкая версия), LibreOffice Base.
¶По типу хранения
- Файловые — вся база данных хранится в одном или нескольких файлах на диске. Примеры: SQLite (один файл), Berkeley DB (несколько файлов).
- В памяти (in-memory) — данные хранятся исключительно в оперативной памяти, что обеспечивает максимальную скорость, но данные теряются при выключении. Примеры: Redis (хотя он не является чисто лёгким, но часто используется в лёгких конфигурациях), SQLite в режиме
:memory:.
¶Характеристики
Лёгкие СУБД обладают рядом общих характеристик, отличающих их от полноценных серверных решений:
- Минимальное потребление ресурсов: типичный объём оперативной памяти для работы SQLite составляет 250 КБ — 1 МБ, размер библиотеки — около 600 КБ. Для сравнения, минимальные требования PostgreSQL — не менее 10 МБ ОЗУ и 50 МБ дискового пространства.
- Отсутствие отдельного серверного процесса: библиотека работает в адресном пространстве приложения, что исключает накладные расходы на межпроцессное взаимодействие (IPC) и сетевые задержки.
- Упрощённая модель параллельного доступа: большинство лёгких СУБД (например, SQLite) поддерживают только один пишущий процесс или поток в любой момент времени. Это ограничение делает их непригодными для высоконагруженных многопользовательских систем, но оптимально для однопользовательских сценариев.
- Портативность: код написан на C/C++ и может быть скомпилирован практически для любой платформы — от микроконтроллеров до мейнфреймов.
- Надёжность: многие лёгкие СУБД (SQLite, Berkeley DB) проходят строгие тесты на отказоустойчивость (например, тестирование при внезапном отключении питания) и соответствуют стандарту ACID (атомарность, согласованность, изолированность, долговечность).
¶Применение
Лёгкие СУБД находят применение в широком спектре областей:
- Мобильные приложения: Android и iOS используют SQLite как стандартное хранилище для большинства приложений (контакты, сообщения, настройки).
- Встраиваемые системы: автомобильные мультимедийные системы, промышленные контроллеры, медицинские приборы, «умные» бытовые приборы (холодильники, стиральные машины).
- Браузеры и веб-технологии: Firefox хранит закладки, историю и пароли в SQLite; WebSQL (устаревший стандарт) также базировался на SQLite.
- Научные и исследовательские проекты: для хранения небольших объёмов экспериментальных данных на портативных устройствах.
- Прототипирование и обучение: лёгкие СУБД часто используются в учебных курсах по базам данных из-за простоты установки и настройки.
¶Примеры лёгких СУБД
¶SQLite
Наиболее распространённая встраиваемая реляционная СУБД. Поддерживает большинство стандарта SQL-92, транзакции ACID, индексы, триггеры, представления. Ограничения: отсутствие полноценной поддержки хранимых процедур, ограниченная конкурентность записи. Лицензия: общественное достояние (public domain).
¶Berkeley DB
Нереляционная СУБД (ключ-значение), разработанная Oracle. Отличается высокой производительностью при операциях вставки и чтения. Поддерживает транзакции, репликацию, шифрование. Используется в таких продуктах, как OpenLDAP, Subversion, Bitcoin Core.
¶LevelDB
Разработана Google как библиотека для хранения пар ключ-значение с упорядоченными ключами. Оптимизирована для последовательной записи на SSD. Используется в браузере Chrome (IndexedDB) и блокчейн-проектах (например, Ethereum).
¶RocksDB
Форк LevelDB, созданный Facebook (продукт Meta, признанной экстремистской и запрещённой в РФ). Добавлена поддержка многопоточности, сжатия, различных стратегий слияния файлов. Применяется в высоконагруженных системах, таких как Apache Kafka, MySQL (как альтернативный движок MyRocks), а также в распределённых базах данных (например, TiKV).
¶H2
Реляционная СУБД, написанная на Java. Поддерживает режимы как встраиваемой (embedded), так и клиент-серверной работы. Часто используется для тестирования и разработки Java-приложений, а также как встроенная база данных в таких продуктах, как IntelliJ IDEA.
¶Firebird Embedded
Встраиваемая версия СУБД Firebird. Поддерживает полноценный SQL, хранимые процедуры, триггеры. Отличается от SQLite поддержкой многопользовательского доступа и более сложной архитектурой.
¶Критика и ограничения
Несмотря на широкое распространение, лёгкие СУБД имеют ряд недостатков:
- Ограниченная масштабируемость: невозможность обработки большого количества параллельных запросов на запись. Например, SQLite блокирует всю базу данных на время записи.
- Отсутствие или упрощённая система безопасности: встроенные СУБД обычно не поддерживают разграничение прав доступа на уровне пользователей (аутентификация и авторизация возлагаются на приложение).
- Ограниченные возможности администрирования: нет инструментов для мониторинга производительности, резервного копирования «на лету» (без остановки приложения), репликации в реальном времени.
- Риск повреждения данных: при некорректном завершении работы приложения (например, сбой питания) файл базы данных может быть повреждён, хотя современные версии SQLite и Berkeley DB минимизируют этот риск за счёт журналирования.
¶Источники
- SQLite Documentation. SQLite Consortium. 2023.
- Oracle Berkeley DB Programmer's Reference Guide. Oracle Corporation. 2021.
- Dean, J., Ghemawat, S. LevelDB: A Fast Persistent Key-Value Store. Google Inc. 2011.
- Dong, S., et al. RocksDB: Evolution of a Key-Value Store for Flash Storage. Facebook Inc. 2017.
- H2 Database Engine Documentation. H2 Group. 2024.
- Firebird Embedded Server Guide. Firebird Foundation. 2022.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


