Лучшие вопросы
Таймлайн
Чат
Перспективы

Встраиваемая СУБД

Из Википедии, свободной энциклопедии

Remove ads

Встраиваемая система управления базами данных — архитектура систем управления базами данных, когда СУБД тесно связана с прикладной программой и работает на том же компьютере, не требуя профессионального администрирования.

Встраиваемые СУБД применяются во многих программах, которые хранят большие массивы данных, но при этом не требуется доступ с многих компьютеров. На «рабочем столе» неопытного пользователя тоже есть программы, в которых может найтись встраиваемая СУБД: почтовые клиенты и мессенджеры (базы переписки)[1], медиапроигрыватели (плей-листы и обложки)[2], просмотрщики изображений (метаданные и уменьшенные эскизы)[3], различные локальные БД наподобие телефонных справочников и геоинформационных систем (предоставляемые данные).

Исторически локальные и файл-серверные СУБД предоставляли скриптовый язык, на котором пользователь мог писать прикладную программу. Так устроены, например, Microsoft Access, FoxPro, Clipper, 1С: Бухгалтерия. Недостатком этого подхода были крайняя бедность результирующих программ и ограниченные средства отладки. Также зачастую не существовало компактной среды исполнения, которую можно распространять вместе с программой; если пользователю была нужна программа, ему нужно было устанавливать весь пакет. С распространением динамически подключаемых библиотек и Open Source-сообщества обстоятельства изменились: теперь программист может писать свою программу на том языке высокого уровня, на котором ему удобно, а СУБД же будет подсоединена к программе и станет единым целым с ней.

Remove ads

Особенности

Нет отдельной программы-сервера
Физически встраиваемая СУБД является библиотекой, статически или динамически подсоединённой к основной программе. Программа и СУБД общаются не через сетевые сокеты, а через специализированный API[4][5]. В этом, правда, есть и недостаток: зачастую программист сам должен не допускать многопоточных гонок.
Высокая скорость и малый расход памяти, особенно на длинных строках и BLOBах
Благодаря специализированному API количество операций чтения-записи минимально.
Зачастую небольшой по меркам БД максимальный размер базы
От единиц гигабайт (объём памяти ПК на 2012 год) до единиц терабайт (порядка объёма жёсткого диска). Например, SQLite всегда держит в памяти оглавление БД (аналог таблицы размещения файлов), этим ограничивается объём БД[6].
Как правило, специализированный язык запросов или неполная совместимость с SQL-92
В угоду производительности часто разработчики реализуют или неполный SQL (SQLite),[7] или специализированный язык запросов (BerkeleyDB). К тому же встраиваемые СУБД могут действовать совсем по другому принципу, чем клиент-серверные: пинг к БД нулевой, и запрос можно выполнять по частям, несколькими обращениями к СУБД.
Нет пользовательских прав[7]; простейшая изоляция транзакций
Большего однопользовательской БД и не нужно. Как правило, транзакции изолируются по принципу «записываем по одному» с помощью стандартных механизмов ОС наподобие блокировки файлов. Доступ к одному файлу из нескольких программ наладить можно: так, SQLite успешно работает в малонагруженных сайтах[6]. Но высокая нагрузка ему не по зубам.
Нет архивации и репликации БД
Встраиваемая БД надёжна настолько, насколько надёжна библиотека СУБД и файловая система, на которой база данных располагается. Известные встраиваемые СУБД, как правило, хорошо оттестированы,[8] а современные файловые системы очень надёжны. Тем не менее, есть множество способов потерять данные,[9] так что такие решения по надёжности уступают серверным СУБД.
Как правило, нет языковых средств, упрощающих доступ к БД
Специализированные СУБД-языки наподобие xBase обычно представляют собой симбиоз языка запросов и языка прикладного программирования. В языках программирования общего назначения правильность запроса будет проверена не при компиляции, а лишь тогда, когда запрос будет послан в СУБД. И, конечно же, на языке программирования общего назначения конструкции доступа к БД (как встраиваемой, так и клиент-серверной) будут тяжеловесными.
Впрочем, в C# есть язык запросов LINQ, который компилируется в комбинацию вызовов методов, а те, как правило, готовят обычный SQL.
Remove ads

Примеры

  • Accuracer Database System
  • Advantage Database Server
  • Oracle Berkeley DB
  • CSQL
  • EffiProz
  • ElevateDB
  • Empress Embedded Database
  • Extensible Storage Engine
  • eXtremeDB
  • Встраиваемая версия Firebird
  • HSQLDB
  • InfinityDB
  • Встраиваемая версия Informix Dynamic Server
  • Встраиваемая версия InnoDB
  • Встраиваемая версия InterBase
  • ITTIA DB
  • Kyoto Cabinet
  • Встраиваемая версия MySQL
  • NexusDB
  • RDM Embedded
  • ScimoreDB
  • SolidDB
  • SQLite
  • Microsoft SQL Server Compact
  • TurboDB
  • Valentina DB
  • VistaDB
Remove ads

Примечания

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads