Azure CosmosDB 通過REST API對數(shù)據(jù)訪問進(jìn)行分頁

來源: 博客園
作者:Lei Zhang
時(shí)間:2020-09-08
17514
我們知道,在訪問CosmosDB的時(shí)候,所有對CosmosDB操作的成本,將由Azure CosmosDB的Request Unit(RU)來表示。讀取1-KB項(xiàng)的成本為1個(gè)請求單位(RU)假設(shè)我們進(jìn)行一個(gè)查詢,如果查詢的結(jié)果很多,數(shù)據(jù)量很大的話,則會造成RU消耗很多,理所當(dāng)然的成本也會很高。我們可以在訪問的時(shí)候,通過設(shè)置:x-ms-max-item-count,來設(shè)置訪問返回的數(shù)據(jù)量。

昨天研究了一個(gè)CosmosDB分頁的問題。

我們知道,在訪問CosmosDB的時(shí)候,所有對CosmosDB操作的成本,將由Azure CosmosDB的Request Unit(RU)來表示。讀取1-KB項(xiàng)的成本為1個(gè)請求單位(RU)

假設(shè)我們進(jìn)行一個(gè)查詢,如果查詢的結(jié)果很多,數(shù)據(jù)量很大的話,則會造成RU消耗很多,理所當(dāng)然的成本也會很高。

我們可以在訪問的時(shí)候,通過設(shè)置:x-ms-max-item-count,來設(shè)置訪問返回的數(shù)據(jù)量。

在這里,筆者主要使用Postman來進(jìn)行演示。

1.我們選擇按照時(shí)間范圍查找

ia_2100000003.png

2.在Header的設(shè)置里

x-ms-documentdb-query-enablecrosspartition,表示跨分區(qū)鍵查詢

x-ms-max-item-count,表示返回的數(shù)據(jù)量為10條。如果我們在請求中沒有指定x-ms-max-item-count,則默認(rèn)返回前100條數(shù)據(jù)。

如果返回的數(shù)據(jù)少于100條,則返回所有數(shù)據(jù)。

ia_2100000004.png

3.我們可以看到查詢的結(jié)果,一共有10條

ia_2100000005.png

4.注意,在上面的返回結(jié)果中,有一個(gè)x-ms-continuation需要注意。

ia_2100000006.png

在上面的請求中,如果返回的數(shù)據(jù)有100條,但是我們只請求了10條數(shù)據(jù),則請求額外的數(shù)據(jù),需要在下一次請求中帶x-ms-continuation這個(gè)值

5.好了,到目前為止,我們已經(jīng)取出前10條數(shù)據(jù),且CosmosDB服務(wù)器告訴我x-ms-continuation。

我們請求第11條-第20條數(shù)據(jù)(即設(shè)置x-ms-max-item-count為10),則需要在http header里面,指定x-ms-continuation。

同樣的,我們請求第11-30條數(shù)據(jù),則設(shè)置x-ms-max-item-count為20

如下圖:

ia_2100000007.png

6.該請求會返回第11條-第20條數(shù)據(jù),如下圖:

ia_2100000008.png

通過這種方式,既可以降低一次請求過多的數(shù)據(jù),造成RU消耗過大,而且還可以實(shí)現(xiàn)分頁的功能。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于博客園,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個(gè)人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家