Configurações do banco de dados¶
As opções de Banco de dados para o digiKam são definidas em .
Nota
Para uma introdução ao armazenamento interno de dados, consulte a seção Banco de dados do capítulo Introdução.
O banco de dados SQLite¶
SQLite é um sistema de gerenciamento de banco de dados relacional, escrito na biblioteca de programação C. O SQLite não é diretamente comparável a mecanismos de banco de dados SQL cliente/servidor, como MySQL, Oracle ou PostgreSQL. Em vez disso, ele possui um mecanismo de banco de dados SQL embutido no programa. O SQLite lê e grava diretamente em arquivos em disco comuns. O SQLite é quase sempre a melhor solução para armazenamento local em dispositivos com baixa simultaneidade de gravação e menos de um terabyte de conteúdo. O SQLite é rápido e confiável e não requer configuração ou manutenção. Ele mantém as coisas simples. O SQLite “simplesmente funciona”.
Por padrão, o digiKam usa o SQLite como backend para armazenar metadados e miniaturas importantes. O digiKam armazena informações em quatro arquivos SQLite:
Banco de dados
Nome do arquivo
Núcleo
digikam4.dbMiniaturas
thumbnails-digikam.dbSemelhança
similarity.dbRostos
recognition.db
Para manter seu aplicativo funcionando de forma rápida e eficiente, você deve verificar e otimizar seus bancos de dados periodicamente: selecione e, em seguida, Realizar a limpeza do banco de dados. Consulte a seção Limpeza do banco de dados do capítulo sobre as Ferramentas de manutenção para obter mais detalhes.
O SQLite Browser é uma ferramenta visual de alta qualidade e fácil de usar para gerenciar objetos de banco de dados, que recomendamos fortemente. Para Ubuntu e seus derivados, ele pode ser instalado usando sudo apt install sqlitebrowser. Em seguida, você pode alternar para o diretório onde os bancos de dados do digiKam estão armazenados para visualizar o conteúdo do banco de dados.
Nota
Para melhor desempenho, armazene os bancos de dados do digiKam no hardware mais rápido (como SSD ou NVMe) com bastante espaço livre. Isso é especialmente importante para o banco de dados de miniaturas. Um sistema de arquivos remoto como NFS não pode ser usado aqui. Por motivos técnicos e de desempenho, o SQLite não pode usar mídia da rede.
Os arquivos do banco de dados SQLite podem ser encontrados na pasta de coleção que você adicionou ao digiKam. (Por padrão, se você adicionar sua coleção de “Fotos”, os arquivos do banco de dados estarão presentes na pasta ~/Fotos).
Página de configuração do SQLite no digiKam¶
O modo WAL do SQLite é uma opção muito importante que recomendamos que você ative com bancos de dados grandes para otimizar transações e melhorar o desempenho.
O banco de dados MySQL¶
MySQL x SQLite¶
MySQL é um sistema de gerenciamento de banco de dados relacional de código aberto, escrito em C e C++. O desenvolvimento original do MySQL por Michael Widenius e David Axmark começou em 1994. A Sun Microsystems adquiriu o MySQL em 2008, que foi posteriormente adquirida pela Oracle em 2010. O MySQL atualmente funciona em quase todos os sistemas (Linux, Microsoft Windows, OS X, SunOS…).
O servidor MariaDB é um fork do servidor MySQL desenvolvido pela comunidade. Iniciado por membros principais da equipe original do MySQL, o MariaDB trabalha ativamente com desenvolvedores externos para fornecer o servidor SQL aberto mais completo, estável e com licenças mais sensatas do setor.
O uso do MariaDB ultrapassou o MySQL por alguns motivos básicos:
O desenvolvimento do MariaDB é mais aberto e vibrante.
Mais recursos de ponta.
Mais mecanismos de armazenamento.
Melhor desempenho.
Compatível e fácil de migrar.
O digiKam também oferece suporte ao popular mecanismo de banco de dados MySQL. É claro que você pode se perguntar por que mudar para o MySQL se o SQLite já faz um bom trabalho no gerenciamento de dados? O MySQL oferece muitas vantagens para armazenar dados do digiKam, especialmente quando as coleções incluem mais de 100.000 itens. Com coleções tão grandes, o SQLite introduz latência, o que torna o aplicativo lento.
Nota
Com a opção WAL habilitada, o SQLite pode ser facilmente usado para mais de 100.000 itens, especialmente com armazenamento SSD ou NVMe. Pode ser ainda mais rápido que o MySQL e mais estável. Consulte esta página para obter detalhes técnicos.
Usar o MySQL como backend do banco de dados do digiKam permite armazenar dados em servidores locais e remotos. O MySQL interno pode ser usado para substituir o armazenamento SQLite local, e o Servidor MySQL pode ser usado em mídias armazenadas em um servidor remoto. Dessa forma, você pode usar várias instalações do digiKam (por exemplo, no seu notebook e PC) para acessar e gerenciar suas coleções de fotos. Você também pode usar ferramentas do MySQL para fazer backup e analisar os dados do digiKam.
Para alternar do banco de dados SQLite para o MySQL, vá para e, na seção Banco de dados, selecione um banco de dados na lista suspensa.
MySQL interno: Permite executar um servidor de banco de dados interno no seu sistema. O digiKam usa soquete Unix para a conexão.
Servidor MySQL: Use isto se seus dados estiverem em um servidor remoto e você estiver em uma máquina diferente tentando acessar a coleção.
O servidor interno do MySQL¶
O digiKam tende a ficar lento ao usar uma coleção grande (tamanho superior a 100.000 itens) hospedada em um disco rígido (HDD - não um SSD ou dispositivo NVMe) com o banco de dados SQLite. Para evitar o atraso e manter a eficiência, o digiKam oferece a opção de usar o MySQL interno. Para esclarecer, este não é um servidor real ou uma rede pública. Em vez disso, é um servidor que roda apenas enquanto o aplicativo está em execução.
O servidor interno cria um banco de dados separado que pode ser acessado (somente enquanto o aplicativo estiver em execução) usando o comando:
mysql --socket=/home/[user_name]/.local/share/digikam/db_misc/mysql.socket digikam
O servidor interno utiliza três ferramentas binárias do MySQL: mysql_install_db, mysqladmin e mysqld. Você pode configurar a localização delas na caixa de diálogo de configuração. O digiKam tentará encontrar esses binários automaticamente se estiverem instalados no seu sistema.
Página de configuração do MySQL interno do digiKam¶
O servidor remoto MySQL¶
Obviamente, é necessário acesso a um servidor MySQL para usar o digiKam com um MySQL remoto. Como alternativa, você pode instalar o MariaDB, que atende bem ao propósito. (A instalação pode ser feita facilmente usando este link.)
Siga as instruções abaixo se você não tiver uma conta de usuário dedicada e um banco de dados digiKam já configurado. Execute os comandos no servidor MySQL, após substituir password pela senha correta.
Nota
Você pode selecionar qualquer nome de banco de dados. (Aqui está sendo usado digikam). Lembre-se de preencher corretamente o nome do banco de dados com os nomes Core, Thumbs, Similarity e Face na caixa de diálogo mostrada abaixo.
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 você tiver uma coleção enorme, é recomendável iniciar o servidor MySQL com mysql –max_allowed_packet = 128M
Dica
Se você tiver problemas com um servidor MySQL em um sistema Linux baseado em Ubuntu, execute este comando adicional no prompt do MySQL para habilitar a criação de gatilhos do MySQL.
SET global log_bin_trust_function_creators=1;
Agora, no digiKam, vá para e então na seção Banco de dados, selecione Servidor MySQL na lista suspensa.
Página de configuração do MySQL remoto do digiKam¶
Insira o endereço IP do seu servidor MySQL no campo Nome da máquina e especifique a porta correta no campo Porta da máquina (a porta padrão é 3306).
Defina o campo Nome do BD base como o nome do primeiro banco de dados usado para armazenar metadados de fotos.
Defina o campo Nome do BD de miniaturas com o nome do segundo banco de dados usado para armazenar as miniaturas compactadas por wavelet. O caminho para armazenar os dados das miniaturas pode ser armazenado localmente para evitar uma grande troca de dados entre o servidor e o computador do aplicativo. Armazenar as miniaturas remotamente pode reduzir o desempenho do aplicativo e introduzir latência de tempo com coleções grandes.
Defina o campo Nome do BD de semelhanças como o nome do terceiro banco de dados usado para armazenar as impressões digitais de similaridade produzidas pelo mecanismo de busca difusa.
Defina o campo Nome do BD de rostos como o nome do último banco de dados usado para armazenar os histogramas faciais para reconhecimento facial.
Para se conectar com segurança ao servidor remoto, insira sua identificação do MySQL usando os campos Usuário e Senha.
Para verificar se a conexão com o banco de dados está funcionando corretamente, clique no botão Verificar a conexão. Se tudo funcionar corretamente, acesse a seção Coleções e adicione os diretórios que contêm suas fotos. Clique em OK e aguarde até que o digiKam preencha os bancos de dados com os dados das suas fotos. Isso pode demorar um pouco se você tiver muitos itens para registrar no banco de dados.
Existem algumas dicas e recomendações para obter os melhores resultados com um servidor de banco de dados MySQL remoto.
Com uma rede lenta, o digiKam trava com frequência, especialmente quando o álbum contém muitos itens (>1.000). Esse problema depende do desempenho da rede. Por exemplo, o problema pode ser reproduzido usando conexões Wi-Fi. Mudar para Ethernet resolve o problema.
Além disso, se você tiver uma coleção enorme, inicie o servidor MySQL com mysql –max_allowed_packet = 128M. Se você estiver familiarizado com o MySQL, também poderá alterar suas configurações nos arquivos
my.iniou~/.my.cnf.
Aviso
O local usado no servidor Mysql deve ser o mesmo local do computador usado para executar o digiKam para evitar problemas com os valores comuns salvos nas tabelas do banco de dados.
Critérios de tipo de banco de dados¶
Veja o resumo abaixo para escolher o tipo de banco de dados correto dependendo do seu caso de uso.
Armazenamento
Tipo
Itens
Comentários
HDD
SQLite
< 100K
Aviso: WAL é obrigatório.
HDD
MySQL-interno
> 100K
SSD
SQLite
WAL é opcional.
SSD
MySQL-interno
NVME
SQLite
WAL é opcional.
NVME
MySQL-interno
Removível
SQLite
< 100K
Aviso: WAL é obrigatório. Mínimo USB 3.1 com unidade NVMe.
Removível
MySQL-interno
> 100K
Aviso: mínimo USB 3.1 com unidade NVMe.
Rede
SQLite
Proibido: bancos de dados SQLite devem ser armazenados no sistema de arquivos local.
Rede
MySQL-interno
Proibido: bancos de dados MySQL devem ser armazenados no sistema de arquivos local.
Remoto
Servidor MySQL
O servidor MariaDB é suportado. Recomenda-se Gigabit Ethernet ou superior.
- HDD¶
Disco rígido.
- SSD¶
Drive de estado sólido.
- NVMe¶
Memória não volátil.
- Removível¶
Unidade externa USB HDD/SSD/NVMe.
- Rede¶
Sistema de arquivos de rede montado localmente.
- Remoto¶
Servidor de rede como NAS (Network Attached Storage).
- WAL¶
Write-Ahead Lock (somente banco de dados do SQLite).
Nota
Consulte o capítulo Gerenciamento de ativos digitais para obter mais detalhes sobre proteção de mídia e dados.
Consulte também o capítulo Configurações das coleções para obter mais detalhes sobre como configurar suas coleções dependendo da sua política de armazenamento.
Importante
Se você compartilhar a mesma mídia Removível para bancos de dados e/ou coleções entre computadores diferentes, você deverá ter o mesmo tipo de sistema operacional, os mesmos caminhos de montagem em todos os lugares (use links simbólicos para resolver caminhos) e a mesma versão do digiKam em todos os lugares para evitar conflitos com o esquema do banco de dados.
Se você usar um servidor Remoto comum para hospedar bancos de dados e coleções, deverá usar a mesma versão do digiKam em todos os lugares para evitar conflitos com o esquema do banco de dados. Computadores executando diferentes instanciações do digiKam não podem acessar um banco de dados e uma coleção comuns ao mesmo tempo.
Se você usar um servidor Remoto comum para hospedar coleções, com os bancos de dados armazenados em computadores individuais, diferentes versões do digiKam poderão ser usadas e as sessões do digiKam poderão ser executadas simultaneamente, acessando as coleções comuns. No entanto, você precisará ter cuidado com os acessos simultâneos aos metadados dos arquivos, caso tenha ativado essa opção na página Configuração de Metadados.
Migração do banco de dados¶
O digiKam oferece uma ferramenta exclusiva chamada Migração do banco de dados, que permite aos usuários migrarem seus dados. Por exemplo, a ferramenta de migração pode ajudar você a mover todos os seus dados de um banco de dados SQLite para um banco de dados MySQL, ou vice-versa.
Para migrar para outro banco de dados, acesse . Uma caixa de diálogo será exibida:
A ferramenta de migração do banco de dados do digiKam¶
Agora, escolha os tipos de banco de dados apropriados para os quais deseja converter. Por fim, clique no botão Migrar para converter o banco de dados de SQLite para MySQL (ou vice-versa). Dependendo do tamanho do banco de dados, essa operação pode demorar um pouco.
Nota
Somente o banco de dados Core do digiKam será migrado por este processo de conversão. Todos os outros bancos de dados precisam ser reconstruídos usando o pós-processamento com as Ferramentas de manutenção. Os bancos de dados Thumbs e Similarity precisarão ser criados do zero, e o banco de dados Face inclui a opção Reconstruir os dados de treinamento.
Recomendação de backup de banco de dados¶
Por motivos de segurança, planejar um backup do banco de dados usando o crontab pela rede pode ajudar a evitar falhas no dispositivo. Um NAS ou uma unidade externa também podem ser usados para backup.
Cada banco de dados pode ser renomeado com um nome diferente e exclusivo. Isso permite que os usuários façam backup apenas do que for necessário. Por exemplo, renomear o banco de dados Core como digiKam_Core permite fazer backup apenas deste banco de dados, que é o arquivo mais importante. Os bancos de dados Thumbnails, Similarity e Face Recognition sempre podem ser regenerados do zero.
O capítulo sobre o digiKam Ferramentas de manutenção explicará como manter o conteúdo do banco de dados e como sincronizar as coleções com as informações nos bancos de dados (e vice-versa).
Estatísticas do banco de dados¶
O digiKam oferece uma ferramenta exclusiva para exibir as estatísticas das suas coleções. Ela inclui a contagem de imagens, vídeos (incluindo contagem individual por formato de imagem), etiquetas, etc., além do Backend do banco de dados (QSQLITE ou QMYSQL) e do Caminho do banco de dados (onde sua coleção está localizada).
Você pode visualizar suas estatísticas acessando . Uma janela como esta será exibida:
Janela de estatísticas do banco de dados do digiKam¶