WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

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

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

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

Особенности

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

Примеры

Примечания

  1. В частности, Skype использует SQLite для хранения баз переписки
  2. В частности, AIMP использует SQLite для хранения плей-листов
  3. В частности, XnView хранит в базе SQLite эскизы и тэги
  4. Пример API BerkeleyDB (англ.)
  5. Пример API SQLite (англ.)
  6. 1 2 Применение SQLite (англ.)
  7. 1 2 Чего нет в SQLite (англ.)
  8. Как тестируется SQLite (англ.)
  9. Как можно запортить таблицу SQLite (англ.)

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии