2017-10-15 26 views
1

私たちのアプリケーションでは、トランザクションで最大20 MBの着信メッセージ要求を処理する必要があります。このメッセージは構造化されており、ネストされたオブジェクトと配列を持っています。 Azure Cosmos DB(Document DB API)をデータベースとして使用する予定です。文書DBは最大文書サイズとして2MBの制限があるため、私たちはメッセージデータをいくつかの文書に格納するようにモデル化しました。 Javascriptストアプロシージャを使用してこれらのすべてのドキュメントをトランザクションに挿入しようとしましたが、SPのリクエストサイズにはサイズ制限(2 MB)があります。Azure Cosmos DB - Document DB APIに20MBのメッセージを挿入する方法

20MBメッセージに関連するすべての文書をトランザクションに保存する方法を教えてもらえますか?

私が遭遇した1つの方法は、ドキュメントを個別に保存し、書き込みが失敗した場合にそれらをすべて識別して削除するストアプロシージャを作成することです。 このシナリオでは、これが利用可能な最良のアプローチであるかどうかを知りたいと思います。

編集:私が考えていたもう1つの可能なアプローチ - ブロブストレージに20 MBのメッセージをアップロードし、スプリットと挿入のためにSP内部からアクセスします。しかし、javascript SP(XMLHttpRequestはSPでは使用できませんでした)からBLOBにアクセスする方法を見つけることができませんでした。

+0

私はMSサポートに連絡します。彼らは特定の場合の要求に応じてサイズの制限を無効にすることが知られています – wasabi

答えて

1

Azure Cosmos DBのattachmentsの機能を調べましたか?これは、独自のトランザクションセマンティクスを実装するよりも簡単なアプローチになります。クエリに必要なプロパティのみをドキュメントに保存し、20MBのフルドキュメントを添付ファイルとして保存する必要があります。

+0

私たちの要件は、すべてのメッセージデータを照会/解析できることです。したがって、ブロブ内のストアは、最も効率的な方法のようには見えません。文書をコレクション自体に保存する方法はありますか? –

+0

また、より大きな文書をCosmos DBに保存することは、パフォーマンスに多大な影響を与えると付け加えます。だから可能な限り、Aravindの提案は良い方法です。大きな文書を挿入したり読むときにあなたのRUコストがどうなるかを見てください。残酷です。 –

関連する問題