2017-10-15 159 views
1

我們有一個要求我們的應用程序在事務中處理最多20 MB的傳入消息請求。此消息結構良好,並具有嵌套的對象和數組。我們計劃使用Azure Cosmos DB(Document DB API)作爲我們的數據庫。由於文檔數據庫的最大文檔大小限制爲2 MB,因此我們將消息數據建模爲存儲在多個文檔中。我們試圖使用Javascript存儲過程將所有這些文檔插入到事務中,但SP對請求大小有一個大小限制(2 MB)。如何在Azure Cosmos DB中插入20 MB的消息 - 文檔DB API

任何人都可以幫助我們如何在交易中保存與20 MB消息相關的所有文檔(全部保存或不保存)?

我遇到的一種方法是獨立保存文檔,並編寫存儲過程來識別並刪除所有寫入失敗的情況。 我想知道這是否適合我們的場景。

編輯:我正在考慮的另一種可能的方法 - 將20 MB的消息上傳到blob存儲中,並從SP內部訪問它進行拆分和插入。但是我找不到從javascript SP訪問blob的方法(SP中不允許XMLHttpRequest)

+0

我會聯繫MS支持。據瞭解,它們可以根據需要禁用某些情況下的大小限制。 – wasabi

回答

1

您是否已經查看了Azure Cosmos DB的attachments功能?這將比實現自己的事務語義更簡單。您應該只存儲在文檔中查詢所需的屬性,然後將20MB的完整文檔作爲附件存儲。

+0

我們的要求是能夠查詢/解析所有的消息數據。因此,存儲在一個blob看起來不是最有效的方式。文檔可以存儲在集合本身中嗎? –

+0

我還會補充說,在Cosmos DB中存儲較大的文檔會對性能產生巨大的影響。所以,如果可能的話,Aravind的建議是一個很好的選擇。看看插入或閱讀較大文檔時RU費用會發生什麼 - 這是殘酷的。 –