2012-12-17 2 views
4

J'écris une API Web simple qui tourne entièrement autour des téléchargements de fichiers. Les utilisateurs peuvent télécharger des fichiers sur le service via l'API HTTP, et le service générera des fichiers auxquels les utilisateurs auront accès et devra également les stocker avec le fichier téléchargé. Il y aura donc beaucoup de fichiers en jeu. Fondamentalement, j'essaie de décider entre stocker ces CouchDB et les stocker dans quelque chose comme Amazon S3. Avec CouchDB, j'aurais probablement un seul document pour le fichier téléchargé initial, par l'utilisateur, avec les données jointes en ligne dans la collection _attachments. Les fichiers supplémentaires créés par le système seront ajoutés à ce document. (Le service convertit les documents, donc ils téléchargent un Excel XLS et le système génère un PDF, TXT, etc.) Je pense que ce serait bien, car une suppression sur l'enregistrement du document téléchargé va également supprimer les fichiers PDF générés, TXT, ou toutes les autres pièces jointes. Avec S3, je sens la sécurité en sachant que j'utilise une solution hébergée entièrement dédiée au stockage de fichiers individuels. Il dédie également cette bande passante exclusivement à ces fichiers et ne proviendrait pas de mon serveur Web API. Les inconvénients sont que cela ajoute beaucoup de logique supplémentaire à mon code API, et maintenant je dois garder beaucoup de fichiers distants en synchronisation avec ce que ma base de données CouchDB locale connaît d'eux. En outre, je devrais traiter avec la signature de la demande et d'autres choses si je voulais que les utilisateurs finaux puissent accéder aux fichiers directement depuis S3. Les documents sont tous stockés individuellement, aussi la suppression de la pièce jointe téléchargée de CouchDB nécessiterait que je fasse plusieurs requêtes de suppression sur S3 pour les autres fichiers.Devrais-je stocker des pièces jointes dans CouchDB ou S3 à la place?

Je suis familier avec S3, et je l'utilise dans un projet en cours, mais CouchDB semble vraiment génial dans la façon dont il permet les pièces jointes. J'adorerais l'utiliser, mais y a-t-il des pièges ou des inconvénients? Est-ce que les pièces jointes CouchDB ont plus de sens que S3 dans le scénario que j'ai décrit ci-dessus, avec beaucoup de fichiers téléchargés stockés?

Merci

+0

Je pense qu'une grande raison d'aller avec S3 serait la durabilité de l'objet. Combien d'ingénierie et de gestion faudra-t-il consacrer à un déploiement de CouchDB qui a 11 ans de durabilité et une évolutivité quasi infinie? – jamieb

Répondre

0

Je l'ai utilisé avec succès CouchDB pour de nombreux projets et plusieurs un projet similaire. Vous obtenez tellement dans la boîte de la boîte avec couchdb. Les questions que j'ai sont quelle est la taille moyenne de vos fichiers, et quelle taille pensez-vous que votre db ira?

0

Les deux solutions sont assez judicieuses: il y a des avantages et des inconvénients.

Un avantage que vous n'avez pas mentionné pour stocker des fichiers en tant que pièces jointes CouchDB est qu'ils seront répliqués avec les données. Cela facilite la sauvegarde continue et, dans vos instantanés, vos données seront cohérentes avec vos fichiers.

Questions connexes