2011-03-23 117 views
2

我正在研究需要將複雜數據作爲實體存儲在Azure表中的研究項目。表格的實體是包含許多幾何點和線的單元格,其中包含對父級的引用等。除非我錯了,一個實體只能包含簡單類型(string,int,bool等),但不包含任何與List類似的東西。在此期間,我正在通過序列化整個結構並將其轉換爲base64字符串並使實體僅包含此字符串以及一些其他標誌來解決此問題。Azure表複雜數據最佳實踐

從長遠來看,這是一種荒謬的做法,但是現在只有在部署更負責任/適當的方法之前,現在必須進行破解。

對於複雜數據類型和Azure,最佳做法是什麼?寫出很多斑點並用桌子跟蹤它們?

回答

2

在這種情況下,我不認爲Azure存儲與常規數據存儲大不相同。複雜的數據類型總是將其屬性映射到簡單的數據列,或者序列化(如您所說)。

2

我覺得有很多東西需要考慮使用Azure中時,這種類型的存儲的約 - 尤其是在思考:

  • 索引 - 天青只允許指數和訂單僅在元組(account, table name, partition key, row key) - 所以,如果你需要以多種方式搜索或訂購數據,那麼通常您需要考慮將多個實體添加到多個表以代表您的單個實際實體
  • 聚合 - Azure表存儲不包含任何類似SQL的SQL,AVERAGE等函數 - 所以如果你需要做任何這些,那麼你需要在自己的代碼中完成它們,並在某處(或屬)他們在飛行中每次 - 但這可能是緩慢和昂貴的大型數據集)
  • 性能 - 根據您的應用程序,這裏可能有很多要考慮。
  • 成本 - 請記住Azure存儲每筆交易的費用 - 所以如果你做了很多的查詢,那麼它可能會花費你的錢(還記得,雖然Azure存儲是可擴展的,但每個帳戶的每秒查詢限制並不高)

有大量的文章和文件在那裏上的圖案和使用Azure的表和Blob存儲的做法 - 您的具體情況,使用斑點與一個或多個基於表格indicies肯定聽起來像一個途徑去探索。

+0

+1如果我沒有錯,如果你試圖通過一個列過濾器不排鍵或分區鍵,你得到所有的表,它得到在客戶端過濾,對吧?當你決定使用桌面存儲時,我想有很多計劃要做。 – vtortola 2011-03-24 12:25:48

+1

這不是很正確@vtortola - 你可以通過其他字段執行一些'filter'操作。但是,這些操作很慢,因爲它們在不使用任何索引的情況下搜索整個表 - 所以如果您有一百行數據,那麼服務器會在決定返回什麼內容之前查看它們(如SQL中的表掃描)。 – Stuart 2011-03-24 12:54:15

+0

謝謝!我會看看過濾器。到目前爲止,我只使用行鍵和分區鍵進行管理,但我將進一步需要該功能。 – vtortola 2011-03-24 14:51:45