Параметри баз даних¶
Параметри Баз даних для digiKam можна змінити за шляхом
.Примітка
Вступні зауваження щодо внутрішнього сховища даних наведено у розділі Бази даних вступної глави цього підручника.
База даних SQLite¶
SQLite є реляційною системою керування базами даних, роботу якої забезпечує бібліотека, написана мовою програмування C. SQLite не можна безпосередньо порівнювати із клієнт-серверними рушіями баз даних SQL, зокрема MySQL, Oracle або PostgreSQL. Це швидше вбудований рушій для роботи з базами даних SQL, тобто ця бібліотека просто вбудовується до кінцевої програми. SQLite читає і записує дані безпосередньо до звичайних файлів на диску. Для сховищ даних на локальних пристроях із низькою конкурентністю запису та менш ніж терабайтом даних, SQLite є майже завжди кращим рішенням. SQLite — швидка і надійна база даних, яка не потребує налаштовування або супроводу. Вона усе спрощує. SQLite «просто працює».
Типово, у digiKam для зберігання важливих метаданих і мініатюр використовується SQLite. digiKam зберігає дані у чотирьох файлах SQLite:
База даних
Назва файла
Ядро
digikam4.db
Мініатюри
thumbnails-digikam.db
Подібність
similarity.db
Обличчя
recognition.db
Щоб ваша програма працювала швидко та безпроблемно, вам слід періодично перевіряти та оптимізувати свої бази даних — виберіть пункт меню Очищення бази даних розділу «Інструменти обслуговування».
, а потім Виконати очищення бази даних. Додаткові відомості можна знайти у частиніSQLite Browser — це високоякісний і простий у використанні візуальний інструмент для керування об’єктами бази даних, який ми наполегливо рекомендуємо. Для Ubuntu та похідних від цієї системи його можна встановити за допомогою команди sudo apt install sqlitebrowser. Потім ви можете перейти до каталогу, де зберігаються бази даних digiKam, щоб візуалізувати вміст бази даних.
Примітка
Щоб удосконалити швидкодію, зберігайте бази даних digiKam на найшвидшому носії (наприклад SSD або NVMe) із достатнім обсягом вільного місця. Це особливо важливо для бази даних мініатюр. Не варто використовувати для таких баз даних віддалені файлові системи, зокрема NFS. З міркувань забезпечення швидкодії та технічних причин, які пов’язано із особливостями SQLite, не можна використовувати для баз даних мережеве сховище.
Файли баз даних SQLite можна знайти у вашій теці «Збірки», яку ви додали до digiKam (Типово, якщо вами додається збірка «Картинки», файли баз даних зберігатимуться у теці ~/Картинки
).
![](../_images/setup_database_sqlite.webp)
Сторінка налаштувань 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 надасть вам змогу зберігати дані на локальному або віддаленому сервері. Вбудованим сервером MySQL можна замінити локальне сховище SQLite, а віддаленим можна скористатися для зберігання даних на спільному комп’ютері у мережі. Ви зможете користуватися декількома екземплярами digiKam (наприклад на вашому ноутбуці та стаціонарному комп’ютері) для доступу і керування вашими збірками фотографій. Ви також зможете скористатися інструментами MySQL для створення резервних копій та аналізу даних digiKam.
Щоб перейти з використання баз даних SQLite на використання баз даних MySQL, виберіть пункт меню
і перейдіть до розділу База даних. Виберіть відповідну базу даних зі спадного списку.
Вбудована MySQL: за допомогою цього варіанта можна скористатися вбудованим сервером баз даних на вашій системі. Для встановлення з’єднань із базами даних digiKam використовуватиме сокет Unix.
Сервер MySQL: цим варіантом можна скористатися, якщо ваші дані зберігаються на віддаленому сервері, а ви на іншому комп’ютері користуєтеся доступом до збірки зображень.
Вбудований сервер MySQL¶
Робота digiKam значно уповільнюється, якщо ви користуєтеся великою збіркою зображень (яка складається з понад 100000 об’єктів), яка зберігається на жорсткому диску (HDD — не пристрої SSD або NVMe) у базі даних SQLite. Щоб усунути затримки і допомогти програмі працювати ефективніше, у digiKam передбачено можливість використання Вбудованої MySQL. Якщо бути точним, це насправді не сервер із доступною клієнтам мережею. Це такий сервер, який працює лише, якщо працює програма.
Внутрішній сервер створює окрему базу даних, доступ до якої (лише протягом роботи програми) можна отримати за допомогою такої команди:
mysql --socket=/home/[user_name]/.local/share/digikam/db_misc/mysql.socket digikam
Для роботи вбудований сервер використовує три виконуваних файли з MySQL — mysql_install_db
, mysqladmin
і mysqld
. Налаштувати розташування цих файлів можна за допомогою діалогового вікна налаштувань. digiKam намагатиметься автоматично виявити розташування цих виконуваних файлів, якщо їх встановлено у системі.
![](../_images/setup_database_mysqlinternal.webp)
Сторінка внутрішніх налаштувань 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 виберіть пункт меню
і у розділі «База даних» виберіть сервер MySQL у спадному списку.![](../_images/setup_database_remotemysql.webp)
Сторінка налаштувань віддаленого сервера 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 для роботи зі збірками можна запускати одночасно. Втім, якщо ви вмикаєте запис метаданих до файлів на сторінці налаштувань метаданих, слід подбати про усування можливих конфліктів, пов’язаних із одночасним доступом до одного файла з різних комп’ютерів.
Перенесення бази даних¶
digiKam постачається із інструментом Перенесення баз даних, за допомогою якого користувачі можуть переносити свої дані. Наприклад, інструмент перенесення може допомогти вам перенести дані з формату SQLite до формату MySQL, і навпаки.
Щоб перейти на іншу систему роботи з базами даних, скористайтеся пунктом меню
. У відповідь буде відкрито таке діалогове вікно:![](../_images/setup_database_migration.webp)
Засіб перенесення бази даних у digiKam¶
Тепер виберіть відповідні типи баз даних, дані з яких ви хочете перетворити. Нарешті, натисніть кнопку Перенести, щоб перетворити дані бази даних з формату SQLite на формат MySQL (або навпаки). Тривалість дії залежить від розміру бази даних.
Примітка
Під час перетворення буде перенесено лише дані основної бази даних digiKam. Усі інші бази даних доведеться перебудувати на кроці остаточної обробки за допомогою засобів супроводу. Бази даних мініатюр та подібності доведеться створити наново, а для бази даних облич слід позначити пункт Вилучити і повторно створити всі тренувальні дані.
Рекомендації щодо резервного копіювання баз даних¶
З міркувань захисту даних планування резервного копіювання баз даних за допомогою crontab і мережі може запобігти втраті даних у разі відмови пристрою. Для резервного копіювання можна також скористатися NAS або зовнішніми диском.
Назву кожної бази даних може бути змінено на іншу, унікальну назви. Використання цієї назви надає змогу користувачу створювати резервну копію лише потрібних йому даних. Наприклад, якщо назвати основну базу даних «digiKam_Core», можна створювати резервні копії відповідної таблиці (найважливіших даних). Бази даних мініатюр та розпізнавання облич завжди можна створити на основі початкових зображень, тому їхня втрата не є критичною.
У розділі «Засіб обслуговування» наведено пояснення щодо обслуговування вмісту баз даних і синхронізування даних збірок із базами даних і навпаки.
Статистика бази даних¶
У digiKam передбачено унікальний інструмент для показу статистичних даних щодо збірки. Можна отримати дані щодо кількості зображень, відео (із розподілом за форматами зображень), міток тощо. Крім того, інструмент надає дані щодо модуля роботи із базою даних (QSQLITE або QMYSQL) та розташування файла бази даних (місця, де зберігаються дані вашої збірки).
Переглянути статистичні дані щодо роботи бази даних можна за допомогою пункту меню
. У відповідь буде показано приблизно таке діалогове вікно:![](../_images/setup_database_statistics.webp)
Вікно статистики щодо бази даних у digiKam¶