¿Está lista la producción de Cassandra para Ruby on Rails?
ruby-on-rails ruby-on-rails-plugins (5)
Estoy trabajando en un proyecto que está considerando usar Cassandra como base de datos. Nos gustaría eventualmente migrar a Cassandra incluso si usamos MySQL para empezar, dada su escalabilidad. Sé que grandes compañías como Facebook, Digg y recientemente Twitter están usando Cassandra, pero no creo que ninguno de esos sitios se ejecute en Rails. Mi pregunta es si es factible usar Cassandra usando Ruby on Rails. Puntos a considerar:
- Confiamos mucho en la gema Authlogic. ¿Cambiaría a Cassandra cómo funciona?
- ¿Hay algún cliente maduro de Ruby para Cassandra? Mirando a Github parece que el cliente de la fauna (ahora el cliente de Twitter) es el más maduro. ¿Alguien ha tenido experiencia en producción con esto?
Apreciar cualquier consejo.
Si luego cambia a Cassandra, tendrá que cambiar todos sus modelos a NoSQL
Esto no es cierto en absoluto. Si ha programado de tal manera que su base de datos MySQL hace un montón de combinaciones, entonces sí, puede tener un problema. Evitamos las uniones tanto como pudimos desde el principio cuando comenzamos la ruta MySQL. Luego, cuando comenzamos a migrar a Casandra, fue bastante fácil, al principio solo lo hicimos con 1 modelo. Luego di 4 modelos de una vez. Etc. Funciona bien. De hecho, cuando leas la entrevista en Twitter notarás que ejecutaron MySQL y Casandra en paralelo para el mismo modelo por un tiempo: http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king .
En cuanto a Authlogic, puede mantener esa parte en mySQL durante el tiempo que desee, simplemente manténgala junto con los datos de Cassandra.
Estoy investigando a Cassandra, MongoDB y CouchDB en este momento.
Una manera de saber cuál es la que más soporte tiene para el desarrollador es verificando el número de observadores en el proyecto github mejor calificado para cada uno. Al menos como una estimación aproximada.
En este momento es
852 - MongoDB http://github.com/jnunemaker/mongomapper
544 - CouchDB http://github.com/jchris/couchrest
178 - Cassandra http://github.com/fauna/cassandra
Aunque, tengo que decir que con un montón de sitios de alto perfil (Twitter, Digg, Reddit, etc.) anunciando recientemente que se están mudando a Cassandra, este es un gran voto de confianza para ellos.
Mongo parece tener la mayor y mejor documentación hasta el momento. Su auto-sharding todavía está en alfa, así que creo que todavía está por ver qué tan bien se escala.
Estoy empezando a aprender sobre todo esto, así que si otros tienen una visión, por favor compártanla.
No creo que comenzar con MySQL y luego mudarme a Cassandra sea una buena idea.
Cassandra es una solución NoSQL , mientras que MySQL es una base de datos "clásica" impulsada por SQL.
Esto significa que tus modelos serían diferentes.
Si comienza con MySQL, tendrá que confiar en ActiveRecord para crear sus modelos. Si luego cambia a Cassandra, tendrá que cambiar todos sus modelos a un middleware compatible con NoSQL (como BigRecord ). Esto no solo significa cambiar sus modelos, sino también los controladores que los utilizan (ya que su interfaz sería diferente).
Dicho esto, se supone que Cassandra y similares deben usarse en aplicaciones muy exigentes, como Twitter.
El resto de las aplicaciones web que existen son de una magnitud menos intensa. ¿Estás seguro de que todavía necesitarías Cassandra?
PostgreSQL, y una base de datos bien diseñada, es suficientemente buena el 98% del tiempo.
También hay http://github.com/NZKoz/cassandra_object , que IIANM construye sobre el cliente de fauna. "Cassandra Object proporciona una buena API para trabajar con Cassandra. CassandraObjects son en su mayoría compatibles con los objetos ActiveRecord, por lo que la mayoría del código del controlador debería funcionar bien ... Úselo en producción solo si está buscando ayudar con el desarrollo , hay un montón de asperezas en este momento ".
Twitter está utilizando raíles en la mayoría de sus interfaces. El cliente de Fauna en realidad está creado y publicado por Twitter, por lo que puede estar bastante seguro de que está actualizado y estable en grandes cargas de trabajo. Al observar el historial de confirmaciones, se observa que se realizan mejoras frecuentes, lo cual es excelente.
Lo más probable es que Authlogic necesite ser personalizado para funcionar correctamente con Cassandra. En particular, parece proporcionar ciertos métodos basados en named_scope y datos relacionales.
Parece que alguien ha creado un complemento para el soporte de DataMapper en Authlogic: http://twitter.com/collintmiller/statuses/2064046718 . Es posible que pueda usar eso como punto de partida para hacerlo compatible con Cassandra.
¡Buena suerte!