2009-07-18 7 views
1

Je développe un système qui concerne l'archivage, la recherche, le téléchargement, la distribution et donc le traitement des objets BLOB. Je suis actuellement en train d'essayer de trouver la meilleure façon de gérer les BLOB. J'ai des ressources limitées pour les serveurs haut de gamme avec beaucoup de mémoire et d'énormes disques, mais je peux accéder à un large éventail d'ordinateurs prêts à l'emploi et les connecter à Internet. J'ai donc décidé de stocker les BLOB dans une base de données relationnelle centrale, car dans le pire des cas, j'aurais alors une instance de base de données très lourde, éventuellement sur une machine moyenne unique. Pas une option.Combinaison de bases de données relationnelles et basées sur des documents

Le stockage des BLOB en tant que fichiers directement sur le système de fichiers et stockant leur chemin dans la base de données est également quelque peu moche et la distribution devrait être gérée manuellement, en gardant moi-même la trace des différentes copies. Je ne veux même pas m'en approcher.

J'ai regardé CouchDB et j'aime vraiment leur conception de pair à pair. Cela me permettra d'exécuter un cluster distribué de machines à travers l'Internet, implique:

  • faible coût matériel
  • distribution pour la redondance et Basculement de la boîte
  • légère Interface REST

Donc, si je l'ai bien fait, on pourrait le résumer comme ceci: API de type nuage et système répliqué, auto-géré et distribué

Le reste du système effectue les tâches normales d'une application web moyenne: gestion de la session, sécurité, utilisateurs, recherche, etc. Pour cette partie, je veux toujours utiliser un datamodel relationnel. (CouchDB prétend pas pour remplacer les bases de données relationnelles).

Donc j'aurais toutes les données standard, y compris les méta-données du BLOB dans la base de données relationnelle mais les BLOB eux-mêmes dans CouchDB.

Voyez-vous un problème avec cette approche? Est-ce que je manque quelque chose d'important? Pouvez-vous penser à de meilleures solutions?

Merci!

Répondre

3

Vous pouvez essayer la base de données relationnelle d'Amazon SimpleDB et S3 avec SimpleJPA. SimpleJPA est une implémentation JPA en plus de SimpleDB. SimpleJPA utilise SimpleDB pour la structure relationnelle et S3 pour stocker les objets BLOB.

0

Aucun problème. J'ai fait un design très similaire à celui-là. Vous pouvez également jeter un coup d'œil à HBase comme alternative à CouchDB et au modèle architectural Adaptive Object-Model, afin de gérer vos données et vos métadonnées.

2

Jetez un oeil à MongoDB, il prend en charge le stockage des données binaires dans un format efficace et est incroyablement rapide

+1

Mongo est plus proche d'un modèle relationnel, vous pourriez être en mesure de sortir avec juste en utilisant, au lieu de Canapé + relationnel. – kristina

Questions connexes