33 votes

La production de Cassandra est-elle prête pour Ruby on Rails?

Je suis en train de travailler sur un projet qui envisage l'utilisation de Cassandra comme une base de données. Nous aimerions éventuellement migrer vers Cassandra, même si nous utilisons MySQL pour commencer, compte tenu de son évolutivité. Je sais que les grandes entreprises comme Facebook, Digg, et, récemment, Twitter est l'utilisation de Cassandra, mais je ne crois pas qu'aucun de ces sites hors des Rails. Ma question est de savoir si ou non il est possible d'utiliser Cassandra à l'aide de Ruby on Rails. Points à considérer:

  1. Nous comptons beaucoup sur le Authlogic gem. Serait commutation de Cassandra affectent la façon dont il fonctionne?
  2. Il n'existe aucun mature ruby clients pour Cassandra? La recherche sur Github, il semble que la faune du client (maintenant twitters du client) est le plus mature. Quelqu'un a eu l'expérience de production, avec elle?

Apprécier tous les conseils.

16voto

Gdeglin Points 6687

Twitter est en cours d'exécution des rails sur la plupart de leurs frontal. La faune du client est effectivement construit et publié par twitter, de sorte que vous pouvez être sûr qu'il est à jour et stable sur de grandes charges de travail. En regardant l'historique de commits montre qu'il y a souvent des améliorations d'être poussé à elle, ce qui est excellent.

Le plus probable Authlogic aurait besoin d'être adaptés pour fonctionner correctement avec Cassandra. En particulier, il apparaît de fournir certaines des méthodes basées sur named_scope et de données relationnelles.

Il semble que quelqu'un a construit un plugin pour DataMapper soutien dans Authlogic: http://twitter.com/collintmiller/statuses/2064046718. Vous pourriez être en mesure de l'utiliser comme un point de départ pour qui le rend compatible avec Cassandra.

Bonne chance!

9voto

kikito Points 23229

Je ne pense pas que partir avec MySQL et puis de passer à Cassandra est une bonne idée.

Cassandra est une NoSQL solution, alors que MySQL est un "classique" SQL-piloté par la base de données.

Cela signifie que vos modèles différents.

Si vous commencez avec MySQL, vous devrez compter sur ActiveRecord pour la création de vos modèles. Si vous changez de Cassandra, vous devrez modifier tous les modèles pour un NoSQL-compatible middleware (comme BigRecord). Cela ne signifie pas seulement la modification de vos modèles, mais aussi les contrôleurs de les utiliser (depuis leur interface serait différent).

Cela dit, Cassandra et les autres sont censés être utilisés sur des applications très exigeantes comme twitter.

Le reste des applications web là-bas sont des ordres de grandeur moins intense - êtes-vous sûr que vous avez encore besoin de Cassandra?

PostgreSQL, et une base de données bien conçue, est juste assez bon 98% du temps.

7voto

Jim Soho Points 914

Si vous changez de Cassandra, vous devrez modifier tous les modèles pour un NoSQL

Ce n'est pas vrai du tout. Si vous avez programmé de telle manière à ce que vos bases de données MySQL n'charges de jointures, alors oui, vous pouvez avoir un problème. Nous avons évité les jointures autant que nous avons pu dès le début, quand nous avons commencé le MySQL route. Puis, quand nous avons commencé à migrer vers Casandra il a été assez facile, nous l'avons fait avec 1 seul modèle au premier abord. Ensuite, dire que 4 modèles en une seule fois. Etc. Fonctionne bien. En fait, quand vous lisez l'entrevue avec twitter, vous remarquerez qu'ils ont couru MySQL et Casandra en parallèle pour le même modèle pour un certain temps: http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king.

Comme pour Authlogic, vous pouvez garder une partie en mySQL pour aussi longtemps que vous le souhaitez, il suffit de suivre faiblement couplés avec votre Cassandra données.

5voto

Brian Armstrong Points 8259

Je suis à la recherche de Cassandra, MongoDB, et CouchDB droit maintenant.

Une façon de dire qui a le plus de support de développeur, en vérifiant le nombre de veilleurs sur la cote la plus élevée projet github pour chaque. Au moins comme une estimation approximative.

Maintenant, c'est

852 - MongoDB http://github.com/jnunemaker/mongomapper

544 - CouchDB http://github.com/jchris/couchrest

178 - Cassandra http://github.com/fauna/cassandra

Bien que, je dois dire avec un tas de sites de haut profil (Twitter, Digg, Reddit, etc) a récemment annoncé qu'ils sont en mouvement à Cassandra, c'est un énorme vote de confiance pour eux.

Mongo semble avoir le plus de documentation à ce jour. Leur auto-sharding est encore en alpha mais alors comment il évolue reste à voir je pense.

Je viens juste de commencer à apprendre à propos de tous ces trucs, donc si d'autres personnes ont aperçu s'il vous plaît partager.

1voto

jbellis Points 16235

Il existe également http://github.com/NZKoz/cassandra_object , qui est construit par IIANM au-dessus du client de la faune. "Cassandra Object fournit une API intéressante pour travailler avec Cassandra. Les CassandraObject sont principalement compatibles avec les objets ActiveRecord du type canard. La plupart du code de votre contrôleur devrait donc fonctionner correctement ... Utilisez-le en production uniquement si vous souhaitez contribuer au développement. , il y a beaucoup de bords bruts en ce moment. "

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X