# Instellingen van database

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

## De SQLite-database

SQLite is een beheersysteem voor een relationele database, gevat 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, &ie; 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:

1. Kern: digikam4.db.

2. Miniaturen: thumbnails-digikam.db.

3. Gezichten: recognition.db.

Om uw toepassing snel en gladjes te laten lopen, is het aanbevolen om uw databases at en toe te controleren en te optimaliseren. Dit kan bereikt worden met sqlite3 pakketten of sqlite-browser (hoge kwaliteit, gemakkelijk te gebruiken visueel hulpmiddel voor het beheer van database-objecten). Voor Ubuntu en zijn afgeleiden, kan het pakket worden opgehaald met `sudo apt-get install sqlite3` of `sudo apt-get install sqlitebrowser`. Alles wat er nog te doen is is het openen van de terminal, schakel naar de map waar de databases zijn opgeslagen.

Let er op om een plaats te gebruiken met snelle hardware (zoals een SSD) 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, kunt u geen verwijderbare media gebruiken.

SQLite database bestanden zijn te vinden in uw “verzameling” map, 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 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:

1. De ontwikkeling van MariaDB is meer open en levenslustig.

2. Meer vernieuwende functies.

3. Meer opslag-engines.

4. Betere performance.

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

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. Lokaaal, 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 Instellingen, selecteert u een database uit het afrolmenu.

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

2. MySQL op afstand: 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, met een grootte groter dan 10.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, het is een server die alleen actief is wanneer de toepassing actief is.

De interne server maakt een gescheiden database aan die toegang biedt (alleen wanneer de toepassing actief is) met het commando: `mysql --socket=/home/`[gebruikersnaam]`/.local/share/digikam/db_misc/mysql.socket digikam`

De interne server gebruikt twee MySQL binaire hulpmiddelen - mysql_install_db en 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 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 he 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 (nar vervanging van het wachtwoord door het juiste):

U kunt elke databasenaam selecteren. (Hier is het, “digikam”). U dient eenvoudig de juiste naam in te vullen in de databasenaam in die van Core, Thumbs, Face 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;

Als u een enorme verzameling hebt, dan zou u de MySQL server moeten starten met `mysql --max_allowed_packet = 128M`

Ga nu, in &digikam;, naar Instellingen &digikam; configureren... en dan onder de sectie Instellingen, selecteer MySQL server uit het afrolmenu.

Voer het IP-adres van uw MySQL-server in in het veld Hostnaam en specificeer de juiste poort in het veld 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 Thumbs Db naam field.

De derde 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 gebruikersnaam en wachtwoord.

Om te controleen 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 my.ini of ~/.my.cnf wijzigen).

## Migratie van database

De fotobeheertoepassing komt op met een exclusief hulpmiddel “Databasemigratie”, die gebruikers help om hun gegevens te mifreren. 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 van database.... Er zal een dialoogvenster verschijnen:

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.

## 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 “core” database te benoemen als digikamCore, biedt de mogelijkheid om alleen deze tabel te isoleren (het meest belangrijke bestand). Databases voor miniaturen en herkenning kunnen altijd vanaf niets opnieuw worden gegenereerd.

Het hoofdstuk over Onderhoudshulpmiddel van &digikam; zal uitleggen hoe na enige tijd de inhoud van de database te onderhouden en hoe to de verzamelingen te synchroniseren met informatie in databases (en omgekeerd).

## Database statistieken

&digikam; biedt een uniek hulpmiddel voor het onderhouden van statistieken van uw verzameling. Het omvat aantal afbeeldingen, video's (inclusief individuele aantallen per afbeeldingformaat), 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: