Frage

Meine Anwendung wird über eine Menge von Schlüssel / Wert-konfiguriert (sagen wir mal 30.000 zum Beispiel)

Ich mag die beste Bereitstellungsmethode für diese Konfigurationen zu finden, zu wissen, dass ich will DEFINEs vermeiden, für die Laufzeit Neukonfiguration zu ermöglichen.

Ich habe gedacht

  • Vor dem Kompilieren sie in ein Array über eine PHP-Datei
  • sie in eine tmpfs SQLite-Datenbank vor-Kompilierung
  • Vor dem Kompilieren sie in einem Memcached db

Was sind meine Optionen für

  • die beste Zugriffszeit auf diese Konfiguration (Speicher ist kein Problem)?
  • die besten strukturierte Zugriffszeit, wenn ich wie diese Konfiguration in Familien brechen kann (Netzwerk, i18n, ..)

Danke Jerome

War es hilfreich?

Lösung

Nun, wenn der Speicher kein Problem ist, serialisiert nur ein Array in eine Datei. Es gibt absolut keine schnellere Lösung als diese. Du hast nicht das I / O hat und Bibliothek Overhead von SQLite, und Sie haben nicht die Netzwerk-Overhead von Memcached.

Aber bedenken Sie, Speicher muss wirklich kein Problem sein. Sie würden die gesamte 30.000 Elementanordnung in dem Speicher auf einmal geladen, wie auf der Verwendung eine Datenbank im Gegensatz, in dem man sich auf einer Basis nach Bedarf geladen werden konnte.

Um die Einstellungen zu strukturieren, könnten Sie eine eigene Datei setzen jeweils in.

Aber wirklich, sollten Sie eine Datenbank verwenden. Das ist, was sie da sind. Ich wirklich Frage, warum Sie Sorge über 30k brauchen würde settings..you möchten Ihre Anwendung Design zu überdenken.

Andere Tipps

Wie wäre es in einer Datenbank?

Mit einem Schema wie folgt aus:

| key | value |

Sie können Daten wie folgt aussehen:

| currency | pound |
| timezone | GMT   |

Es bedeutet auch, Sie es wie folgt abfragen:

SELECT * FROM options WHERE key = 'timezone'

oder sogar viele Optionen zurück:

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

Dies kann in jeder Art von Datenbank, nicht zuletzt eine SQLite-Datenbank. Wenn Sie eine Sprache wie PHP verwenden können Sie verwenden ADOdb für Datenbank-Abstraktions so Ihre Anwendung portabel zwischen unterscheidet Datenbanktypen, nur so ein Gedanke, wenn Sie über Gewirr eines auf eine Datenbank betroffen waren.

Wenn Sie strukturiert werden sollen, würde ich sagen, INI-Dateien, die

scroll top