Eu sempre armazenei Application Options como um arquivo Ini no Windows, pois era mais rápido de acessar do que o banco de dados. Além disso, às vezes, você precisa ler algumas delas antes de acessar o banco de dados.
A desvantagem é que se você fizer backup do banco de dados, as opções não aparecerão.
Eu poderia salvá-los
- Como campos, mas isso tornaria a tabela uma única linha de 50-500 campos
- Como pares de chave-valor, mas isso seria lento para recuperar
Estou pensando em armazená-los como um array JSON em um campo. Há alguma desvantagem nisso?
Não acho que importe em que o aplicativo é escrito, pois posso implementar qualquer coisa dentro do razoável. Não só há bibliotecas JSON (e INI) incorporadas ao Delphi, como também tenho minhas próprias bibliotecas super-rápidas de manipulação de JSON (e INI). E o MariaDB também suporta JSON.
O aplicativo é escrito em Delphi (Pascal) compilado para Windows. Mas partes do conjunto podem muito bem ser escritas em PHP (mais adiante).
Não acho que importe se os pares chave-valor são mais lentos para recuperar porque, realisticamente, é improvável que sejam visivelmente mais lentos.
Então, tudo se resume ao que é mais prático.
Concordo que campos/colunas provavelmente não são ideais.
Pares de chave-valor são relativamente fáceis de visualizar/ler para um humano, especialmente um que saiba como executar
select *
a partir de uma tabela. JSON também não é tão ruim, mas muitos provavelmente argumentariam que não é tão fácil de ler em comparação a pares de chave-valor.Você também pode simplesmente armazenar o arquivo .ini inteiro como está dentro de uma
TEXT
coluna. Novamente, duvido que o microssegundo extra para recuperá-lo importe tanto, nem acho que o minúsculo armazenamento extra necessário importe nos dias de hoje. A praticidade vence todos os dias da semana.