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

Параметри Баз даних для digiKam можна змінити за шляхом Параметри ‣ Налаштувати digiKam… ‣ сторінка «База даних».

Примітка

For an introduction to internal data storage, please refer to the Database section of the Getting Started chapter.

База даних SQLite

SQLite is a relational database management system, written in the C programming library. SQLite is not directly comparable to client/server SQL database engines such as MySQL, Oracle or PostgreSQL. Rather, it is an SQL database engine that is embedded in an end program. SQLite reads and writes directly to ordinary disk files. SQLite is almost always the best solution for device-local storage with low write-concurrency and less than a terabyte of content. SQLite is fast and reliable and it requires no configuration or maintenance. It keeps things simple. SQLite «just works».

By default, digiKam uses SQLite as its back-end for storing important metadata and thumbnails. digiKam stores information into four SQLite files:

База даних

Назва файла

Ядро

digikam4.db

Мініатюри

thumbnails-digikam.db

Подібність

similarity.db

Обличчя

recognition.db

To keep your application running fast and smooth, you should periodically check and optimize your databases: select Tools ‣ Maintenance… and then Perform Database Cleaning. See the Database Cleaning section of the Maintenance Tools chapter for details.

The SQLite Browser, is a high quality and easy to use visual tool for managing database objects, that we highly recommend. For Ubuntu and its derivatives, it can be installed using sudo apt install sqlitebrowser. Then you can switch to the directory where the digiKam databases are stored in order to visualize the database contents.

Примітка

For best performance, store the digiKam databases on the fastest hardware (such as SSD or NVMe) with plenty of free space. This is especially important for the thumbnails database. A remote file system such as NFS cannot be used here. For performance and technical reasons, SQLite cannot use media from the network.

Файли баз даних 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 use has overtaken MySQL for a few basic reasons:

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

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

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

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

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

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

Примітка

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

Using MySQL as digiKam’s database back-end allows you to store the data on local as well as remote servers. MySQL Internal can be used to replace the local SQLite storage, and MySQL Server can be used on media stored on a remote server. This way, you can use multiple digiKam installations (for instance, on your notebook and PC) to access and manage your photo collections. You can also use MySQL tools to backup and analyze digiKam’s data.

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

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

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

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

digiKam tends to slow down when using a large collection (size greater than 100,000 items) hosted on a hard drive (HDD - not an SSD or NVMe device) with the SQLite database. To avoid the delay and maintain efficiency, digiKam provides the option of using MySQL Internal. To be clear, this isn’t an actual server, or a public network. Instead, it is a server that runs only while the application is running.

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

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

The internal server uses three MySQL Binary Tools: mysql_install_db, mysqladmin, and mysqld. You can configure their locations in the configuration dialog. digiKam will try to find these binaries automatically if they’re installed on your system.

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

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

Obviously, access to a MySQL server is required to use digiKam with a remote MySQL. Alternatively, you can install MariaDB, which serves the purpose well. (Could be installed easily using this link.)

Наведеними нижче настановами можна скористатися, якщо у вас немає окремого облікового запису користувача для доступу до баз даних і базу даних 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

Порада

If you have problems with a MySQL server on a Ubuntu based Linux system, execute this additional command in the mysql prompt to enable the creation of MySQL triggers.

SET global log_bin_trust_function_creators=1;

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

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

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

Set the Core Db Name field to the name of the first database that is used to store photo metadata.

Set the Thumbs Db Name field to the name of the second database that is used to store the wavelet-compressed thumbnails.

Set the Similarity Db Name field to the name of the third database that is used to store the similarity finger-prints produced by the fuzzy search engine.

Set the Face Db Name field to the name of the last database that is used to store the face histograms for facial recognition.

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

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

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

  • With a slow network, digiKam hangs a lot of the time, especially when the album contains many items (>1,000). This issue depends on network performances. For example, the problem has been reproducible using Wifi connections. Switching to Ethernet to solve the problem.

  • Крім того, якщо у вас величезна збірка зображень, вам слід запускати сервер 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).

Примітка

Refer the Digital Asset Management chapter for more details about media and data protection.

Also refer to the Collection Settings chapter for more details about how to configure your collections depending on your storage policy.

Важливо

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

If you use a common Remote server to host databases and collections, you must use the same digiKam version everywhere to prevent conflicts with database schema. Computers running different instantiations of digiKam cannot access a common database and collection at the same time.

If you use a common Remote server to host collections, with the databases stored on individual computers, then different versions of digiKam can be used and digiKam sessions can run at the same time, accessing the common collections. But you’ll need to take a care about concurrent accesses to file metadata, if you have turned this option on from the Metadata Setup page.

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

digiKam comes up with an exclusive tool named Database Migration, that allows users to migrate their data. For example, the migration tool can help you move all your data from a SQLite database into a MySQL database, or vice versa.

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

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

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

Примітка

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

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

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

Each database can be renamed with a different, unique name. This allows users to backup only what is needed. For instance, renaming Core database as digiKam_Core, allows you to backup only this database, which is the most important file. Thumbnails, Similarity and Face Recognition databases can always be regenerated from scratch.

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

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

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

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

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