[英]Azure Cosmos DB API API for MongoDB: Shared throughput limit
[英]Actual document size limit for Azure Cosmos DB’s API for MongoDB?
我正在做一些測試,發現 CosmosDB 的最大文檔大小限制似乎與文檔不一致: https://docs.microsoft.com/en-us/azure/cosmos-db/concepts-limits#per-item-limits
< 2Mb
,如官方文檔中所述(上面的鏈接)> 2Mb
,因此失敗並顯示錯誤代碼(413)發生 RequestEntityTooLarge 錯誤:Microsoft.Azure.Cosmos.CosmosException:響應>狀態碼不表示成功:RequestEntityTooLarge (413); 子狀態:0; >ActivityId:c1977df8-ec39-40b9-bd69-6e6a40ff6c00; 原因:(消息:{"Errors":["Request >size is too large"]}
結論:結果與文檔相符
< 2Mb
> 2Mb
並且文檔狀態不同(或者我遺漏了一些東西),它仍然成功錯誤:MongoDB.Driver.MongoWriteException:寫入操作導致錯誤。 >WriteError: { Category: "Uncategorized", Code: 16, Message: "Error=16, Details='Response >狀態碼不表示成功:RequestEntityTooLarge (413); Substatus: 0; >ActivityId: 8f20b261-e1c5-4ca9 -b4e6-6cbc5352ce7e; 原因:(消息:{“錯誤”:[“請求>大小太大”]}
結論:結果與文檔不符
字節數按以下方式計算:
var itemStr = JsonConvert.SerializeObject(item);
var bytes = Encoding.UTF8.GetBytes(itemStr);
Console.WriteLine($"total num of bytes: {bytes.Length}");
關於成功將大項寫入MongoDB,我也通過mongoshell驗證了存儲的文檔大於4Mb:
Object.bsonsize(db.Items.findOne({_id:ObjectId("61dec458316798c759091aef")}))
非常感謝任何幫助,謝謝!
Cosmos DB 的 API 用於 MongoDB 具有壓縮數據的二進制存儲格式。 壓縮量取決於文檔中數據的形狀。 具有更深層次結構的文檔往往比那些更扁平的文檔壓縮得更多。 因此,您可以存儲大於記錄的 2MB 限制的未壓縮數據。
雖然可以使用 Cosmos DB 的 API for MongoDB 存儲超過 2MB 的未壓縮數據,但我不建議這樣做,因為您不可能知道在插入之前將擁有多少壓縮數據。
我還應該指出,一般而言,在成本和延遲方面,您將擁有更多的較小文檔,而不是較大尺寸的文檔(這也適用於原生 MongoDB)。 因此,當您 model 為您的應用程序提供數據時,請記住這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.