2014-01-15 24 views
1

我們已經有了一個windows azure表存儲系統,我們有各種實體類型在白天報告值,所以我們有以下分區和行關鍵方案:Windows Azure表訪問延遲分區鍵和行鍵選擇

大約有4000 - 5000個實體。有6種實體類型,類型大致均勻分佈。所以每個人約800人。

ParitionKey:的EntityType最新

行鍵:ENTITYID

每一行記錄值,該日期的實體。這是目前JSON序列化。

數據非常冗長。

我們會定期回顧這些分區在一個月或兩個月內的值,具體取決於我們的網站用戶想要查看的內容。

我們遇到了一個問題,如果我們想查詢一個實體的一個月的數據,我們發現我們必須通過entityId查詢31個分區鍵。

初始速度非常慢,但在第一次調用之後,結果被緩存。

不幸的是,網站的本質是會有不同數量的不同查詢,所以數據不太可能從緩存中受益。

我們顯然可以使分區更大,也許整整一週的數據並將rowKeys擴展到entityId和日期。

還有哪些其他選項對我開放,或者僅僅是Windows Azure表遭受相當高的延遲?

+0

不知道這是否適用於您的情況,但我們在應用程序中處理它的方式是我們將數據存儲兩次。數據的第二個副本具有「PartitionKey」和「RowKey」值反轉,即RowKey值變成了PartitionKey,反之亦然。這樣,如果我們想要搜索特定的'EntityId',我們直接進入該分區並在那裏搜索。 –

回答

2

一些選項包括

  1. 使並聯

  2. 31個查詢請上的分區鍵範圍中的單個查詢,即

    分區鍵> =的EntityType-起始日期和分區鍵< = entityType-EndDate和Row key = entityId。

這可能是取決於你的數據,這個查詢可能比當前的查詢延遲更少。

+0

您能否提供分區密鑰的格式和示例?我很想知道,爲什麼這不起作用。 – hocho

+0

剛剛刪除該評論。工作正常。我很抱歉感到困惑。它確實工作正常,但是我需要使用ge,lte和eq。這是我混亂的根源。 –

+0

很高興爲你效勞! – hocho