Параметри бази даних

Примітка

Вступні зауваження щодо внутрішнього сховища даних наведено у розділі Вступ до баз даних digiKam.

База даних Sqlite

SQLite є реляційною системою керування базами даних, роботу якої забезпечує бібліотека, написана мовою програмування C. SQLite не можна безпосередньо порівнювати із клієнт-серверними рушіями баз даних SQL, зокрема MySQL, Oracle або PostgreSQL. Це швидше вбудований рушій для роботи з базами даних SQL, тобто ця бібліотека просто вбудовується до кінцевої програми. SQLite читає і записує дані безпосередньо до звичайних файлів на диску. Для сховищ даних на локальних пристроях із низькою конкурентністю запису та менш ніж терабайтом даних, SQLite є майже завжди кращим рішенням. SQLite — швидка і надійна база даних, яка не потребує налаштовування або супроводу. Вона усе спрощує. SQLite «просто працює».

Типово, у digiKam для зберігання важливих метаданих і мініатюр використовується SQLite. Трьома файлами SQLite, які використовуються для зберігання даних є відповідно:

База даних

Назва файла

Ядро

digikam4.db

Мініатюри

thumbnails-digikam.db

Подібність

similarity.db

Обличчя

recognition.db

Для забезпечення швидкої і безперебійної роботи програми рекомендуємо вам час від часу виконувати перевірку і оптимізацію баз даних. Зробити це можна за допомогою пункту меню Інструменти ‣ Супровід… так кроку Виконати чищення бази даних. Докладніший опис наведено у розділі щодо інструмента супроводу. Рекомендованим засобом супроводу є SQLite Browser, — високоякісний і простий у користуванні засіб керування об’єктами бази даних. Для Ubuntu та похідних дистрибутивів його можна встановити за допомогою команди sudo apt install sqlitebrowser. Після цього ви можете перейти до каталогу, у якому зберігаються бази даних і переглянути їхній вміст.

Примітка

Для бази даних мініатюр варто скористатися швидким диском (наприклад SSD або NVMe) із достатнім обсягом вільного місця. Не варто використовувати для таких баз даних віддалені файлові системи, зокрема NFS. З міркувань забезпечення швидкодії та технічних причин, які пов’язано із особливостями SQLite, не можна використовувати для баз даних мережеве сховище.

Файли баз даних SQLite можна знайти у вашій теці «Збірки», яку ви додали до digiKam (Типово, якщо вами додається збірка «Картинки», файли баз даних зберігатимуться у теці ~/Картинки).

Сторінка налаштувань SQLite у digiKam

Режим WAL SQLite є дуже важливим. Рекомендуємо вам увімкнути його для великих баз даних для оптимізації передавання даних та збільшення швидкодії.

База даних MySQL

MySQL чи SQLite

MySQL — система керування реляційними базами даних з відкритим кодом, написана мовами програмування C та C++. Першу версію MySQL було створено Майклом Віденіусом (Michael Widenius) і Девідом Ексмарком (David Axmark) у 1994 році. У 2008 році MySQL було придбано компанією Sun Microsystems, яку згодом у 2010 році було придбано компанією Oracle in 2010. Поточні версії MySQL можуть працювати майже на будь-яких програмних платформах (Linux, Microsoft Windows, OS X, SunOS …).

Сервер MariaDB — відгалуження у розробці сервера MySQL, розвиток якого здійснює спільнота розробників. Розпочата основними розробниками із початкової команди розробників MySQL, MariaDB активно працює із зовнішніми розробниками з метою створення сервера SQL із найширшими можливостями, найліпшою стабільністю та найліпшими умовами ліцензування у індустрії.

MariaDB фактично замінює MySQL через декілька основних причин:

  • Розробка MariaDB є відкритішою та активнішою.

  • Більше найновіших можливостей.

  • Більше рушіїв зберігання даних.

  • Вища швидкодія.

  • Сумісність і простота у перенесенні даних.

Крім того, у digiKam передбачено підтримку популярного рушія роботи із базами даних MySQL. Звичайно ж, у вас може виникнути питання: «Навіщо переходити на MySQL, якщо SQLite вже добре виконує усі завдання з керування даними?» Використання MySQL як модуля роботи з базами даних digiKam має багато переваг, зокрема, якщо у збірці понад 100000 записів. При роботі з такими великими збірками у SQLite є проблеми з латентністю, які уповільнюють роботу програми.

Примітка

Якщо увімкнено WAL, SQLite можна без проблем користуватися для баз даних із понад 100000 записами, особливо, якщо користуватися для зберігання даних SSD або NVMe. Ця база даних може бути навіть швидшою і стабільнішою за MySQL. Див. цю сторінку, щоб дізнатися технічні подробиці.

Використання MySQL як модуля роботи з базами даних digiKam надасть вам змогу зберігати дані на локальному або віддаленому сервері. Локальним сервером можна замінити локальне сховище SQLite, а віддаленим можна скористатися для зберігання даних на спільному комп’ютері у мережі. Ви зможете користуватися декількома екземплярами digiKam (наприклад на вашому ноутбуці та стаціонарному комп’ютері) для доступу і керування вашими збірками фотографій. Ви також зможете скористатися інструментами MySQL для створення резервних копій та аналізу даних digiKam.

Щоб перейти з використання баз даних SQLite на використання баз даних MySQL, виберіть пункт меню Параметри ‣ Налаштувати digiKam… і перейдіть до розділу База даних. Виберіть відповідну базу даних зі спадного списку.

  • Вбудована MySQL: за допомогою цього варіанта можна скористатися вбудованим сервером баз даних на вашій системі. Для встановлення з’єднань із базами даних digiKam використовуватиме сокет Unix.

  • Сервер MySQL: цим варіантом можна скористатися, якщо ваші дані зберігаються на віддаленому сервері, а ви на іншому комп’ютері користуєтеся доступом до збірки зображень.

Вбудований сервер MySQL

Якщо ви користуєтеся великою збіркою зображень, яка зберігається на жорсткому диску (HDD — не пристрої SSD або NVMe) і складається з понад 100000 об’єктів, робота програми може значно уповільнитися. Щоб усунути затримки і допомогти програмі працювати ефективніше, у digiKam передбачено можливість використання Вбудованої MySQL. Якщо бути точним, це насправді не сервер із доступною клієнтам мережею. Це такий сервер, який працює лише, якщо працює програма.

Внутрішній сервер створює окрему базу даних, доступ до якої (лише протягом роботи програми) можна отримати за допомогою такої команди:

mysql --socket=/home/[user_name]/.local/share/digikam/db_misc/mysql.socket digikam

Для роботи вбудований сервер використовує три виконуваних файли з MySQL — mysql_install_db, mysqladmin і mysqld. Налаштувати розташування цих файлів можна за допомогою діалогового вікна налаштувань. digiKam намагатиметься автоматично виявити розташування цих виконуваних файлів, якщо їх встановлено у системі.

Сторінка внутрішніх налаштувань MySQL у digiKam

Віддалений сервер MySQL

Звичайно ж, для використання digiKam з віддаленим MySQL, вам потрібен сервер MySQL або сервер MariaDB, яким також можна скористатися (Встановити такий сервер доволі просто, якщо скористатися цим посиланням.)

Наведеними нижче настановами можна скористатися, якщо у вас немає окремого облікового запису користувача для доступу до баз даних і базу даних digiKam вже налаштовано. Віддайте такі команди на сервері MySQL (замінивши пароль на відповідний):

Примітка

Ви можете вибрати будь-яку назву бази даних. (У нашому прикладі «digikam».) Просто не забудьте правильно заповнити назви баз даних у полях основної бази даних та баз даних мініатюр, подібності і облич у діалоговому вікні, зразок якого наведено нижче.

CREATE USER ''@'%' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO ''@'%' IDENTIFIED BY 'password';
CREATE DATABASE digikam;
GRANT ALL PRIVILEGES ON digikam.* TO ''@'%';
FLUSH PRIVILEGES;

Примітка

Якщо у вас величезна збірка зображень, рекомендуємо вам запускати сервер MySQL за допомогою такої команди: mysql –max_allowed_packet = 128M

Порада

Якщо у вас виникають проблеми з сервером MySQL у заснованих на Ubuntu системах Linux, скористайтеся додатковою командою у запиті mysql, щоб мати змогу створювати перемикачі MySQL.

SET global log_bin_trust_function_creators=1;

Після цього у digiKam виберіть пункт меню Параметри ‣ Налаштувати digiKam… і у розділі «База даних» виберіть сервер MySQL у спадному списку.

Сторінка налаштувань віддаленого сервера Mysql у digiKam

Введіть IP-адресу вашого сервера MySQL до поля Назва вузла і вкажіть правильний номер порту у полі Порт вузла (типовим номером порту є 3306).

У полі Назва основної бази даних вкажіть назву першої бази даних, де зберігатимуться метадані фотографій.

Назву другої бази даних, де зберігатимуться стиснені за допомогою вейвлетів мініатюри зображень, вкажіть у полі Назва бази даних мініатюр.

Третю базу даних призначено для зберігання відбитків подібності, які використовує рушій нечіткого пошуку. Для визначення скористайтеся полем Назва бази даних подібності.

Останню базу даних призначено для зберігання гістограм облич з метою їхнього розпізнавання. Для визначення назви бази даних скористайтеся пунктом «Назва бази даних облич».

Щоб встановити безпечне з’єднання із віддаленим сервером, вкажіть ваші параметри розпізнавання MySQL за допомогою полів Користувач і Пароль.

Щоб перевірити, чи працює база даних належним чином, натисніть кнопку Перевірити з’єднання. Якщо все працює як слід, перемкніться до розділів збірок і додайте каталоги, які містять ваші фотографії. Натисніть кнопку Гаразд і зачекайте, доки digiKam заповнить бази даних даними фотографій. Заповнення може бути доволі тривалим, якщо у вас багато фотографій.

Забезпечити найкращі результати у використанні віддаленого сервера баз даних MySQL допоможуть наші підказки і рекомендації.

Якщо мережа працює повільно, digiKam витрачатиме багато часу на обробку запитів, зокрема якщо у альбомі багато записів (>1000). Викладені рекомендації працюватимуть лише у швидкій мережі. Якщо користуватися, наприклад, Wifi, можуть виникнути проблеми. Перехід на Ethernet усуває ці проблеми.

Крім того, якщо у вас величезна збірка зображень, вам слід запускати сервер MySQL за допомогою такої команди: mysql –max_allowed_packet = 128M. (Якщо ви добре знаєтеся на користуванні MySQL, ви також можете змінити параметри роботи сервера за допомогою файла my.ini або ~/.my.cnf.)

Попередження

Локаль, яку використано у сервері Mysql має збігатися із локаллю комп’ютера, де запущено digiKam, щоб запобігти проблемі зі збереженням подвійних значень у таблицях бази даних.

Параметри бази даних

Нижче наведено короткі рекомендації щодо правильного типу бази даних, залежно від умов користування.

Сховище даних

Тип

Записи

Помітки

HDD

SQLite

< 100000

Попередження: WAL є обов’язковим.

HDD

Вбудований MySQL

> 100000

SSD

SQLite

WAL є необов’язковим.

SSD

Вбудований MySQL

NVME

SQLite

WAL є необов’язковим.

NVME

Вбудований MySQL

Портативне

SQLite

< 100000

Попередження: обов’язково WAL. Мінімум USB 3.1 з диском NVMe.

Портативне

Вбудований MySQL

> 100000

Попередження: мінімум USB 3.1 з диском NVMe.

Мережева ФС

SQLite

Заборонено: бази даних SQLite мають зберігатися у локальній файловій системі.

Мережева ФС

Вбудований MySQL

Заборонено: бази даних MySQL мають зберігатися у локальній файловій системі.

Віддалене

Сервер MySQL

Передбачено підтримку сервера MariaDB. Рекомендовано користуватися гігабітним Ethernet або ширшим каналом.

HDD

Жорсткий диск.

SSD

Твердотільний накопичувач для зберігання даних.

NVMe

Енергонезалежна пам’ять.

Портативне

Зовнішній HDD/SSD/NVMe з інтерфейсом USB.

Мережева ФС

Мережева файлова система, яку змонтовано локально.

Віддалене

Сервер мережі, як NAS (Network Attached Storage).

WAL

Write-Ahead Lock («блокування до запису», лише база даних SQLite).

Примітка

Докладніші відомості щодо носіїв даних та захисту даних можна знайти у розділі щодо керування цифровою власністю.

Див. також розділ щодо параметрів збірки, щоб дізнатися більше про спосіб налаштовування ваших збірок, залежно від правил зберігання даних.

Важливо

Якщо ви спільно використовуєте той самий портативний носій даних для зберігання баз даних і/або збірок для різних комп’ютерів, вам слід користуватися операційними системами одного типу, тими самими шляхами монтування (користуйтеся символічними посиланнями для зміни цих шляхів) та тією самою версією digiKam усюди, щоб запобігти конфліктам у схемах баз даних.

Якщо ви користуєтеся загальним віддаленим сервером для зберігання баз даних і збірок, вам слід використовувати скрізь одну версію digiKam, щоб запобігти конфліктам у схемах баз даних. Не можна використовувати одночасно різні комп’ютери з digiKam для роботи зі збірками.

Якщо ви використовуєте спільний віддалений сервер для зберігання збірок, а бази даних зберігаються на різних комп’ютерах, можна використовувати різні версії digiKam, а сеанси digiKam для роботи зі збірками можна запускати одночасно. Втім, якщо ви вмикаєте запис метаданих до файлів на сторінці налаштувань метаданих, слід подбати про усування можливих конфліктів, пов’язаних із одночасним доступом до одного файла з різних комп’ютерів.

Перенесення бази даних

Програма з керування зображеннями постачається із інструментом Перенесення баз даних, за допомогою якого користувачі можуть переносити свої дані. Припустімо, ви користуєтеся SQLite і хочете перенести ваші дані до бази даних MySQL. У цьому вам допоможе інструмент перенесення. Він допоможе вам переносити дані з формату SQLite до формату MySQL, і навпаки.

Щоб перейти на іншу систему роботи з базами даних, скористайтеся пунктом меню Параметри ‣ Перенесення бази даних. У відповідь буде відкрито таке діалогове вікно:

Засіб перенесення бази даних у digiKam

Тепер виберіть відповідні типи баз даних, дані з яких ви хочете перетворити. Нарешті, натисніть кнопку Перенести, щоб перетворити дані бази даних з формату SQLite на формат MySQL (або навпаки). Тривалість дії залежить від розміру бази даних.

Примітка

Під час перетворення буде перенесено лише дані основної бази даних digiKam. Усі інші бази даних доведеться перебудувати на кроці остаточної обробки за допомогою засобів супроводу. Бази даних мініатюр та подібності доведеться створити наново, а для бази даних облич слід позначити пункт Вилучити і повторно створити всі тренувальні дані.

Рекомендації щодо резервного копіювання баз даних

З міркувань захисту даних планування резервного копіювання баз даних за допомогою crontab і мережі може запобігти втраті даних у разі відмови пристрою. Для резервного копіювання можна також скористатися NAS або зовнішніми диском.

У кожної бази даних може бути власна назва, не лише «digikam». Використання цієї назви надає змогу користувачу створювати резервну копію лише потрібних йому даних. Наприклад, якщо назвати основну базу даних «digiKam_Core», можна ізолювати відповідну таблицю (найважливіші дані). Бази даних мініатюр та розпізнавання облич завжди можна створити на основі початкових зображень, тому їхня втрата не є критичною.

У розділі «Засіб обслуговування» наведено пояснення щодо обслуговування вмісту баз даних і синхронізування даних збірок із базами даних і навпаки.

Статистика бази даних

У digiKam передбачено унікальний інструмент для показу статистичних даних щодо збірки. Можна отримати дані щодо кількості зображень, відео (із розподілом за форматами зображень), міток тощо. Крім того, інструмент надає дані щодо модуля роботи із базою даних (QSQLITE або QMYSQL) та розташування файла бази даних (місця, де зберігаються дані вашої збірки).

Переглянути статистичні дані щодо роботи бази даних можна за допомогою пункту меню Довідка ‣ Статистика бази даних…. У відповідь буде показано приблизно таке діалогове вікно:

Вікно статистики щодо бази даних у digiKam