Instellingen van database

Notitie

Voor een introductie over de interne opslag van gegevens, ga naar de sectie Introductie in databases van digiKam.

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, d.w.z. het is ingebed in een eindprogramma. SQLite leest en schrijft direct uit/naar gewone bestanden op een schijf. Voor lokale opslag op een schijf met laag gelijktijdig schrijven en minder dan een terabyte aan inhoud, is SQLite een bijna altijd betere oplossing. 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. Drie SQLite bestanden, gebruikt voor het opslaan hiervan, hebben respectievelijk de naam:

Database

Bestandsnaam

Kern

digikam4.db

Miniaturen

thumbnails-digikam.db

Gelijkenissen

similarity.db

Gezichten

recognition.db

Om uw toepassing snel en gladjes te laten lopen, is het aanbevolen om uw databases af en toe te controleren en te optimaliseren. Dit kan bereikt worden met het menu-item Hulpmiddelen ‣ Onderhoud… en de opdracht Database opschonen uitvoeren. Zie dit Sectie hulpmiddel voor onderhoud voor details. Een aanbevolen hulpmiddel is SQLite-browser, een visueel hulpmiddel voor het beheer van database-objecten van hoge kwaliteit en gemakkelijk te gebruiken. Voor Ubuntu en zijn afgeleiden, kan het pakket worden opgehaald met sudo apt-get install sqlitebrowser. U kunt nu omschakelen naar de map met de databases en de inhoud van de database bekijken.

Notitie

Let er op om een plaats te gebruiken met snelle hardware (zoals een SSD of NVMe) met genoeg vrije ruimte speciaal voor de miniaturendatabase. Een bestandssysteem op afstand zoals NFS kan niet hier gebruikt worden. Vanwege redenen van prestatie en techniek, relevant voor SQlite, kunt u geen media in het netwerk gebruiken.

SQLite database bestanden zijn te vinden in uw 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 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 in feite 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 een server op afstand op te slaan. Lokaal, om de lokale SQLite opslag te vervangen en de ander om een gedeelde computer via het netwerk te gebruiken. Met MySQL als database back-end van digiKam kunt u de gegevens op een server op afstand opslaan. 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 u uw gegevens op een server op afstand hebt en u op een andere machine probeert toegang te krijgen tot de verzameling.

De MySQL interne server

Bij gebruik van een grote verzameling, opgeslagen op een vaste schijf (HDD - geen SSD of NVMe apparaat), met een grootte groter dan 100.000 items, zal de toepassing trager worden. Om de vertraging te vermijden en efficiency te handhaven, biedt digiKam de optie van het gebruik van de MySQL interne server. 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

Om digiKam met een MySQL server op afstand te gebruiken, moet u een MySQL server hebben. Of, u zou ook MariaDB kunnen 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 onder Ubuntu gebaseerd op het Linux systeem, gebruik het additionele commando in de mysql-prompt om in staat te zijn MySQL-triggers aan te maken.

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).

In het veld Kern Db-naam, voer de naam in van de eerste database voor opslag van metagegevens van foto’s.

Specificeer de naam van de tweede database voor opslaan van met wavelets gecomprimeerde miniaturen in het veld Miniaturen Db-naam.

De derde database is gewijd aan het opslaan van vingerafdrukken voor zoeken op gelijkenissen. Gebruik daar de DB-naam voor gelijkenissen voor.

De laatste database is gewijd aan de opslag van gezichtshistogrammen voor herkenningsdoeleneinden. Gebruik het veld Gezichten Db-naam daarvoor.

Om veilig verbonden te worden 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 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 langere tijd speciaal wanneer albums veel items (>1000) bevatten. Deze oplossing hangt af van netwerkprestaties. Probleem was bijvoorbeeld reproduceerbaar met 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 dubbele waarden opgeslagen in de tabellen van de database.

Criteria voor het type database

Zie het onderstaande hervatten om het juiste type database te kiezen afhankelijk van het 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

Zie dit hoofdstuk Digital Asset Management voor meer details over media en gegevensbescherming.

Zie ook dit Hoofdstuk verzamelingeninstellingen voor meer details over de manier om uw verzamelingen te configureren afhankelijk van uw opslagbeleid.

Belangrijk

Als u dezelfde Verwijderbare media gebruikt om 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 schema’s 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 schema’s van de database te vermijden. Computers die digiKam uitvoeren kunnen niet tegelijk op verzamelingen worden gebruikt.

Als u een gemeenschappelijke server op afstand gebruikt om verzamelingen op te slaan, en databases zijn lokaal op computers, dan kunnen verschillende versies van digiKam gebruikt worden en digiKam sessies kunnen tegelijk werken op verzamelingen. Wees voorzichtig met tegelijk toegang tot metagegevens in bestanden als u deze optie Opzetpagina voor metagegevens aan het gezet.

Migratie van database

De fotobeheertoepassing komt op met een exclusief hulpmiddel genaamd Databasemigratie, die gebruikers help om hun gegevens te migreren. Neem aan dat u SQLite gebruikt en u wilt alle gegevens naar een MySQL database verplaatsen, het migratiehulpmiddel zal u daarbij helpen. Het kan u helpen gegevens uit SQLite naar MySQL en vice versa te migreren.

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 in het conversieproces. Alle andere databases moeten opnieuw gebouwd worden als nabewerking met de Onderhoudshulpmiddelen. De databases Miniaturen en Gelijkheid moeten vanaf niets worden aangemaakt en de database Gezicht heeft 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 fout functioneren van een apparaat. Een NAS of een externe schijf kan daar ook voor worden gebruikt.

Elke database kan een andere naam krijgen, niet alleen digikam. Dit maakt het voor de gebruiker mogelijk om alleen een reservekopie te maken van wat nodig is. Bijvoorbeeld Kern database te benoemen als digikam_kern, biedt de mogelijkheid om alleen deze tabel te isoleren (het meest belangrijke bestand). Databases voor Miniaturen, Gelijkenissen en Herkenning kunnen altijd vanaf niets opnieuw worden gegenereerd.

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

Database statistieken

digiKam biedt een uniek hulpmiddel voor het tonen van statistieken van uw verzamelingen. Het omvat aantal afbeeldingen, video’s (inclusief individuele aantallen per afbeeldingsformaat), tags etc. 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