Вбудовувана СКБД

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

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

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

Особливості[ред. | ред. код]

Немає окремої програми-сервера.
Фізично вбудовувана СКБД є бібліотекою, яка статично або динамічно приєднується до основної програми. Програма та СКБД спілкуються не через мережеві сокети, а через спеціалізований програмний інтерфейс[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 [Архівовано 2012-12-20 у Wayback Machine.](англ.)
  6. а б Застосування SQLite [Архівовано 2012-12-20 у Wayback Machine.](англ.)
  7. а б Чого немає в SQLite [Архівовано 2012-12-20 у Wayback Machine.](англ.)
  8. Як тестується SQLite [Архівовано 2012-12-21 у Wayback Machine.](англ.)
  9. Як можна зіпсувати таблицю SQLite [Архівовано 2014-08-09 у Wayback Machine.](англ.)