2017-10-15 3 views
1

Nous avons une exigence pour notre application pour gérer les demandes de message entrant jusqu'à 20 Mo dans une transaction. Ce message est bien structuré et contient des objets et des tableaux imbriqués. Nous prévoyons d'utiliser Azure Cosmos DB (Document DB API) comme base de données. Comme le document DB a une taille maximale de 2 Mo, nous avons modélisé les données de nos messages pour les stocker dans plusieurs documents. Nous essayions d'insérer tous ces documents dans une transaction en utilisant la procédure Javascript Store, mais les SP ont une taille limite (2 Mo) sur la taille de la requête.Comment insérer un message de 20 mb dans Azure Cosmos DB - Document DB API

Quelqu'un peut-il nous aider avec la façon dont nous pouvons enregistrer tous les documents liés au message de 20 Mo dans une transaction (enregistrer tout ou rien)?

Un moyen que j'ai rencontré est d'enregistrer les documents de manière indépendante, et d'écrire une procédure de magasin pour les identifier et les supprimer tous dans le cas où l'un des échecs d'écriture. J'aimerais savoir si c'est la meilleure approche disponible pour notre scénario.

Éditer: Une autre approche possible à laquelle je pensais - Téléchargez le message de 20 Mo dans un stockage blob, et accédez-y depuis l'intérieur du SP pour séparer et insérer. Mais je ne pouvais pas trouver un moyen d'accéder au blob à partir du SP javascript (XMLHttpRequest n'était pas autorisé dans le SP)

+0

Je contacterais le support MS. Ils ont été connus pour désactiver la limitation de taille sur demande pour certains cas. – wasabi

Répondre

1

Avez-vous examiné la fonctionnalité attachments d'Azure Cosmos DB? Ce sera une approche plus simple que l'implémentation de votre propre sémantique de transaction. Vous devez stocker uniquement les propriétés dont vous avez besoin pour l'interrogation dans le document, puis stocker le document complet de 20 Mo en tant que pièce jointe.

+0

L'exigence pour nous est de pouvoir interroger/analyser toutes les données de message. Donc, stocker dans un blob ne semble pas le moyen le plus efficace. Est-il possible de stocker les documents dans la collection elle-même? –

+0

J'ajouterais également que le stockage de documents plus volumineux dans Cosmos DB a un impact considérable sur les performances. Donc, si possible, la suggestion d'Aravind est une bonne voie à suivre. Jetez un coup d'œil à ce qui arrive aux coûts de votre EF lorsque vous insérez ou lisez des documents plus volumineux - c'est brutal. –