Domanda

La mia applicazione viene configurato attraverso un sacco di chiave / valore (diciamo 30.000 per esempio)

Voglio trovare il miglior metodo di distribuzione per queste configurazioni, sapendo che voglio evitare definisce per consentire runtime riconfigurazione.

Ho pensato di

  • li pre-compilazione in un array tramite un file php
  • li pre-compilazione nel database SQLite un tmpfs
  • li pre-compilazione in un memcached db

Quali sono le opzioni per

  • il miglior tempo di accesso casuale per questi configurazione (la memoria non è un problema)?
  • il tempo di accesso migliore strutturato se posso spezzare questi configurazione in famiglie come (rete, i18n, ..)

Grazie Jerome

È stato utile?

Soluzione

Bene, se la memoria non è un problema, basta serializzare un array ad un file. Non c'è assolutamente alcuna soluzione più veloce di così. Non avere l'I / O e l'overhead biblioteca di SQLite, e non si ha il sovraccarico della rete di memcached.

Ma tenere a mente, mosto di memoria davvero non essere un problema. Sareste caricando l'intero array di 30.000 elementi in memoria in una sola volta, anziché utilizzare un database, dove è possibile caricare su una base alle necessità.

Per strutturare le impostazioni, si potrebbe mettere ciascuno in un proprio file.

Ma in realtà, si dovrebbe utilizzare un database. Questo è quello che ci sono per. Davvero domanda perché si avrebbe bisogno di preoccuparsi di 30k settings..you potrebbe voler riconsiderare la progettazione dell'applicazione.

Altri suggerimenti

Come su di un database?

Con uno schema come questo:

| key | value |

Si potrebbe avere i dati in questo modo:

| currency | pound |
| timezone | GMT   |

Significa, inoltre, è possibile interrogare in questo modo:

SELECT * FROM options WHERE key = 'timezone'

O anche tornare molte opzioni:

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

Questo può essere in qualsiasi tipo di dati, non ultimo un database SQLite. Se stai usando un linguaggio come PHP è possibile utilizzare ADOdb per l'astrazione del database in modo che le applicazioni portabili tra i diversi tipi di database, solo un pensiero, se si erano preoccupati per essere legato ad un database.

Se si desidera strutturato, direi che i file INI utilizzando la parse_ini_file funzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top