Вбудовувані бази даних в java, easyjava

Вбудовувані бази даних в java, easyjava
Коли говорять про бази даних, найчастіше мають на увазі або enterprise монстрів, на кшталт Oracle або DB2, або поширені опенсорсний SQL бази, на кшталт MySQL або PostgreSQL. Всі ці бази мають свою нішу і своє призначення. І всі вони мають об'єднує їх недолік: вони великі і їх незручно поширювати.

Справді, в додаток регулярно хочеться мати якусь базу даних, до якої і вимог вообщем-то ніяких не висувається, ні по продуктивності, але по стійкості. Поширені рішення, подібні перерахованим вище, незручні тим, що вимагають додаткової установки і настройки. Добре б мати базу, яка поширюється прямо всередині програми. У світі C / C ++ існують SQLite і MySQL embedded, а в світі Java - бази даних, написані на pure java.

Pure java databases не так добре масштабуються, не надто швидко працюють і не так вже й багато функціоналу мають. З іншого боку, вони маленькі (в середньому додають 1-2 мегабайта до вашого додатком), вбудовуються прямо в додаток і мають можливість працювати з даними прямо в пам'яті. Типових областей застосування у таких баз даних декілька: заміна основній базі в інтеграційних тестах, власна база даних програми для внутрішніх данни, механізм обробки даних в додатку і т.д.

Найбільш поширені три java бази даних і кожну з них ми випробуємо.

  • Підтримується і вбудований режим роботи і окремий сервер. У вбудованому режимі підтримуються зовнішні з'єднання.
  • Підтримка баз в пам'яті і на диску, шифрування даних.
  • MVCC ідвофазні транзакції.
  • Вбудована консоль для доступу до бази.

Використовувати H2 в додатку вкрай просто: її досить додати в classpath і можна відразу підключатися до неї.

У embedded режимі jdbc url «jdbc: h2: / file» створює (або відкриває) базу даних «/ file» на диску. Jdbc url «jdbc: h2: mem: database» створює в пам'яті базу з ім'ям «database». Якщо параметр імені опустити, то буде створена анонімна база, до якої можна створити лише одне з'єднання. Для з'єднання з віддаленою базою, що працює в серверному режимі, в jdbc url слід вказувати ім'я сервера: «jdbc: h2: tcp: // server / file»

  • Підтримується і вбудований режим роботи і окремий сервер.
  • Найшвидша з java баз даних, за рахунок зменшення надійності
  • Три різні варіанти реалізації транзакцій.
  • Підтримка java в sql функціях і тригерах.
  • Підтримка csv файлів як джерел даних.

Так само як і H2, для використання досить додати в classpath і можна відразу підключатися:

  • Повна сумісність з IBM DB2 SQL
  • Підтримка повноцінного вбудованого сервера, який здатний приймати з'єднання з зовнішніх процесів, будучи запущеним всередині програми
  • Підтримка in-memory баз даних

Використання Apache Derby, по крайней мере, не складніше інших java баз даних: