Question

Mon application se configure via un grand nombre de clés / valeurs (disons par exemple 30,000)

Je veux trouver la meilleure méthode de déploiement pour ces configurations, sachant que je veux éviter DEFINE pour permettre l'exécution de reconfiguration.

J'ai pensé

  • les pré-compilation dans un tableau via un fichier php
  • les pré-compilation dans une base de données de tmpfs
  • les pré-compilation dans un memcached db

quelles sont mes options pour

  • le meilleur temps d'accès aléatoire à ces configuration (mémoire n'est pas un problème)?
  • le temps d'accès mieux structuré si je peux briser ces configuration dans les familles comme (réseau, i18n, ..)

Merci Jérôme

Était-ce utile?

La solution

Eh bien, si la mémoire est un problème, juste sérialiser un tableau dans un fichier. Il n'y a absolument pas de solution plus rapide que cela. Vous n'avez pas les frais généraux d'E / S et de la bibliothèque de SQLite, et vous n'avez pas la charge réseau de memcached.

Mais gardez à l'esprit, la mémoire doit vraiment pas un problème. Vous seriez le chargement de la totalité rangée d'éléments 30 000 dans la mémoire à la fois, au lieu d'utiliser une base de données où vous pouvez les charger sur une base au besoin.

Pour structurer les paramètres, vous pouvez mettre chacun dans son propre fichier.

Mais vraiment, vous devez utiliser une base de données. C'est ce qu'ils sont là pour ça. Je vraiment question pourquoi vous auriez besoin de vous soucier de 30k settings..you pourrait vouloir reconsidérer la conception de votre application.

Autres conseils

Qu'en est-il dans une base de données?

Avec un schéma comme celui-ci:

| key | value |

Vous pourriez avoir des données comme ceci:

| currency | pound |
| timezone | GMT   |

Cela signifie également que vous pouvez l'interroger comme ceci:

SELECT * FROM options WHERE key = 'timezone'

Ou encore revenir de nombreuses options:

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

Cela peut être dans une sorte de base de données, notamment une base de données SQLite. Si vous utilisez un langage tel que PHP, vous pouvez utiliser ADOdb d'abstraction de base de données afin que votre application est portable entre les différents types de bases de données, juste une pensée si vous étiez préoccupé par être lié à une base de données.

Si vous voulez structuré, je dirais que les fichiers ini en utilisant le

scroll top