JSON-design-best-practices
Ich soll JSON-Repräsentation ein Postfach, so dass ich nachsehen kann, mails einfach, zum Beispiel mailjson[UID].Body
.
Jedoch nach einem Blick auf Angularjs und Ember, templating MVC-JS-engines, es scheint, dass die JSON-sollten im folgenden format sein:
[{
"id": 1,
"body": "Blah blah blah..."
},
{
"id": 2,
"body": "More blah foo blah"
},
{
"id": 3,
"body": "Hopefully you understand this example"
}]
Und dann es gibt einige findAll(id) - Funktion greifen Sie das Element anhand der id man will, dass durchläuft die JSON. So nun Frage ich mich, hat mein JSON-design haben Verdienst? Mache ich es falsch? Warum nicht Menschen nutzen die dict-lookup-design, ich bin mit meinem JSON?
Andere Tipps, um sicherzustellen, dass ich eine gute Daten-Struktur-design, wäre ich dankbar.
- Es klingt wie Sie sind im Grunde die Frage nach der (dis -) Vorteile der hash-Tabellen vs Listen/arrays. Es hängt alles davon ab, was Sie hauptsächlich tun mit Ihren Daten.
- Ich bin dabei für die Generierung von E-mail-Archive github.com/kaihendry/imap2json
- Das ist die falsche Antwort 🙂 Was er meint ist, es hängt davon ab, was Sie TUN, nicht, wie Sie es speichern. Welchen Algorithmus Sie verwenden für die Verarbeitung der Daten. Wenn Sie wissen, dass Sie gehen, um Zugriff auf das n-te element in a storage container gehen für die arrays, wenn Sie wissen, dass Sie gehen, um einige string-Schlüssel zu finden, ein Stück von Informationen in einem großen Behälter gehen, für hashes. Man bestellt (nummeriert), die Lagerung, die andere ist ungeordnet. Wenn Sie zum abrufen Ihrer E-Mails-ID, und es gibt keine (großen) Lücken in der ID-Nummerierung, arrays sind besser.
- UIDs in mein E-mail.json-Beispiel aufeinander sind, aber Sie haben Lücken, da E-Mails gelöscht oder verschoben werden, um unterschiedliche E-mail-Felder im Laufe der Zeit. So sehen Sie oft eine E-mail.json, die aussieht wie 2,4,5,6,10,11,15,16,17. Häufige Mengen von Lücken, aber ich würde nicht sagen, dass große.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Best practice für die Lagerung von big-Tabelle in JSON ist die Verwendung von array.
Der Grund ist, dass beim Parsen von JSON-array in den Speicher-array gibt es keinen Geschwindigkeitsnachteil Gebäude anzeigen. Wenn Sie brauchen, um zu bauen, die in-memory-index mehrere Felder für den schnellen Zugriff, können Sie es während oder nach dem laden. Aber wenn Sie speichern JSON-so wie Sie es Taten, Sie keine Wahl haben, schnell zu laden, ohne Gebäude, Karte, da JSON-parser wird immer zu bauen, die riesige Karte von Kennungen, die basierend auf Ihrer Struktur.
Struktur, wie Sie beim speichern von Daten im Speicher muss nicht (und sollte nicht) die gleiche wie die Struktur der Speicherung auf Festplatte, da es keine Möglichkeit gibt, zu serialisieren/Deserialisieren internen JavaScript-map-Struktur. Wenn es möglich war, dann würden Sie serialisieren und speichern von Indizes wie MS SQL-Server speichert Tabellen und Indizes.
Aber wenn die Rahmen, die Sie verwenden, zwingt Sie dazu, haben die gleiche Struktur im Speicher und der Festplatte, dann unterstütze ich Ihre Wahl-id als Schlüssel in einem großen Objekt, denn dann ist es leichter zu passieren id im JSON-requests vom server zu tun, jede Aktion mit E-Mail-Element oder aktualisieren Sie den Status in der Benutzeroberfläche, unter der Annahme, dass sowohl server und browser halten beträchtliche Liste von E-Mail-Elemente im Speicher.