Database-instellingen

De opties voor Database voor digiKam worden gezet in Instellingen ‣ digiKam configureren… ‣ Pagina Database.

Notitie

Voor een introductie over de interne opslag van gegevens, ga naar de sectie Databases van het hoofdstuk Beginnen.

De SQLite-database

SQLite is een beheersysteem voor een relationele database, geschreven in de C programmeerbibliotheek. SQLite is niet direct te vergelijken met client/server SQL database-engines zoals MySQL, Oracle of PostgreSQL. Het is echter een ingebedde SQL database-engine, die ingebed is in een eindprogramma. SQLite leest en schrijft direct uit/naar gewone bestanden op een schijf. SQLite is bijna altijd de beste oplossing voor lokale opslag op een schijf met laag gelijktijdig schrijven en minder dan een terabyte aan inhoud. SQLite is snel en betrouwbaar en vereist geen configuratie of onderhoud. Het houdt de zaken eenvoudig. SQLite “werkt gewoon”.

digiKam gebruikt standaard SQLite als zijn back-end voor het opslaan van belangrijke metagegevens en miniaturen. digiKam slaat informatie op in vier SQLite-bestanden:

Database

Bestandsnaam

Kern

digikam4.db

Miniaturen

thumbnails-digikam.db

Gelijkenissen

similarity.db

Gezichten

recognition.db

Om uw toepassing snel en soepel uit te voeren zou u periodiek uw databases moeten controleren en optimaliseren: selecteer Hulpmiddelen ‣ Onderhoud… en dan Database opschonen uitvoeren. Zie de sectie Database opschonen van het hoofdstuk Hulpmiddelen voor onderhoud voor details.

De SQLite-browser, is een visueel hulpmiddel van hoge kwaliteit en gemakkelijk te gebruiken voor beheren van objecten in de database, die we zeer aanbevelen. Voor Ubuntu en zijn afgeleiden, kan deze geïnstalleerd worden met sudo apt install sqlitebrowser. Daarna kunt u omschakelen naar de map waar de digiKam databases is opgeslagen om de inhoud van de database te visualiseren.

Notitie

Voor de beste prestaties, sla de digiKam-databases op op de snelste hardware (zoals een SSD of NVMe) met ruim genoeg vrije ruimte. Dit is speciaal belangrijk voor de miniaturendatabase. Een bestandssysteem op afstand, zoals NFS, kan hier niet gebruikt worden. Vanwege redenen van prestatie en techniek, kan SQlite geen media in het netwerk gebruiken.

De SQLite databasebestanden zijn te vinden in de map verzameling, die u hebt toegevoegd aan digiKam. (Standaard, als u uw “Afbeeldingen” verzameling hebt toegevoegd, zullen de database bestanden aanwezig zijn in de map ~/Afbeeldingen).

De configuratiepagina van SQLite van digiKam

De modus WAL van SQLite is een erg belangrijke optie die we u aanbevelen om aan te zetten met grote databases om transacties te optimaliseren en prestaties te verbeteren.

De MySQL-database

MySQL Versus SQLite

MySQL is een open-source, relationele database beheersysteem, geschreven in C en C++. Oorspronkelijke ontwikkeling van MySQL door Michael Widenius en David Axmark in het begin van 1994. Sun Microsystems verkreeg MySQL in 2008, die later door Oracle in 2010 werd verkregen. MySQL werkt nu op bijna alle systeemplatforms (Linux, Microsoft Windows, OS X, SunOS …).

MariaDB server is een door een gemeenschap ontwikkelde afsplitsing van MySQL server. Gestart door kernleden van het originele MySQL team, werkt MariaDB actief met buitenstaande ontwikkelaars om de meest functionele, stabiele en van een gezonde licentie voorziene, open SQL server in the industrie te leveren.

MariaDB heeft het gebruiken van MySQL overgenomen, vanwege een paar basis redenen:

  • De ontwikkeling van MariaDB is meer open en levenslustig.

  • Meer vernieuwende functies.

  • Meer opslag-engines.

  • Betere performance.

  • Compatibel en gemakkelijk te migreren.

digiKam biedt ook ondersteuning voor de populaire MySQL database engine. Natuurlijk kunt u zich afvragen waarom u om zou willen schakelen naar MySQL wanneer SQLite al goed de gegevens kan beheren? MySQL biedt vele voordelen voor het opslaan van gegevens van digiKam, speciaal bij verzamelingen met meer dan 100.000 items. Met zulke grote verzamelingen, introduceert SQLite latency die de toepassing vertraagt.

Notitie

Met de optie WAL ingeschakeld kan SQLite gemakkelijk gebruikt worden voor meer dan 100.000 items speciaal met een SSD- of NVMe-opslag. Het zou zelfs sneller moeten zijn dan MySQL en stabieler. Zie deze pagina voor technische details.

Met MySQL als de database back-end voor digikam bent u in staat om de gegevens zowel lokaal als op servers op afstand op te slaan. MySQL Internal kan gebruikt worden om de lokale SQLite opslag te vervangen en MySQL Server kan gebruikt worden op media opgeslagen op een server op afstand. Op deze manier kunt u meerdere digiKam installaties (bijvoorbeeld, op uw notebook en PC) gebruiken om toegang te hebben tot en beheren van uw fotoverzamelingen. U kunt ook MySQL hulpmiddelen gebruiken om een backup te maken van en de gegevens van digiKam te analyseren.

Om om te schakelen van SQLite naar de MySQL database, ga naar Instellingen ‣ digiKam configureren… en dan onder de sectie Database, selecteert u een database uit het afrolmenu.

  • MySQL intern: dit stelt u in staat om een interne databaseserver te gebruiken op uw systeem. digiKam gebruikt Unix socket voor de verbinding.

  • MySQL-server: gebruik dit als uw gegevens op een server op afstand zijn en u op een andere machine probeert toegang te krijgen tot de verzameling.

De MySQL interne server

digiKam heeft de tendens om langzamer te gaan bij gebruik van een grote verzameling (grootte meer dan 100.000 items) opgeslagen op een vaste schijf (HDD - geen SSD of NVMe apparaat) met de SQLite-database. Om de vertraging te vermijden en efficiency te handhaven, biedt digiKam de optie van het gebruik van de **MySQL Internal. Ter verduidelijking, dit is geen echte server of een publiek netwerk. In plaats daarvan is het een server die alleen actief is wanneer de toepassing actief is.

Interne server maakt een aparte database aan met toegang (alleen terwijl de toepassing actief is) met het commando:

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

De interne server gebruikt drie MySQL binaire hulpmiddelen: mysql_install_db, mysqladmin`en :file:`mysqld. U kunt hun locaties instellen in de configuratiedialoog. digiKam zal proberen deze binaire bestanden automatisch te vinden als ze geïnstalleerd zijn op uw systeem.

De configuratiepagina voor de interne MySQL van digiKam

De MySQL server op afstand

Voor toegang tot een MySQL server op afstand is het natuurlijk vereist digiKam te gebruiken met een MySQL-server. Als alternatief kunt u ook MariaDB installeren, die het doel goed dient. (Kan gemakkelijk geïnstalleerd worden via deze koppeling.)

Volg de onderstaande instructies, als u geen specifiek gebruikersaccount hebt en een digiKam database al is ingesteld. Voer de commando’s uit op de MySQL server, na vervanging van het wachtwoord door het juiste.

Notitie

U kunt elke databasenaam selecteren. (Hier is het, digikam). U dient eenvoudig de juiste naam in te vullen in de databasenaam voor die van Kern, Miniaturen en Gezicht in het onderstaande dialoogvak.

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

Notitie

Als u een enorme verzameling hebt, dan bevelen wij u aan de MySQL server te starten met mysql –max_allowed_packet = 128M

Tip

Als u problemen hebt met een MySQL-server op een op Ubuntu gebaseerd Linux systeem, gebruik dit additionele commando in de mysql-prompt om het maken MySQL-triggers in te schakelen.

SET global log_bin_trust_function_creators=1;

Ga nu, in digiKam, naar Instellingen ‣ digiKam configureren… en dan onder de sectie Database, selecteer MySQL-server uit het afrolmenu.

De configuratiepagina voor MySQL op afstand van digiKam

Voer het IP-adres van uw MySQL-server in in het veld Hostnaam en specificeer de juiste poort in het veld Host-poort (de standaard poort is 3306).

Zet in het veld Kern Db-naam de naam in van de eerste database die wordt gebruikt voor opslag van metagegevens van foto’s.

Zet in het veld Miniaturen Db-naam de naam in van de tweede database die wordt gebruikt voor opslag van wavelet-gecomprimeerde miniaturen.

Zet in het veld Gelijkenissen Db Name de naam van de derde database die wordt gebruikt om de gelijkenissen vingerafdrukken, geproduceerd door de vaag zoeken-engine.

Zet in het veld Gezichten Db-naam de naam van de laatste database die wordt gebruikt voor de opslag van de gezichtshistogrammen voor gezichtsherkenning.

Om veilig te verbinden met de server op afstand, voer uw MySQL identificatie in met de velden Gebruiker en Wachtwoord.

Om te controleren of de databaseverbinding juist werkt, druk op de knop Verbinding controleren. Als alles werkt zoals het zou moeten, schakel dan om naar de secties Verzamelingen en voeg de mappen met uw foto’s toe. Druk op OK en wacht totdat digiKam de databases vult met gegevens uit uw foto’s. Dit kan even duren als u veel items hebt om te registreren in de database.

Er zijn enige tips en aanbevelingen om het beste resultaat te krijgen met een externe MySQL databaseserver.

  • Met een langzaam netwerk hangt digiKam vaak speciaal wanneer de albums veel items (>1000) bevatten. Deze probleem hangt af van netwerkprestaties. Het probleem was bijvoorbeeld reproduceerbaar met gebruik van een Wifi-verbinding. Overschakelen naar ethernet moet het probleem oplossen.

  • Ook, als u een enorme verzameling hebt, dan zou u de MySQL server moeten starten met mysql –max_allowed_packet = 128M. (Als u goed bekend bent met het gebruik van MySQL, dan kunt u ook uw instellingen in bestand :file`my.ini` of ~/.my.cnf wijzigen).

Waarschuwing

De taalcode gebruikt in de Mysql server moet hetzelfde zijn als de taalcode van de computer gebruikt om digiKam uit te voeren om problemen te voorkomen met de gemeenschappelijke waarden opgeslagen in de tabellen van de database.

Criteria voor het type database

Zie het onderstaande overzicht om het juiste type database te kiezen afhankelijk van uw gebruik.

Opslag

Type

Items

Opmerkingen

HDD

SQLite

< 100K

Waarschuwing: WAL is verplicht.

HDD

MySQL-intern

> 100K

SSD

SQLite

WAL is optioneel.

SSD

MySQL-intern

NVME

SQLite

WAL is optioneel.

NVME

MySQL-intern

Verwijderbaar

SQLite

< 100K

Waarschuwing: WAL verplicht. USB 3.1 is minimum met NVMe-station.

Verwijderbaar

MySQL-intern

> 100K

Waarschuwing: USB 3.1 is minimaal met NVMe-station.

Netwerk-FS

SQLite

Verboden: SQLite databases moeten opgeslagen worden op een lokaal bestandssysteem.

Netwerk-FS

MySQL-intern

Verboden: MySQL databases moeten opgeslagen worden op een lokaal bestandssysteem.

Op afstand

MySQL-server

MariaDB-server wordt ondersteund. Gigabit ethernet of hoger is aanbevolen.

HDD

Vaste schijf.

SSD

Solid State Drive.

NVMe

Niet-vluchtig geheugen.

Verwijderbaar

Externe USB HDD/SSD/NVMe station.

Netwerk-FS

Netwerkbestandssysteem lokaal aangekoppeld.

Op afstand

Netwerkserver zoals NAS (Network Attached Storage).

WAL

Write-Ahead Lock (alleen SQLite database).

Notitie

Kijk in hoofdstuk Digital Asset Management voor meer details over media en gegevensbescherming.

Zie ook het hoofdstuk Verzamelingeninstellingen voor meer details over hoe uw verzamelingen te configureren afhankelijk van uw opslagbeleid.

Belangrijk

Als u dezelfde Verwijderbare media gebruikt voor databases en/of verzamelingen op te slaan tussen verschillende computers, dan moet u hetzelfde soort besturingssysteem hebben, overal dezelfde aankoppelpaden (gebruik symbolische koppelingen om paden te vinden) en overal dezelfde versie van digiKam om conflicten met het schema van de database te vermijden.

Als u een gemeenschappelijke server Op afstand gebruikt om databases en verzamelingen op te slaan, dan moet u overal dezelfde versie van digiKam gebruiken om conflicten met het schema van de database te vermijden. Computers die verschillende exemplaren van digiKam uitvoeren kunnen niet tegelijk toegang hebben tot een gemeenschappelijke database en verzamelingen.

Als u een gemeenschappelijke server Op afstand gebruikt om verzamelingen op te slaan, met de databases op individuele computers, dan kunnen verschillende versies van digiKam gebruikt worden en digiKam sessies kunnen tegelijk werken op de gemeenschappelijke verzamelingen. Maar u moet voorzichtig zijn met tegelijk toegang tot metagegevens in bestanden als u deze optie uit de pagina Opzetpagina voor metagegevens hebt aangezet.

Migratie van database

digiKam komt op met een exclusief hulpmiddel genaamd Databasemigratie, die gebruikers biedt hun gegevens te migreren. Bijvoorbeeld, het migratiehulpmiddel kan u helpen om alle uw gegevens uit een SQLite-database te verplaatsen naar een MySQL-database of vice versa.

Om te migreren naar een andere database, ga naar Instellingen ‣ Migratie…. Er zal een dialoogvenster verschijnen:

He hulpmiddel Migratie van database van digiKam

Kies nu de toepasselijke databasetypes waarnaar u wilt converteren. Klik tenslotte op de knop Migreren om de database van SQLite naar MySQL (of vice versa) te converteren. Afhankelijk van de grootte van de database zal deze actie enige tijd duren.

Notitie

Alleen de Kern database van digiKam zal gemigreerd worden door het conversieproces. Alle andere databases moeten opnieuw gebouwd worden met gebruik van nabewerking met de Onderhoudshulpmiddelen. De databases Miniaturen en Gelijkenissen zal vanaf niets moeten worden aangemaakt en de database Gezicht bevat de optie De trainingsgegevens opnieuw bouwen nodig.

Aanbeveling voor backup van database

Voor redenen van beveiliging kan het plannen van een reservekopie van de database met crontab over het netwerk helpen tegen het falen van een apparaat. Een NAS of een externe schijf kan al reserve worden gebruikt.

Elke database kan hernoemd worden met een andere unieke naam. Dit biedt gebruiker de om alleen een reservekopie te maken van wat nodig is. Bijvoorbeeld Kern database te hernoemen als digiKam_kern, biedt u de mogelijkheid om alleen van deze tabel een reservekopie te maken, wat het meest belangrijke bestand is. Databases voor Miniaturen, Gelijkenissen en Gezichtsherkenning kunnen altijd vanaf niets opnieuw worden gegenereerd.

Het hoofdstuk over Hulpmiddel onderhoud van digiKam zal uitleggen hoe na enige tijd de inhoud van de database te onderhouden is en hoe de verzamelingen te synchroniseren met informatie in de databases (en omgekeerd).

Database statistieken

digiKam biedt een uniek hulpmiddel voor het tonen van statistieken van uw verzamelingen. Het omvat het aantal afbeeldingen, video’s (inclusief individuele aantallen per afbeeldingsformaat), tags etc. dit omvat ook de Database-backend (QSQLITE of QMYSQL) en het Pad naar de database (waar uw verzameling zich bevind).

U kunt uw statistieken bekijken door naar Help ‣ Databasestatistieken te gaan. De volgende dialoog zal verschijnen:

De dialoog voor Databasestatistieken van digiKam