Pregunta

Mi aplicación se configura a través de un montón de claves / valores (digamos por ejemplo 30.000)

Quiero encontrar el mejor método de implementación para estas configuraciones, sabiendo que yo quiero evitar DEFINEs para permitir la re-configuración de tiempo de ejecución.

He pensado

  • Pre-compilarlas en una matriz a través de un archivo PHP
  • Pre-compilarlas en una base de datos SQLite tmpfs
  • Pre-compilarlas en un memcached db

¿cuáles son mis opciones para

  • el mejor tiempo de acceso aleatorio a éstos configuración (la memoria no es un problema)?
  • el tiempo de acceso estructurado mejor si puedo romper estos configuración en familias como la (red, i18n, ..)

Gracias Jerome

¿Fue útil?

Solución

Bueno, si la memoria no es un problema, simplemente serializar una matriz a un archivo. No hay absolutamente ninguna solución más rápido que esto. Usted no tiene la E / S y los gastos generales de la biblioteca de SQLite, y no tienen la sobrecarga de la red de memcached.

Pero hay que tener en cuenta, al mosto de la memoria realmente no ser un problema. Que estaría cargando toda la matriz 30.000 elemento en la memoria a la vez, en lugar de utilizar una base de datos, donde se podía cargarlos en una función de las necesidades.

Para estructurar la configuración, se podría poner cada uno en su propio archivo.

Pero, en realidad, usted debe utilizar una base de datos. Eso es lo que están allí para. Realmente pregunta por qué se necesita que preocuparse de 30k settings..you podría querer reconsiderar su diseño de la aplicación.

Otros consejos

¿Qué hay en una base de datos?

Con un esquema como éste:

| key | value |

podría tener datos como este:

| currency | pound |
| timezone | GMT   |

También significa que usted puede consultar esta manera:

SELECT * FROM options WHERE key = 'timezone'

O incluso volver muchas opciones:

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

Esto puede ser en cualquier tipo de base de datos, no menos importante una base de datos SQLite. Si estás utilizando un lenguaje como PHP puede utilizar ADOdb de abstracción de base de datos por lo que su aplicación es portable entre diferentes tipos de bases de datos, sólo un pensamiento si estaban preocupados por estar atado a una base de datos.

Si desea estructurado, yo diría que los archivos ini utilizando el parse_ini_file función.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top