Вбудовувана система керування базами даних — архітектура систем керування базами даних, коли СКБД тісно пов'язана з застосунком і працює на тому ж комп'ютері, не потребуючи професійного адміністрування.

Вбудовувані СКБД застосовують у багатьох програмах, які зберігають великі масиви даних без потреби доступу з багатьох комп'ютерів: поштових клієнтах та месенджерах (бази листування)Зокрема, Skype використовує SQLite для зберігання баз листування, медіапрогравачах (плей-листи та обкладинки)Зокрема, AIMP використовує SQLite для зберігання плей-лістів, переглядачах зображень (метадані та зменшені ескізи)Зокрема, XnView зберігає в базі SQLite ескізи та теги, різні локальні БД на кшталт телефонних довідників і геоінформаційних систем (надавані дані) тощо.

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

Особливості

Немає окремої програми-сервера. Фізично вбудовувана СКБД є бібліотекою, яка статично або динамічно приєднується до основної програми. Програма та СКБД спілкуються не через мережеві сокети, а через спеціалізований програмний інтерфейсПриклад API BerkeleyDBПриклад API SQLite . У цьому, щоправда, є й недолік: найчастіше програміст сам повинен не допускати багатопотокової гонитви.

Висока швидкість і мала витрата пам'яті, особливо на довгих рядках та BLOBах. Завдяки спеціалізованому API кількість операцій читання-запису є мінімальною.

Найчастіше невеликий за мірками БД максимальний розмір бази. Від одиниць гігабайт (обсяг пам'яті ПК на 2012) до одиниць терабайт (порядку обсягу жорсткого диска). Наприклад, SQLite завжди містить у пам'яті зміст БД (аналог таблиці розміщення файлів), цим обмежується обсяг БДЗастосування SQLite .

Як правило, спеціалізована мова запитів або неповна сумісність із SQL-92. Часто для продуктивності розробники реалізують або неповний SQL (SQLite),Чого немає в SQLite або спеціалізовану мову запитів (BerkeleyDB). До того ж вбудовувані СУБД можуть діяти зовсім за іншим принципом, ніж клієнт-серверні: пінг до БД нульовий, і запит можна виконувати частинами, декількома зверненнями до СУБД.

Як правило, немає прав користувача; найпростіша ізоляція транзакцій. Більшого однокористувацькій БД і не потрібно. Як правило, транзакції ізолюються за принципом «записуємо по одному» за допомогою стандартних механізмів ОС на кшталт блокування файлів. Доступ до одного файлу з кількох програм можна налагодити: так, SQLite успішно працює в малонавантажених сайтах. Але високе навантаження йому не під силу.

Як правило, немає архівації та реплікації БД. Вбудована БД надійна настільки, наскільки надійна бібліотека СКБД і файлова система, де розташовано базу даних. Відомі вбудовувані СКБД, як правило, добре відтестовані,Як тестується SQLite а сучасні файлові системи дуже надійні. Разом з тим, є безліч способів втратити дані,Як можна зіпсувати таблицю SQLite тому такі рішення щодо надійності поступаються серверним СКБД.

Як правило, немає мовних засобів, які спрощують доступ до БД. Спеціалізовані СКБД-мови на зразок xBase зазвичай є симбіозом мови запитів і мови прикладного програмування. У мовах програмування загального призначення правильність запиту буде перевірено не під час компіляції, а лише тоді, коли запит буде надіслано в СКБД. І, звичайно ж, мовою програмування загального призначення конструкції доступу до БД (як вбудованої, так і клієнт-серверної) будуть «важкими». Втім, у C# є мова запитів LINQ, яка компілюється в комбінацію викликів методів, а ті, як правило, готують звичайний SQL.

Приклади

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

Примітки