3

Azureテーブルエンティティに配列を格納しようとしています。現在、ネイティブにサポートされている配列のタイプはバイト配列のみで、長さは64kに制限されています。サイズは十分ですが、long、double、timestampの配列をエンティティに格納したいと思います。

要求されたタイプに自分で複数のバイトをキャストできることは明らかですが、それを実現するためのベストプラクティスがあるかどうか疑問に思いました。

明確にするために、これらは単一のキーに関連付けられた固定長の配列(たとえば、1000セル)です。

4

6 に答える 6

4

私は、Lucifure Stash と呼ばれる Azure テーブル ストレージ クライアントを作成しました。これは、配列、列挙型、大きなデータ、シリアル化、パブリック プロパティとプライベート プロパティ、およびフィールドなどをサポートしています。

https://github.com/hocho/LucifureStashで入手できます。

于 2012-02-22T23:58:09.897 に答える
3

私はあなたがすでに言及した方法以外にこれを行うための良い方法を考えようとしていましたが、途方に暮れています. 私が思いつく最も簡単な解決策は、配列を取得し、それをバイナリ シリアル化し、バイナリ配列プロパティに格納することです。

私が思いついたが却下した他のオプション:

  1. ネイティブに格納することが重要な場合は、この情報を別の子テーブルに保持できます (Azure テーブルには技術的にリレーションシップがないことはわかっていますが、このタイプのものを表現できないわけではありません)。これの欠点は、オリジナルよりもかなり遅くなることです。
  2. 配列を取得し、XML でシリアル化し、文字列プロパティに格納します。これは、サード パーティのデータ エクスプローラー ツールを使用しているときに配列の内容を確認でき、配列の内容と完全に一致するものを探す (非効率的な) クエリを実行できることを意味します。
  3. Lokad Cloud ファット エンティティを使用してデータを保存します。これは基本的にオブジェクト全体を取得し、それをバイナリでシリアル化し、結果をテーブル エンティティのプロパティ全体で 64 KB のブロックに分割します。これにより、発生しているような問題は解決されますが、このフレームワークをサポートするツールを使用してのみデータにアクセスできます。
于 2010-12-01T00:39:41.873 に答える
3

格納するキーと値のコレクションだけがある場合は、Azure BLOB も確認できます。単一のブロブごとに最大 25M の時間値ポイントの配列をかなり効率的に格納できます (データセット内でランダム アクセスを使用)。

于 2010-12-01T05:21:36.960 に答える
2

オブジェクトを BLOB ストレージに格納することを選択し、それを取得するために複数の "キー" が必要な場合は、ルックアップするキーと正確な BLOB への参照を格納する 1 つまたは 2 つまたは n の Azure テーブルを作成できます。アイテム。

于 2011-02-17T10:51:47.870 に答える
0

値をcsv文字列として保存してみませんか?

于 2011-09-10T07:03:00.853 に答える