Configuració de la base de dades

Les opcions de Base de dades del digiKam s'estableixen a Arranjament ‣ Configura el digiKam... ‣ pàgina Base de dades.

Nota

Per a una introducció a l'emmagatzematge intern de les dades, vegeu la secció Base de dades del capítol Com començar.

La base de dades SQLite

El SQLite és un sistema de gestió de base de dades relacional, escrita en la biblioteca de programació C. El SQLite no és directament comparable amb els motors de bases de dades SQL client/servidor, com ara el MySQL, Oracle o PostgreSQL. Més aviat, és un motor de base de dades SQL que està incrustat en un programa final. El SQLite llegeix i escriu directament a fitxers de disc normals. El SQLite és gairebé sempre la millor solució per a l'emmagatzematge en un dispositiu local amb una concurrència baixa d'escriptura i menys d'un terabyte de contingut. El SQLite és ràpid i fiable, i no requereix cap configuració ni manteniment. Manté les coses senzilles. El SQLite «senzillament funciona».

De manera predeterminada, el digiKam utilitza el SQLite com el seu dorsal per a emmagatzemar les metadades i miniatures importants. El digiKam emmagatzema la informació en quatre fitxers SQLite:

Base de dades

Nom de fitxer

Nucli

digikam4.db

Miniatures

thumbnails-digikam.db

Similitud

similarity.db

Cares

recognition.db

Per a mantenir l'aplicació funcionant ràpida i suau, haureu de comprovar i optimitzar periòdicament les bases de dades: seleccioneu Eines ‣ Manteniment... i després Realitza la neteja de la base de dades. Vegeu la secció Neteja de la base de dades del capítol Eines de manteniment per als detalls.

El Navegador SQLite, és una eina visual d'alta qualitat i fàcil d'utilitzar per a la gestió d'objectes de base de dades, que recomanem molt. Per a Ubuntu i els seus derivats, es pot instal·lar utilitzant sudo apt install sqlitebrowser. A continuació, podeu canviar al directori on s'emmagatzemen les bases de dades del digiKam per a visualitzar el contingut de la base de dades.

Nota

Per a un millor rendiment, emmagatzemeu les bases de dades del digiKam en el maquinari més ràpid (com ara SSD o NVMe) amb molt espai lliure. Això és especialment important per a la base de dades de les miniatures. Aquí no es pot utilitzar un sistema de fitxers remot, com ara NFS. Per raons de rendiment i tècniques, el SQLite no pot utilitzar elements multimèdia des de la xarxa.

Els fitxers de la base de dades SQLite es poden trobar a la carpeta col·lecció que heu afegit al digiKam. (De manera predeterminada, si s'afegiu la col·lecció «Imatges», els fitxers de la base de dades estaran a la carpeta ~/Imatges).

La pàgina de configuració SQLite en el digiKam

El mode WAL de SQLlite és una opció molt important que recomanem activar amb bases de dades grans per a optimitzar les transaccions i millorar el rendiment.

La base de dades MySQL

MySQL contra SQLite

El MySQL és un sistema de codi obert per a la gestió d'una base de dades relacional, escrit en C i C++. El desenvolupament original de MySQL de Michael Widenius i David Axmark començà el 1994. Sun Microsystems va adquirir MySQL en el 2008, la qual va ser adquirida després per Oracle en el 2010. El MySQL actualment funciona en gairebé totes les plataformes de sistema (Linux, Microsoft Windows, OS X, SunOS, etc.).

El servidor MariaDB és una bifurcació del servidor de MySQL desenvolupada per la comunitat. Iniciat pels principals membres de l'equip original de MySQL, MariaDB treballa activament amb desenvolupadors externs per a lliurar el servidor SQL obert més complet de característiques, estable i amb una llicència sana en la indústria.

MariaDB ha superat MySQL per algunes raons bàsiques:

  • El desenvolupament de MariaDB és més obert i vibrant.

  • Més característiques d'avantguarda.

  • Més motors d'emmagatzematge.

  • Millor rendiment.

  • Compatible i fàcil de migrar.

El digiKam també proporciona suport per al popular motor de base de dades MySQL. Per descomptat, un podria preguntar-se per què voldries canviar al MySQL quan el SQLite ja fa una bona feina en la gestió de les dades? El MySQL ofereix molts avantatges per a l'emmagatzematge de dades del digiKam, especialment quan les col·leccions inclouen més de 100.000 elements. Amb aquest tipus de col·leccions, el SQLite introdueix latència, el qual alenteix l'aplicació.

Nota

Amb l'opció WAL activada, SQLite es pot utilitzar amb facilitat per a més de 100.000 elements, especialment amb un emmagatzematge SSD o NVMe. Podria ser fins i tot més ràpid i més estable que MySQL. Per als detalls tècnics, vegeu aquesta pàgina.

L'ús de MySQL com a dorsal de la base de dades del digiKam permet emmagatzemar les dades en local, així com en servidors remots. El MySQL intern es pot utilitzar per a substituir l'emmagatzematge local de SQLite, i MySQL servidor es pot utilitzar en elements multimèdia emmagatzemats en un servidor remot. D'aquesta manera, es podran utilitzar diverses instal·lacions del digiKam (per exemple, a l'ordinador portàtil i al PC) per a accedir i gestionar les col·leccions de fotografies. També podeu utilitzar les eines del MySQL per a crear una còpia de seguretat i analitzar les dades del digiKam.

Per a canviar de la base de dades SQLite a MySQL, aneu a l'element de menú Arranjament ‣ Configura el digiKam... ‣ pàgina Base de dades, seleccioneu una base de dades des de la llista desplegable.

  • MySQL intern: Això permet executar un servidor de bases de dades intern en el sistema. El digiKam utilitza el sòcol d'Unix per a la connexió.

  • Servidor MySQL: utilitzeu-lo si teniu les vostres dades en un servidor remot i està en una màquina diferent que intenta accedir a la col·lecció.

El servidor de MySQL intern

El digiKam tendeix a alentir-se quan s'utilitza una col·lecció gran (mida superior a 100.000 elements) allotjada en un disc dur (HDD, no en un dispositiu SSD o NVMe) amb la base de dades SQLite. Per a evitar el retard i mantenir l'eficiència, el digiKam ofereix l'opció d'utilitzar MySQL intern. Per a ser clars, aquest no és un servidor real o una xarxa pública. En canvi, és un servidor que només s'executa mentre s'executa l'aplicació.

El servidor intern crea una base de dades separada a la qual es pot accedir (només mentre l'aplicació s'està executant) utilitzant l'ordre:

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

El servidor intern utilitza tres eines binàries MySQL: mysql_install_db, mysqladmin i mysqld. Podreu configurar les seves ubicacions en el diàleg de configuració. El digiKam intentarà trobar aquests fitxers binaris automàticament si estan instal·lats en el sistema.

La pàgina de configuració MySQL intern en el digiKam

El servidor de MySQL remot

Òbviament, es requereix accés a un servidor MySQL per utilitzar el digiKam amb un MySQL remot. Alternativament, podeu instal·lar MariaDB, el qual compleix bé el seu propòsit. (Es pot instal·lar amb facilitat utilitzant aquest enllaç).

Seguiu les instruccions següents, si no teniu un compte d'usuari dedicat i una base de dades configurada en el digiKam. Executeu les ordres al servidor de MySQL, després substituïu la contrasenya per la correcta.

Nota

Podeu seleccionar qualsevol nom de base de dades. (Aquí hi ha, digikam). Només recordeu emplenar el nom de la base de dades correctament en els noms de la base de dades Nucli, Miniatures, Similitud i Cares en el diàleg que es mostra a continuació.

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

Nota

Si teniu una col·lecció enorme, es recomana iniciar el servidor MySQL amb mysql --max_allowed_packet = 128M

Truc

Si teniu problemes amb un servidor MySQL en un sistema Linux basat en l'Ubuntu, executeu aquesta ordre addicional a l'indicador del Mysql per a poder crear activadors del MySQL.

SET global log_bin_trust_function_creators=1;

Ara, en el digiKam, aneu a l'element de menú Arranjament ‣ Configura el digiKam... i després a la secció Base de dades, seleccioneu Servidor MySQL de la llista desplegable.

La pàgina de configuració interna de Mysql en el digiKam

Introduïu l'adreça IP del vostre servidor MySQL en el camp Nom de l'amfitrió i especifiqueu el port correcte en el camp Port de l'amfitrió (el port predeterminat és 3306).

Establiu al camp Nom de la BD del nucli el nom de la primera base de dades que s'usarà per a emmagatzemar les metadades de les fotografies.

Establiu en el camp Nom de la BD de miniatures el nom de la segona base de dades que s'usarà per a emmagatzemar les miniatures comprimides amb ondetes.

Establiu en el camp Nom de la BD de similitud el nom de la tercera base de dades que s'usarà per a emmagatzemar les empremtes digitals produïdes pel motor de cerca aproximada.

Establiu en el camp Nom de la BD de cares el nom de l'última base de dades per a emmagatzemar els histogrames de cares per la reconeixement facial.

Per a estar connectar de manera segura amb el servidor remot, introduïu la vostra identificació de MySQL utilitzant els camps Usuari i Contrasenya.

Per a comprovar si la connexió amb la base de dades funciona correctament, premeu el botó Comprova la connexió. Si tot funciona com se suposa, canvieu a les seccions Col·leccions i afegiu-hi els directoris que contenen les vostres fotografies. Premeu D'acord, i espereu fins que el digiKam ompli les bases de dades amb les dades de les fotografies. Això pot trigar molt de temps si teniu una gran quantitat d'elements per a registrar a la base de dades.

Hi ha alguns consells i recomanacions per a obtenir els millors resultats amb un servidor de bases de dades MySQL remot.

  • Amb una xarxa lenta, el digiKam es penja molt de temps, especialment quan l'àlbum conté molts elements (>1.000). Aquesta solució depèn del rendiment de la xarxa. Per exemple, el problema s'ha reproduït utilitzant una connexió wifi. Canviar a Ethernet hauria de resoldre el problema.

  • A més, si teniu una col·lecció enorme, hauríeu d'iniciar el servidor de MySQL amb mysql --max_allowed_packet = 128M. Si esteu familiaritzat amb l'ús de MySQL, també podreu canviar la vostra configuració en els fitxers my.ini o ~/.my.cnf.

Avís

La configuració regional utilitzada al servidor Mysql cal que sigui la mateixa que la configuració regional de l'ordinador utilitzat per a executar el digiKam per a evitar problemes amb els valors habituals desats a les taules de la base de dades.

Criteris sobre el tipus de base de dades

Vegeu el resum a continuació per a triar el tipus de base de dades correcte depenent del vostre cas d'ús.

Emmagatzematge

Tipus

Elements

Observacions

HDD

SQLite

< 100K

Avís: WAL és obligatori.

HDD

MySQL intern

> 100K

SSD

SQLite

WAL és opcional.

SSD

MySQL intern

NVME

SQLite

WAL és opcional.

NVME

MySQL intern

Extraïble

SQLite

< 100K

Avís: WAL és obligatori. USB 3.1 mínim amb una unitat NVMe.

Extraïble

MySQL intern

> 100K

Avís: USB 3.1 mínim amb una unitat NVMe.

Sistema de fitxers de xarxa

SQLite

Prohibit: les bases de dades SQLite s'han d'emmagatzemar en un sistema de fitxers local.

Sistema de fitxers de xarxa

MySQL intern

Prohibit: les bases de dades MySQL s'han d'emmagatzemar en un sistema de fitxers local.

Remota

Servidor MySQL

S'admet un servidor MariaDB. Es recomana Gigabit Ethernet o superior.

HDD

Unitat de disc dur.

SSD

Unitat d'estat sòlid.

NVMe

Memòria no volàtil.

Extraïble

Unitat externa USB HDD/SDD/NVMe.

Sistema de fitxers de xarxa

Sistema de fitxers de xarxa muntat localment.

Remota

Servidor de xarxa com a NAS (emmagatzematge connectat a la xarxa).

WAL

Bloqueig d'escriptura anticipada (només en la base de dades SQLite).

Nota

Vegeu el capítol Gestió d'actius digitals per a més detalls sobre la protecció d'elements multimèdia i de les dades.

Vegeu també el capítol Configuració de la col·lecció per a més detalls sobre com configurar les col·leccions depenent de la vostra política d'emmagatzematge.

Important

Si compartiu els mateixos mitjans extraïbles per a allotjar les bases de dades i/o col·leccions entre ordinadors diferents, haureu de tenir el mateix tipus de sistema operatiu, els mateixos punts de muntatge a tot arreu (utilitzeu enllaços simbòlics per a resoldre els camins) i la mateixa versió del digiKam a tot arreu per a evitar conflictes amb els esquemes de la base de dades.

Si utilitzeu un servidor remot comú per a allotjar les bases de dades i col·leccions, haureu d'utilitzar la mateixa versió del digiKam a tot arreu per a evitar conflictes amb l'esquema de la base de dades. Els ordinadors que executin instàncies diferents del digiKam no poden accedir a una base de dades i una col·lecció comuna utilitzar alhora.

Si utilitzeu un servidor remot comú per a allotjar les col·leccions, amb les bases de dades emmagatzemades en ordinadors individuals, aleshores es poden utilitzar versions diferents del digiKam i les sessions del digiKam es poden executar alhora, accedint a les col·leccions comunes. Cal anar amb compte amb els accessos concurrents a les metadades dels fitxers si heu activat aquesta opció a la pàgina de Configuració de les metadades.

Migrar a una base de dades

El digiKam ve amb una eina exclusiva anomenada Migra la base de dades, la qual permet als usuaris migrar les seves dades. Per exemple, l'eina de migració pot ajudar a migrar les vostres dades des de la base de dades SQLite a una base de dades MySQL i viceversa.

Per a migrar a una altra base de dades, aneu a l'element de menú Arranjament ‣ Migra la base de dades..., apareixerà un diàleg:

L'eina de migració de bases de dades en el digiKam

Ara escolliu el tipus de base de dades adequat als que voleu convertir. Finalment, feu clic en el botó Migra per a convertir la base de dades des de SQLite a MySQL (o viceversa). Segons la mida de la base de dades, aquesta operació pot trigar una mica.

Nota

Només es migrarà la base de dades Nucli del digiKam durant aquest procés de conversió. Totes les altres bases de dades s'hauran de reconstruir com a postprocessament amb les eines de manteniment. Les bases de dades de Miniatures i Similitud s'hauran de crear des de zero, i la base de dades de Cares necessitarà l'opció Reconstrueix les dades d'entrenament.

Recomanació de crear una còpia de seguretat de la base de dades

Per raons de seguretat, el fet de planificar una còpia de seguretat de la base de dades emprant el «crontab» a través de la xarxa, pot ajudar amb les disfuncions del dispositiu. També es pot utilitzar un NAS o una unitat externa per a fer còpies de seguretat.

Cada base de dades es pot reanomenar amb un nom únic diferent. Això permet als usuaris fer una còpia de seguretat només del que es necessita. Per exemple, reanomenar la base de dades Nucli com a digiKam_Nucli permet aïllar només aquesta taula, el qual és el fitxer més important. Les bases de dades de Miniatures, Similitud i de Reconeixement facial sempre es poden regenerar des de zero.

El capítol sobre les Eines de manteniment del digiKam explica com mantenir el contingut de la base de dades i com sincronitzar les col·leccions amb la informació de les bases de dades (i viceversa).

Estadístiques de la base de dades

El digiKam proporciona una eina única per a mostrar les estadístiques de les vostres col·leccions. Inclou el recompte d'imatges, vídeos (inclòs el recompte individual per format d'imatge), etiquetes, etc. això també inclou el dorsal de la base de dades (QSQLITE o QMYSQL) i el Camí de la base de dades (on es troba la vostra col·lecció).

Podreu veure les vostres estadístiques anant a l'element de menú Ajuda ‣ Estadístiques de la base de dades..., apareixerà un diàleg com aquest:

El diàleg d'estadístiques de la base de dades en el digiKam