Commutation de MySQL vers Cassandra - avantages/Inconvénients?

Pour un peu de fond - c'est une question qui concerne un projet en cours d'exécution sur un seul petit instance EC2, et est sur le point de migrer vers une médium. Les principaux composants sont le Django, MySQL et un grand nombre de l'analyse personnalisée des outils écrits en python et java, qui ne l'lourd
de levage. De la même machine exécutant Apache.

Le modèle de données se présente comme suit: une grande quantité de données en temps réel vient en streaming à partir de divers réseau de capteurs, et, idéalement, j'aimerais établir un long sondage plutôt que le sondage actuel, toutes les 15 minutes de l'approche (une limitation de l'informatique, des statistiques et de l'écriture dans la base de données elle-même). Une fois les données, je stocke la première version en
MySQL, laissez-les outils d'analyse en vrac sur ces données, et de stocker des statistiques dans un autre quelques tables. Tout cela est rendu à l'aide de Django.

Caractéristiques relationnelles j'aurais besoin d' -

  • Commande par [SliceRange de Cassandra, l'API semble satisy ce]
  • Groupe par
  • Manytomany relations entre plusieurs tables [Cassandra SuperColumns semblent bien faire pour un à plusieurs]
  • Sphinx sur ce qui me donne un joli texte complet du moteur, donc c'est une nécessité. [Sur Cassandra, la Lucandra projet semble répondre à ce besoin]

Mon problème majeur est que les lectures de données sont extrêmement lents (et l'écrit ne sont pas chaud non plus). Je ne veux pas jeter beaucoup d'argent et de matériel sur ce droit maintenant, et je préfère quelque chose qui peut évoluer facilement avec le temps. Verticalement mise à l'échelle de MySQL n'est pas anodin dans ce sens (ou pas cher).

Donc, essentiellement, après avoir beaucoup lu sur le NOSQL et expérimenté avec des choses comme MongoDB, Cassandra et Voldemort, mes questions sont,

  • Sur un support instance EC2, aurais-je obtenir des avantages dans les lectures/écritures en optant pour quelque chose comme Cassandra? Cet article (pdf) semble suggérer que. Actuellement, je dirais quelques centaines écrit par minute serait la norme. Pour les lectures - depuis les modifications de données toutes les 5 minutes ou ainsi, l'invalidation du cache doit arriver assez rapidement. À un certain point, il doit être capable de gérer un grand nombre d'utilisateurs simultanés ainsi. Les performances de l'application actuellement se fait tuer sur MySQL de faire certaines jointures sur de grandes tables, même si des index sont créés - quelque chose de l'ordre de 32 ko lignes prend plus d'une minute à rendre. (Cela peut être un artefact de l'EC2 virtualisé I/O ainsi). La taille des tableaux est d'environ 4-5 millions de lignes, et il y a environ 5 ces tableaux.

  • Tout le monde parle de l'utilisation de Cassandra sur plusieurs nœuds, étant donné le théorème CAP et la cohérence des résultats. Mais, pour un projet qui commence tout juste à croître, t-il un sens
    pour déployer un nœud serveur de cassandra
    ? Existe-il des mises en garde? Par exemple, peut-il remplacer MySQL comme un backend pour Django? [Est-ce recommandé?]

  • Si je fais maj, je devine que je vais avoir à réécrire une partie de l'application pour le faire beaucoup plus "administrivia" depuis que j'aurais du faire plusieurs recherches pour extraire des lignes.

  • Serait-il aucun sens d'utiliser MySQL comme une valeur de la clé de magasin plutôt qu'un moteur relationnel, et d'aller avec qui? De cette façon, je pourrais utiliser un grand nombre de la stabilité des Api disponibles, ainsi qu'un moteur stable (et aller relationnel que nécessaire). (Brett Taylor poste de Friendfeed sur ce - http://bret.appspot.com/entry/how-friendfeed-uses-mysql)

Des idées de gens qui ont fait une maj serait grandement apprécié!

Grâce.

  • Découvrez ce Django projet de Cassandra si vous êtes intéressé: github.com/vaterlaus/django_cassandra_backend
  • Je suis assez curieux de savoir si vous avez fini de commutation à Cassandra. Je suis déjà sur la route de commutation à partir de php et asp.net pour django, mais je ne suis pas sûr si c'est prématuré de se déplacer à partir de mssql et mysql pour Cassandra droit maintenant. J'ai aussi des centaines d'enregistrements par seconde venue dans.
  • J'utilise cassandra pour une tâche très spécifique où il travaille maintenant bien. J'ai réalisé que de l'utiliser pour le "déménagement" de bases de données est probablement pas une bonne idée, et mes résultats permettent de valider que (je suis d'accord avec codemonkey la réponse ci-dessous). Donc, si vous voulez vraiment vite écrit, de la recherche et de données dénormalisés et vous souhaitez mettre à l'échelle, Cassandra est une très bonne option. (Le premier chiffre serait de dire, quelques millions écrit une minute!)
  • J'ai migré mon application dans le développement de cassandra pour mysql, après plus d'une année de travail..
  • Voir stackoverflow.com/questions/18462530/...
InformationsquelleAutor viksit | 2010-02-25