Question

Notre application sera de servir un grand nombre de petites images de taille des vignettes (environ 6-12KB taille) par HTTP. On m'a demandé de vérifier si l'aide d'un magasin de données NoSQL est une solution viable pour le stockage de données. Idéalement, nous voudrions que notre banque de données pour être faute toerant et distribué.

Est-ce une bonne idée de stocker blobs dans les magasins NoSQL, et qui est bon pour elle? Aussi, est-NoSQL une bonne solution pour notre problème, ou serait-il mieux servi le stockage des images dans le système de fichiers et de les servir directement à partir du serveur Web (en aparté, CDN est actuellement pas une option pour nous)?

Était-ce utile?

La solution

DB mongo devrait bien fonctionner pour vous. Je ne l'ai pas utilisé pour blobs encore, mais voici une belle FLOSS Weekly podcast interview avec Michael Dirolf du Mongo DB équipe où il traite ce cas d'utilisation.

Autres conseils

Si oui ou non pour stocker les images dans un DB ou le système de fichiers est parfois l'un de ces types de débats « guerre sainte »; chaque côté se sent leur façon de faire est la bonne façon. En général:

Pour stocker dans la base de données:

  • plus facile à gérer back-up / tout répliquer à la fois dans une fois lieu.
  • Aide à la consistance et l'intégrité des données. Vous pouvez définir le champ BLOB à désavouer NULLs, mais tu ne vas pas être en mesure d'empêcher un fichier externe d'être supprimé. (Bien que ce n'est pas applicable à NoSQL car il n'y a pas les contraintes traditionnelles).

Pour stocker sur le système de fichiers:

  • Un système de fichiers est conçu pour servir les fichiers. Laissez-le faire son travail.
  • Le DB est souvent votre goulot d'étranglement dans une application. Quelle que soit la charge, vous pouvez l'enlever, mieux.
  • Plus facile à servir sur un CDN (que vous avez mentionné n'est pas applicable dans votre situation).

J'ai tendance à venir sur le côté du système de fichiers, car il adapte beaucoup mieux. Mais en fonction de la taille de votre projet, que ce soit le choix sera probablement fonctionner correctement. Avec NoSQL, les différences sont encore moins visibles.

Eh bien CDN serait le choix évident. Puisque c'est, je dirais que votre meilleur pari pour la tolérance aux pannes et l'équilibrage de charge serait votre propre centre de données privées (quoi que cela signifie pour vous) derrière 2 ou plus équilibreurs de charge comme un F5. Ce sera votre système de gestion plus facile et vous pouvez obtenir autant la tolérance aux pannes que votre budget matériel permet. Vous aurez pas besoin de nouvelles compétences de logiciel, juste XCOPY.

Pour la tolérance vraie faute, vous allez avoir besoin d'une dispersion géographique ou vous êtes soumis à toute personne ayant une rétrocaveuse.

(Gravatars?)

Je cherchais une solution similaire pour un projet personnel et suis tombé sur Riak , qui, pour moi, semble être une solution étonnante à ce problème. Fondamentalement, il distribue un certain nombre de copies de chaque fichier sur les serveurs du réseau. Il est conçu de telle sorte qu'un serveur à venir ou aller est pas une grosse affaire. Toutes les copies sur un serveur que les feuilles sont réparties entre les autres.

Avec la bonne configuration, Riak peut faire face à un plantage du centre de données entier.

Oh, et il a le soutien commercial disponible.

Si vous êtes dans un environnement Python, considérez le module y_serial: http://yserial.sourceforge.net/

En moins de 10 minutes, vous serez en mesure de stocker et d'accéder à vos images (en fait, un objet Python arbitraire, y compris pages Web) - sous forme comprimée; NoSQL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top