Impostazioni della banca dati¶
Le opzioni della Banca dati di digiKam vengono configurate da
.Nota
Per un’introduzione alla memorizzazione interna dei dati interni fai riferimento al paragrafo Banca dati del capitolo Primi passi.
La banca dati SQLite¶
SQLite è un sistema di gestione di banche dati relazionali, scritto nella libreria di programmazione C. SQLite non è direttamente paragonabile a motori client/server di banca dati SQL come MySQL, Oracle o PostgreSQL. Piuttosto è un motore di banche dati SQL, che è incorporato in un programma. SQLite legge e scrive direttamente dei normali file su disco. SQLite è quasi sempre la soluzione migliore per i dispositivi di memorizzazione locali con bassa concorrenza in scrittura e meno di un terabyte di contenuti. SQLite è veloce e affidabile e non richiede configurazione o manutenzione. Non complica le cose. SQLite «semplicemente funziona».
Per impostazione predefinita, digiKam usa SQLite come suo motore per memorizzare i metadati e le miniature importanti. digiKam memorizza le informazioni in quattro file di SQLite:
Banca dati
Nome del file
Principale
digikam4.db
Miniature
thumbnails-digikam.db
Somiglianze
similarity.db
Volti
recognition.db
Per mantenere l’applicazione veloce e fluida, devi periodicamente controllare e ottimizzare le tue banche dati: seleziona Pulizia delle banche dati del capitolo Strumenti di manutenzione.
, poi Esegui la pulizia delle banche dati. Per i dettagli, consulta il paragrafoIl Browser per SQLite, è uno strumento visivo di alta qualità e di facile uso per gestire gli oggetti delle banche dati, ed è vivamente consigliato il suo utilizzo. In Ubuntu e derivate può essere installato tramite il comando sudo apt install sqlitebrowser. Puoi quindi sfogliare fino alla cartella in cui sono memorizzate le banche dati di digiKam e visualizzarne il contenuto.
Nota
Per garantire le migliori prestazioni, salva le banche dati di digiKam nell’hardware più veloce (tipo SSD o NVMe) con molto spazio libero. Ciò è particolarmente importante per la banca dati delle miniature. Qui non può essere utilizzato un sistema di file remoto come NFS. Per ragioni tecniche e prestazionali, SQLite non può utilizzare un dispositivo dalla rete.
I file della banca dati SQLite si trovano nella cartella della raccolta che hai aggiunto a digiKam (se hai aggiunto la tua raccolta «Immagini», per impostazione predefinita il file della banca dati si troverà nella cartella ~/Pictures
).
La modalità WAL di SQLite è un’opzione molto importante che ti consigliamo di attivare per ottimizzare le transazioni e migliorare le prestazioni.
La banca dati MySQL¶
MySQL a confronto con SQLite¶
MySQL è un sistema di gestione di banche dati relazionali open source, scritto in C e C++, il cui sviluppo originale è iniziato nel 1994 ad opera di Michael Widenius e David Axmark. La Sun Microsystem ha acquisito MySQL nel 2008, ed è stata in seguito acquisita da Oracle nel 2010. Al momento MySQL funziona su quasi tutte le piattaforme (Linux, Microsoft Windows, OS X, SunOS …).
Il server MariaDB è un fork del server MySQL sviluppato dalla comunità. Avviato dai membri principali del team originario di MySQL, MariaDB lavora attivamente con sviluppatori esterni per offrire il server SQL più ricco di funzionalità, stabile, rilasciato in modo sano e con licenza aperta del settore.
L’utilizzo di MariaDB ha superato MySQL per alcune semplici ragioni:
Lo sviluppo di MariaDB è più aperto e vibrante.
Ha più funzionalità all’avanguardia.
Più motori di archiviazione.
Migliori prestazioni.
Compatibile e semplice da migrare.
digiKam fornisce anche il supporto al popolare motore di banche dati MySQL. Naturalmente ti potresti chiedere perché dovresti passare a MySQL quando SQLite fa già un ottimo lavoro nella gestione dei dati. MySQL offre molti vantaggi nella memorizzazione dei dati di digiKam, specialmente quando la raccolta include più di 100.000 elementi: con raccolte così grandi, SQLite genera delle latenze che rallentano l’applicazione.
Nota
Con l’opzione WAL attivata, SQLite può essere utilizzato con facilità per più di 100.000 elementi, specialmente se su un dispositivo di memorizzazione SSD o NVMe. Potrebbe essere persino più veloce e più stabile di MySQL. Per i dettagli tecnici, consulta questa pagina.
Usando MySQL come motore della banca dati di digiKam puoi immagazzinare i dati in locale, ma anche in server remoti. MySQL interno può essere utilizzato per rimpiazzare la memorizzazione di SQLite locale, e il server MySQL può essere utilizzato su dispositivi multimediali in un server remoto. In questo modo puoi usare più installazioni di digiKam (per esempio sul tuo portatile e sul tuo PC) per gestire le tue raccolte di foto. Puoi anche usare gli strumenti di MySQL per analizzare i dati di digiKam.
Per passare dalla banca dati di SQLite a quella di MySQL, vai a
e nella sezione Banca dati seleziona una banca dati dall’elenco a tendina.
MySQL interno: permette di avviare un server per la banca dati interno al tuo sistema. digiKam utilizza il socket di Unix per la connessione.
Server MySQL: usalo se i tuoi dati si trovano in un server remoto e accedi alla tua raccolta da una macchina diversa.
Il server MySQL interno¶
digiKam tende a rallentare quando con la banca dati SQLite utilizza una raccolta grande (con più di 100.000 elementi al suo interno) ospitata su un dispositivo HDD (non SSD o NVMe). Per evitare ritardi e conservare l’efficienza, digiKam permette di utilizzare un MySQL interno. Questo non è, per essere chiari, né un vero server, né una rete pubblica, ma è un server che si avvia solo quando l’applicazione è in esecuzione.
Il server interno crea una banca dati separata cui si può accedere (solo quando l’applicazione è in esecuzione) utilizzando il comando:
mysql --socket=/home/[user_name]/.local/share/digikam/db_misc/mysql.socket digikam
Il server interno usa tre strumenti eseguibili MySQL: mysql_install_db
, mysqladmin
, e mysqld
. Puoi configurare la loro posizione nella finestra di dialogo di configurazione. digiKam tenterà di individuare automaticamente questi file eseguibili, se sono installati nel sistema.
Il server remoto MySQL¶
Ovviamente, per usare digiKam con un MySQL remoto richiede un server MySQL. In alternativa, potresti installare MariaDB, che serve bene allo scopo (potresti installarlo semplicemente da questo collegamento.)
Segui le istruzioni qui sotto se non hai un account utente e una banca dati di digiKam già configurata. Esegui i comandi nel server MySQL, dopo aver sostituito la password con quella corretta.
Nota
Puoi selezionare un qualsiasi nome per la banca dati (qui è semplicemente digikam, ricordati solo di compilare correttamente il nome della banca dati principale, di quella per le miniature, di quella per i visi e per le somiglianze nella finestra mostrata qui sotto.
CREATE USER ''@'%' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO ''@'%' IDENTIFIED BY 'password';
CREATE DATABASE digikam;
GRANT ALL PRIVILEGES ON digikam.* TO ''@'%';
FLUSH PRIVILEGES;
Nota
Se hai una raccolta molto grande, si raccomanda di avviare il server MySQL con mysql –max_allowed_packet = 128M
Suggerimento
Se hai problemi con un server MySQL su un sistema Linux basato su Ubuntu, esegui questo comando aggiuntivo nella finestra di prompt mysql in modo da abilitare la creazione di attivatori MySQL.
SET global log_bin_trust_function_creators=1;
Ora, in digiKam, vai a
e nella sezione Banca dati seleziona MySQL Server dall’elenco a tendina.Inserisci l’indirizzo IP del tuo server MySQL nel campo Nome host, e specifica la porta giusta nel campo Porta host (quella predefinita è la 3306).
Imposta il campo Nome Bd principale al nome della prima banca dati che viene utilizzata per memorizzare i metadati delle fotografie.
Imposta il campo Nome Bd miniature al nome della seconda banca dati che viene utilizzata per memorizzare le miniature compresse con wavelet.
Imposta il campo Nome Bd somiglianze al nome della terza banca dati utilizzata per memorizzare i codici di controllo delle somiglianze prodotte dal motore per le ricerche approssimate.
Imposta il campo Nome Bd volti al nome dell’ultima banca dati utilizzata per memorizzare gli istogrammi dei volti per il riconoscimento facciale.
Per collegarti in modo sicuro al server remoto, inserisci la tua identità MySQL usando i campi nome utente e password.
Premi il pulsante Verifica la connessione per controllare se la connessione con la banca dati funziona correttamente: se tutto va come deve, passa alla sezione Raccolte, e aggiungi le cartelle che contengono le tue fotografie. Premi quindi OK, e aspetta affinché digiKam popoli la banca dati con i dati delle tue foto. Questo può richiedere un po” di tempo se hai molti elementi da registrare nella banca dati.
Ci sono alcuni suggerimenti e raccomandazioni per ottenere i risultati migliori con un server di banca dati remoto MySQL.
Con una rete lenta digiKam si blocca per molto tempo, specialmente se l’album contiene molti elementi (>1000). Questo problema dipende dalle prestazioni della rete: per esempio, il problema è riproducibile usando connessioni Wifi. Passa a una Ethernet per risolvere il problema.
Inoltre, se hai una raccolta molto grande, dovresti avviare il server MySQL con mysql –max_allowed_packet = 128M (se sei esperto di MySQL puoi anche cambiare le impostazioni nei file
my.ini
, oppure in~/.my.cnf
files.
Avvertimento
L’impostazione regionale utilizzata nel server Mysql deve essere la stessa del computer usato per eseguire digiKam, al fine di impedire che vengano salvati valori comuni nelle tabelle della banca dati.
Criteri per il tipo di database¶
Per scegliere il giusto tipo di banca dati, in base al tuo caso d’uso vedi il riepilogo sotto riportato.
Archiviazione
Tipo
Elementi
Commenti
HDD
SQLite
< 100K
Attenzione: WAL è obbligatorio.
HDD
MySQL interno
> 100K
SSD
SQLite
WAL è facoltativo.
SSD
MySQL interno
NVME
SQLite
WAL è facoltativo.
NVME
MySQL interno
Rimovibile
SQLite
< 100K
Attenzione: WAL è obbligatorio. USB 3.1 è il minimo con un dispositivo NVMe.
Rimovibile
MySQL interno
> 100K
Attenzione: USB 3.1 è il minimo con un dispositivo NVMe.
Rete FS
SQLite
Proibito: le banche dati SQLite devono essere memorizzate in un sistema di file locale.
Rete FS
MySQL interno
Proibito: le banche dati MySQL devono essere memorizzate in un sistema di file locale.
Remoto
Server MySQL
È supportato il server MariaDB. Raccomandata Gigabit Ethernet o superiore.
- HDD¶
Disco rigido (HDD).
- SSD¶
Dispositivo a stato solido.
- NVMe¶
Memoria non volatile.
- Rimovibile¶
Dispositivo USB HDD/SSD/NVMe esterno.
- Rete FS¶
Network File System montato localmente.
- Remoto¶
Server di rete come NAS (Network Attached Storage).
- WAL¶
Write-Ahead Lock (solo banche dati SQLite).
Nota
Per ulteriori dettagli sulla protezione dei dati e dei dispositivi multimediali, consulta il capitolo Gestione dei beni digitali.
Per ulteriori dettagli su come configurare le raccolte in base alla tua politica di conservazione dei dati, consulta anche il capitolo Impostazioni delle raccolte.
Importante
Se condividi lo stesso dispositivo rimovibile per ospitare le banche dati e/o le raccolte tra computer diversi, devi avere lo stesso sistema operativo, gli stessi percorsi di montaggio (usa i collegamenti simbolici per risolvere i percorsi) e la stessa versione di digiKam per evitare conflitti con lo schema delle banche dati.
Se usi un server remoto comune per ospitare le banche dati e le raccolte, devi usare la stessa versione di digiKam ovunque in modo da evitare conflitti con lo schema delle banche dati. I computer che eseguono istanze differenti di digiKam non possono accedere contemporaneamente a una banca dati e una raccolta comune.
Se usi un server remoto comune per ospitare le raccolte, con le banche dati memorizzate su computer singoli, possono dunque essere utilizzate versioni differenti di digiKam e puoi accedere alle raccolte comuni in contemporanea con sessioni diverse di digiKam. Se hai attivato questa opzione dalla pagina di configurazione dei metadati, dovrai prestare attenzione agli accessi contemporanei ai metadati dei file.
Migrazione della banca dati¶
digiKam nasce con uno strumento esclusivo chiamato Migrazione della banca dati, che permette agli utenti la migrazione dei propri dati. Per esempio, lo strumento di migrazione può aiutarti a spostare tutti i tuoi dati da una banca dati SQLite a una MySQL, o viceversa.
Per migrare a un’altra banca dati, vai al menu
. Comparirà un riquadro di dialogo:Ora scegli i tipi di banca dati corretti a cui convertire. Per finire, fai clic sul pulsante Migra per convertire la banca dati da SQLite a MySQL (o viceversa). A seconda della dimensione della banca dati, l’operazione potrebbe durare diverso tempo.
Nota
Da questo processo di conversione sarà migrata solo la banca dati principale di digiKam. Tutte le altre banche dati dovranno essere ricostruite usando la post-elaborazione con gli Strumenti di manutenzione. Le banche dati Miniature e Somiglianza dovranno essere create da zero, mentre la banca dati Volti include l’opzione Ricostruisci i dati di addestramento.
Raccomandazioni sulla copia di sicurezza della banca dati¶
Per ragioni di sicurezza, pianificare una copia di sicurezza sulla rete usando crontab può aiutare a prevenire guasti dei dispositivi. Per eseguire delle copie di sicurezza può essere utilizzato anche un NAS o un dispositivo esterno.
Ciascuna banca dati può essere rinominata con un nome diverso e univoco. Ciò permette agli utenti di eseguire copie di sicurezza solo sulle cose necessarie. Per esempio, rinominare la banca dati Principale in Principale_digiKam ti permette di creare copie di sicurezza solo di questa banca dati, che è il file più importante. Le banche dati Miniature, Somiglianza e Riconoscimento facciale possono essere sempre rigenerate da zero.
Il capitolo sugli Strumenti di manutenzione di digiKam spiegherà come eseguire la manutenzione dei contenuti della banca dati e come sincronizzare le raccolte con le informazioni nelle banche dati (e viceversa).
Statistiche della banca dati¶
digiKam fornisce uno strumento unico per mostrare le statistiche dalle tue raccolte. Include il conteggio delle immagini, dei video (inclusi i conteggi individuali in base al formato dell’immagine), dei tag, ecc. Ciò include anche il motore della banca dati (QSQLITE oppure QMYSQL) e il percorso della banca dati (dove si trova la tua raccolta).
Puoi visualizzare le tue statistiche dal menu
. Apparirà un riquadro di dialogo tipo questo: