以前的文章「分而治之」在介紹大表分區時,做者還沒有實現不一樣的分區策略,即只能按指定的分區鍵進行分區。此次做者完善了一下分區策略,在規劃大表分區時能夠按Hash或者時間範圍進行分區,因此本篇介紹不一樣的分區策略適用的場景,同時介紹一下表掃描時如何指定從特定分區查詢數據。框架
在新建實體模型時,根據數據是否動態增加以及預估數據規模後肯定合適的分區策略,另外根據做者虛擬機的配置單分區的記錄數在100萬內比較合適:測試
注意:實體成員做爲分區鍵時是隻讀的,實體保存後不能修改分區鍵。code
添加分區鍵時指定某個實體成員做爲分區鍵,適用於:blog
添加分區鍵時指定成員並指定Hash數量做爲分區鍵,適用於基礎數據須要分區,且分區的總數能夠肯定在必定範圍內。虛擬機
注意:Hash分區在查詢數據指定分區謂詞時只能進行相等判斷hash
添加分區鍵時指定時間類型的成員並指定按年、月、日做爲分區鍵,適用於動態增加的數據按時間範圍進行分區,最簡單的例子是訂單按年分區存儲。
it
能夠添加多個分區鍵組合分區,如SaaS應用按租戶而後按年進行分區。
io
以前實現的TableScan在掃描表數據時,若是是分區表會依次掃描各個分區,此次做者完善了一下TableScan的實現,在明確知道數據在哪一個分區或分區範圍內時,能夠指定分區謂詞,從而從指定的表分區內掃描數據。示例代碼以下:class
var q = new TableScan<Entities.VehicleState>(); q.Partitions.Equal(t => t.VehicleId, 1); //指定分區謂詞1 q.Partitions.Equal(t => t.CreateTime, new DateTime(2019, 6, 29)); //指定分區謂詞2 return await q.ToListAsync(); //從指定分區掃描數據
注意:目前僅實現謂詞的相等判斷且必須指定所有分區鍵謂詞(即目前只能從肯定分區內掃描),>, >=, <, <=, Between還沒有實現。基礎
本篇主要介紹了大表分區的策略及其適用場景,Github上的運行時已經更新可測試,若是您有問題或Bug報告,請留言或提交Issue。另外您的關注與點贊將是做者最大的動力,以驅動做者盡心盡力完成這個框架。