2017-10-15 4 views
1

우리는 애플리케이션에서 트랜잭션에서 최대 20MB의 수신 메시지 요청을 처리해야한다는 요구 사항이 있습니다. 이 메시지는 잘 구조화되어 있으며 중첩 된 개체 및 배열을 포함합니다. Azure Cosmos DB (문서 DB API)를 데이터베이스로 사용할 계획입니다. 문서 DB는 최대 문서 크기가 2MB로 제한되어 있으므로 여러 문서에 저장되도록 메시지 데이터를 모델링했습니다. Javascript 저장 프로 시저를 사용하여 이러한 모든 문서를 트랜잭션에 삽입하려고했지만 SP의 요청 크기에 크기 제한 (2MB)이 있습니다.Azure Cosmos DB - Document DB API에 20MB의 메시지를 삽입하는 방법

누군가 20MB 메시지와 관련된 모든 문서를 트랜잭션으로 저장하는 방법에 대해 도움을 줄 수 있습니까?

내가 겪은 한 가지 방법은 문서를 독립적으로 저장하고 쓰기 작업 중 하나가 실패 할 경우를 대비하여 문서를 식별하고 삭제하는 저장 프로 시저를 작성하는 것입니다. 이것이 우리 시나리오에서 가장 유용한 접근법인지 알고 싶습니다.

편집 : 또 다른 가능한 접근법 - 20MB 메시지를 BLOB 저장소에 업로드하고 SP 내부에서 액세스하여 분할 및 삽입합니다. 하지만 javascript SP (XMLHttpRequest는 SP에서 허용되지 않음)에서 BLOB에 액세스하는 방법을 찾을 수 없습니다.

+0

MS 지원팀에 문의하십시오. 특정 케이스에 대한 수요가있을 때 크기 제한을 해제하는 것으로 알려져 있습니다. – wasabi

답변

1

Azure Cosmos DB의 attachments 기능을 살펴 보았습니까? 이는 자신의 트랜잭션 의미를 구현하는 것보다 간단한 접근법입니다. 쿼리에 필요한 속성 만 문서에 저장 한 다음 20MB 전체 문서를 첨부 파일로 저장해야합니다.

+0

우리는 모든 메시지 데이터를 쿼리/구문 분석 할 수 있어야합니다. 따라서 얼룩에 보관하는 것이 가장 효율적인 방법이 아닙니다. 문서를 컬렉션 자체에 저장할 수있는 방법이 있습니까? –

+0

Cosmos DB에 더 큰 문서를 저장하면 성능에 막대한 영향을 미친다는 점도 덧붙이 겠습니다. 가능한 모든 경우 Aravind의 제안은 좋은 방법입니다. 큰 문서를 삽입하거나 읽을 때 RU 비용이 어떻게되는지보십시오. 그것은 잔인합니다. –

관련 문제