Frage

Ich bin auf der Suche Arrays in Azure Table Einheiten zu speichern. Derzeit unterstützt die einzige Art von Array-nativ ist Byte-Array, beschränkt auf 64K Länge. Die Größe ist genug, aber ich mag Arrays von Long-Positionen, Doppel- und Zeitstempel in einer Einheit speichern.

Ich kann mehrere Bytes auf den gewünschten Typ mich offensichtlich werfen, aber ich frage mich, ob es irgendeine Best-Practice das zu erreichen.

Um zu klären, wird diese feste Länge Arrays (z.B. 1000 Zellen) mit einem einzigen Schlüssel zugeordnet ist.

War es hilfreich?

Lösung

Ich habe versucht, eine nette Art und Weise zu denken, diese anders als die Methode zu tun haben Sie bereits erwähnt, und ich bin ratlos. Die einfachste Lösung, die ich mit oben kommen kann ist das Array zu nehmen, binäre serialize es und Speicher in einer binären Array-Eigenschaft.

Andere Optionen Ich habe kommen mit, aber entlassen:

  1. Wenn es nativ speichern wichtig ist, könnten Sie diese Informationen in einem anderen Kind Tisch halten (ich weiß Azure Tabellen technisch Beziehungen nicht haben, aber das bedeutet nicht, dass Sie nicht diese Art der Sache darstellen kann). Der Nachteil dieser ist, dass es deutlich langsamer als die ursprüngliche sein wird.
  2. Nehmen Sie die Array, XML serialize es und speichern sie in einem String-Eigenschaft. Dies würde bedeuten, dass Sie die Inhalte Ihres Arrays sehen können, als 3rd-Party-Daten-Explorer-Tools und man konnte laufen (ineffizient) fragt diesen Blick nach einer genauen Übereinstimmung über den Inhalt des Arrays.
  3. Verwenden Sie Lokad Wolke Fett Einheiten Ihre Daten zu speichern. Dies resultiert im Wesentlichen nimmt Sie sind ganzes Objekt, binär serialisiert sie und teilt die Ergebnisse in 64kb Blöcke über die Eigenschaften der Tabelle Einheit. Dies löst Probleme wie die Sie erlebt haben, aber Sie werden nur in der Lage sein, Ihre Daten mithilfe von Tools zuzugreifen, die diesen Rahmen unterstützen.

Andere Tipps

Ich habe ein Azure-Tabellen-Speicher-Client geschrieben, genannt Lucifure Stash, die Arrays, Aufzählungen, große Daten, Serialisierung, öffentliche und private Eigenschaften und Felder und vieles mehr.

unterstützt

Sie können es unter http://www.lucifure.com oder von NuGet.

Wenn Sie nur einen Schlüssel-Wert-Sammlung zu speichern, dann können Sie auch Besuche Azure BLOBs . Sie können ziemlich effizient speichern Arrays von bis zu 25M Zeitwertpunkte pro einzelner Blob (mit einem zufälligen Zugriff innerhalb des Datensatzes).

Wenn Sie Ihr Objekt in Blob Speichern und Notwendigkeit speichern mehr als ein „Schlüssel“ um es zu bekommen, können Sie einfach eine azur Tabelle erstellen oder zwei oder n, wo Sie speichern Sie die gewünschte Taste suchen und den Verweis auf der genaue Blob Artikel.

Warum Sie nicht speichern die Werte als csv-Strings?

Sie können Ihre Array als JSON-String mit .NET JavaScript Serializer serialisiert: http://msdn.microsoft.com/en -US / library / system.web.script.serialization.javascriptserializer.aspx

Diese Klasse hat eine „MaxJsonLength“ Eigenschaft, die Sie Ihre Arrays nutzen könnten, um sicherzustellen, nicht 64K überstieg, wenn man sie wurden Serialisierung. Und Sie können die gleiche Klasse verwenden, um Ihre gespeicherten Objekte deserialisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top