Question

L'application cible est un site Web de taille moyenne conçue pour prendre en charge plusieurs centaines à plusieurs milliers d'utilisateurs par heure, avec une option pour évoluer au-dessus. Le modèle de données est assez simple et le potentiel de mise en cache est assez élevé (rapport ~ 10: 1 des actions de lecture à modifier).

Quelles devraient être les considérations lors de leur choix entre un montant de données relationnel basé sur SQL vers une option NOSQL (comme HBase et Cassandra)?

Était-ce utile?

La solution

Pour moi, vous n'avez aucun problème particulier à résoudre. Si vous avez besoin d'acidité, utilisez une base de données; Si vous ne le faites pas, cela n'a pas d'importance. À la fin, créez simplement votre application. Et laissez-moi citer Nosql: Si seulement c'était aussi simple:

La vraie chose à souligner est que si vous êtes retenu de faire quelque chose de super génial parce que vous ne pouvez pas choisir une base de données, vous vous trompez. Si vous connaissez MySQL, je viens de l'utiliser. Optimiser quand vous en avez réellement besoin. Utilisez-le comme AK / V Store, utilisez-le comme un SGBDR, mais pour Dieu, créez votre application Killer! Rien de tout cela n'aura d'importance pour la plupart des applications. Facebook utilise toujours MySQL, beaucoup. Wikipedia utilise beaucoup MySQL. FriendFeed utilise beaucoup MySQL. NoSQL est un excellent outil, mais ce ne sera certainement pas votre avantage concurrentiel, cela ne fera pas chaud votre application, et surtout, vos utilisateurs ne se soucieront de rien.

Autres conseils

Digg en avoir intéressant des articles sur cette question. Essentiellement, vous déplacez le fardeau du traitement vers les écritures plutôt que des lectures, ce qui peut être souhaitable dans des applications hautement évolutives. Cassandra est spécifiquement très disponible.

Simplistalement, Cassandra est une base de données distribuée avec un modèle de données BigTable fonctionnant sur une infrastructure de type dynamo. Il est orienté vers la colonne et permet le stockage de données relativement structurées. Il a un modèle entièrement décentralisé; Chaque nœud est identique et il n'y a pas de point de défaillance unique. Il est également extrêmement tolérant aux défauts; Les données sont reproduites sur plusieurs nœuds et entre les centres de données. Cassandra est également très élastique; Lisez et écrivez le débit augmente linéairement à mesure que de nouvelles machines sont ajoutées.

J'ai aimé la règle d'or d'Ian Eure: «Si vous déployez Memcache en plus de votre base de données, vous inventez votre propre système NOSQL difficile à maintenir.»

http://www.rackspacecloud.com/blog/2010/02/25/should-you-switch-to-nosql-too/

Lorsque vous dites que Data Modell est assez simple, cela pourrait parler de l'option NoSQL.

Lorsque vous avez beaucoup d'attributs pour effectuer des sélections, une charge de transaction lourde ou des structures de table compliquées, qui parleraient pour les tables SQL traditionnelles.

Je recommanderais de découvrir à quel point il serait difficile d'implémenter les données Modell avec une ou deux bases de données NOSQL. Lorsque cela est assez difficile, vous pouvez également créer un schéma de table classique à comparer.

Lorsque vous avez des difficultés avec NOSQL, cela pourrait parler de l'option SQL. Mais il pourrait aussi être que la charge lourde est mieux gérée avec Nosql - mais il se pourrait aussi qu'une bonne base de données SQL évolue suffisamment ...

La mise en mémoire tampon peut également être réalisée avec un simple serveur proxy ...

Sur les difficultés, un mélange de NoSQL et de SQL pourrait également être pris en compte.

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