2010-03-04 8 views
32

Ich arbeite an einem Projekt, das die Verwendung von Cassandra als Datenbank in Betracht zieht. Wir möchten schließlich zu Cassandra migrieren, auch wenn wir MySQL aufgrund seiner Skalierbarkeit verwenden. Ich weiß, dass große Unternehmen wie Facebook, Digg und kürzlich Twitter Cassandra verwenden, aber ich glaube nicht, dass irgendeine dieser Seiten von Rails läuft. Meine Frage ist, ob es möglich ist, Cassandra mit Ruby on Rails zu verwenden. Punkte zu beachten:Ist Cassandra-Produktion für Ruby on Rails bereit?

  1. Wir sind stark auf die Authlogic Juwel. Würde der Wechsel zu Cassandra beeinflussen, wie es funktioniert?
  2. Gibt es reife Ruby-Kunden für Cassandra? Mit Blick auf Github scheint es, dass am ausgereiftesten ist. Hat jemand Produktionserfahrung damit?

Schätzen Sie alle Tipps.

+3

Ja, aber nehmen Sie nicht an, dass diese Unternehmen Cassandra für alles verwenden. Facebook hat zum Beispiel eine massive MySQL-Bereitstellung und Twitter speichert alle Tweets in MySQL. Berücksichtigen Sie Ihre spezifischen Anwendungsfälle. –

+0

Ich würde sagen, dass Ruby für Cassandra nicht reif genug ist. –

Antwort

16

Twitter läuft Schienen an den meisten ihrer Front-End. Der Client von Fauna wird tatsächlich von Twitter erstellt und veröffentlicht, sodass Sie sicher sein können, dass er auf großen Workloads aktuell und stabil ist. Wenn man sich die Geschichte der Commits anschaut, zeigt sich, dass häufig Verbesserungen vorgenommen werden, was großartig ist.

Am wahrscheinlichsten Authlogic müsste angepasst werden, um ordnungsgemäß mit Cassandra zu arbeiten. Insbesondere scheinen bestimmte Methoden basierend auf named_scope und relationalen Daten bereitgestellt zu werden.

Es scheint, dass jemand ein Plugin für DataMapper-Unterstützung in Authlogic erstellt hat: http://twitter.com/collintmiller/statuses/2064046718. Sie können dies möglicherweise als Ausgangspunkt für die Kompatibilität mit Cassandra verwenden.

Viel Glück!

+0

Danke. Die Erklärung über Fauna ist sehr hilfreich, und ich werde auf jeden Fall in das DataMapper-Plugin schauen. – funkymunky

+1

Eine weitere Option, die es sich zu überlegen lohnt: Verwenden Sie Ihre Rails-App mit BEIDEM mysql und cassandra. Auf diese Weise könnte Ihre Benutzer-Tabelle (unter anderem) auf MySql mit AuthLogic bleiben, während Ihre High-Volume-Tabellen zu Cassandra gehen könnten. Ich habe das bisher noch nicht ausprobiert, aber es klingt nach dem, was ich gesehen habe. –

9

Ich glaube nicht, mit MySQL zu beginnen und dann zu Cassandra zu ziehen ist eine gute Idee.

Cassandra ist eine NoSQL Lösung, während MySQL eine "klassische" SQL-Datenbank ist.

Dies bedeutet, dass Ihre Modelle anders wären.

Wenn Sie mit MySQL beginnen, müssen Sie sich beim Erstellen Ihrer Modelle auf ActiveRecord verlassen. Wenn Sie dann zu Cassandra wechseln, müssen Sie alle Ihre Modelle in eine NoSQL-kompatible Middleware (wie BigRecord) ändern. Das bedeutet nicht nur, dass Sie Ihre Modelle ändern müssen, sondern auch die Controller, die sie verwenden (da ihre Schnittstelle anders wäre).

Dies gesagt, Cassandra und dergleichen sollen auf sehr anspruchsvolle Anwendungen verwendet werden - wie Twitter.

Der Rest der Web-Anwendungen da draußen sind um Größenordnungen weniger intensiv - Sind Sie sicher, dass Sie Cassandra immer noch brauchen würden?

PostgreSQL, und eine gut gestaltete Datenbank, ist gerade in 98% der Fälle gut genug.

+1

Völlig einverstanden. NoSQL ist eine coole und aufregende Technologie. Wenn Sie etwas großes billig skalieren müssen. Bug, du brauchst zuerst etwas Großes, um es zu skalieren. –

1

Es gibt auch http://github.com/NZKoz/cassandra_object, die IIANM oben auf dem Fauna-Client baut. "Cassandra Object bietet eine nette API für die Arbeit mit Cassandra. CassandraObjects sind größtenteils mit ActiveRecord-Objekten kompatibel, so dass die meisten Controller-Codes funktionieren sollten ... Verwenden Sie dies nur in der Produktion, wenn Sie mit der Entwicklung helfen möchten Es gibt gerade eine Menge Ecken und Kanten. "

5

Ich recherchiere gerade Cassandra, MongoDB und CouchDB.

Eine Möglichkeit festzustellen, welche die meiste Unterstützung für Entwickler bietet, ist die Überprüfung der Anzahl der Beobachter im jeweils höchsten Github-Projekt. Zumindest als grobe Schätzung.

Im Moment ist es

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

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

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

Obwohl ich mit einem Bündel von hohem Profil zu sagen habe Seiten (Twitter, Digg, Reddit, etc.), die vor kurzem ankündigten, dass sie nach Cassandra ziehen, ist dies ein großer v Onte des Vertrauens für sie.

Mongo scheint die bisher beste Dokumentation zu haben. Ihr Auto-Sharting ist immer noch in Alpha, also wie gut es Skalen noch zu sehen ist, denke ich.

Ich fange gerade an, über all diese Sachen zu lernen, also, wenn andere Einblick haben, teilen Sie bitte.

+0

Dies ist ein wenig verzerrt, da Mongo viele Anwendungsfälle hat, während etwas wie Cassandra nur von Leuten benutzt wird, die spezielle Bedürfnisse haben, in diesem Fall hohe Leistung usw. – Bitterzoet

7

Wenn Sie dann zu Cassandra ändern, werden Sie alle Ihre Modelle an einen NoSQL

Das ist überhaupt nicht wahr ändern. Wenn Sie so programmiert haben, dass Ihre MySQL-Datenbank viele Joins ausführt, dann haben Sie möglicherweise ein Problem. Wir haben Joins so weit wie möglich von Anfang an vermieden, als wir mit der MySQL-Route begannen. Als wir anfingen, nach Casandra zu migrieren, war es ziemlich einfach, wir machten das erst mit einem Modell. Sagen Sie dann 4 Modelle auf einmal. Es funktioniert gut. In der Tat, wenn Sie das Interview mit Twitter lesen, werden Sie feststellen, dass sie MySQL und Casandra parallel für das gleiche Modell für eine Weile lief: http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king.

Wie bei Authlogic können Sie diesen Teil in mySQL so lange behalten, wie Sie möchten, halten Sie ihn einfach lose mit Ihren Cassandra-Daten gekoppelt.

+0

Danke für den Link, es ist sehr interessant. Wir bleiben vorerst bei MySQL, weil wir 100% wissen, dass es mit unserer App funktioniert. Es ist gut zu wissen, dass der Wechsel zu Cassandra in Zukunft möglich ist. – funkymunky