2010-11-30 64 views
2

我正在尋找將數組存儲在Azure表實體中。目前,本地支持的唯一類型的數組是字節數組,限於64k的長度。這個大小已經足夠了,但是我想在一個實體中存儲longs,double和timestamp的數組。Azure Table存儲實體中的數組(非字節)

我可以明顯地投多個字節的請求的類型,不過我在想,如果有任何的最佳實踐來實現這一目標。

爲了澄清,與單個鍵關聯的這些長度固定陣列(例如1000個細胞)。

回答

3

我一直想嘗試的一個很好的方式比你已經提到的方法來做到這一點其他的,我不知所措。我能想出的最簡單的解決方案是將數組,二進制序列化並存儲在二進制數組屬性中。

其他選擇,我想出了,但駁回:

  1. 如果存儲它本身是非常重要的,你可以保存在另一個子表該信息(我知道天青表不技術上有關係,但這並不意味着你不能代表這種類型的東西)。這樣做的缺點是它會比原來慢得多。
  2. 取出數組,將XML序列化並將其存儲在字符串屬性中。這意味着您可以在使用第三方數據資源管理器工具時看到數組的內容,並且可以運行(低效率)查詢來查找數組內容的完全匹配。
  3. 使用Lokad Cloud fat entities來存儲您的數據。這基本上把你看作是整個對象,二進制序列化它並將結果拆分爲表格實體屬性中的64kb塊。這確實可以解決您遇到的問題,但您只能使用支持此框架的工具訪問數據。
+0

或者您可以從Lokad.Cloud獲取代碼並根據需要重新使用它。 – 2010-12-01 05:19:24

3

如果你只有一個鍵值集合來存儲,那麼你也可以檢查Azure BLOBs。他們可以更有效地存儲每個blob25M時間點數組(在數據集中隨機訪問)。

+0

我希望在編寫我的清單時,儘管如此,我想我被困在桌子上。這將是可能的,只是序列化(二進制/ XML,無所謂),並通過密鑰存儲整個對象。最大的缺點是沒有很好的工具支持來管理大量的斑點,而且你只能用鍵來查詢。 – knightpfhor 2010-12-01 22:18:21

+0

您可以使用配對的表格行來填充數據。 – 2011-09-10 07:04:22

2

如果您選擇將對象存儲在blob存儲中,並且需要多個「key」才能獲取它,您可以創建一個azure表或兩個或n個存儲要查找的關鍵字和參考的位置到確切的blob項目。

+0

這也是一個不錯的選擇,多一點工作,但提供更多的靈活性,同時仍然保持低成本。 – maulik13 2016-11-01 10:38:36

0

你爲什麼不存儲值作爲CSV字符串?

4

我已經寫了Azure的表存儲客戶端,稱爲Lucifure藏匿,它支持數組,枚舉,大數據,系列化,公共和私有屬性和字段等等。

您可以http://www.lucifure.com或的NuGet得到它。