Pergunta

Meu aplicativo é configurado por meio de muitas chaves/valores (digamos 30.000, por exemplo)

Quero encontrar o melhor método de implantação para essas configurações, sabendo que quero evitar definir para permitir a reconfiguração do tempo de execução.

Eu pensei em

  • pré-compilá-los em uma matriz através de um arquivo php
  • pré-compilá-los em um banco de dados TMPFS SQLite
  • pré-compilá-los em um banco de dados de memcached

Quais são minhas opções para

  • O melhor tempo de acesso aleatório para essas configurações (a memória não é um problema)?
  • O melhor tempo de acesso estruturado se eu puder dividir essas configurações em famílias como (Network, i18n, ..)

Obrigado Jerome

Foi útil?

Solução

Bem, se a memória não for um problema, basta serializar uma matriz em um arquivo. Não há absolutamente nenhuma solução mais rápida do que isso. Você não tem a sobrecarga de E/S e da biblioteca do SQLite e não tem a sobrecarga de rede do Memcached.

Mas lembre -se, a memória deve verdade não ser um problema. Você estaria carregando a matriz inteira de 30.000 elementos na memória de uma só vez, em vez de usar um banco de dados, onde você pode carregá-los de forma necessária.

Para estruturar as configurações, você pode colocar cada um em seu próprio arquivo.

Mas, na verdade, você deve estar usando um banco de dados. É para isso que eles estão lá. Eu realmente questiono por que você precisaria se preocupar com as configurações de 30 mil ... você pode querer reconsiderar o design do seu aplicativo.

Outras dicas

Que tal em um banco de dados?

Com um esquema como este:

| key | value |

Você pode ter dados como este:

| currency | pound |
| timezone | GMT   |

Isso também significa que você pode consultar assim:

SELECT * FROM options WHERE key = 'timezone'

Ou até devolver muitas opções:

SELECT * FROM options WHERE key IN ('timezone','currency')

Isso pode ser em qualquer tipo de banco de dados, principalmente um banco de dados SQLite. Se você está usando um idioma como PHP, você pode usar Adodb Para abstração do banco de dados, para que seu aplicativo seja portátil entre diferentes tipos de banco de dados, apenas um pensamento se você estivesse preocupado em estar vinculado a um banco de dados.

Se você quiser estruturado, eu diria arquivos ini usando o parse_ini_file função.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top