Готово ли производство Cassandra для Ruby on Rails? - PullRequest
33 голосов
/ 04 марта 2010

Я работаю над проектом, который рассматривает возможность использования Кассандры в качестве базы данных. Мы хотели бы в конечном итоге перейти на Cassandra, даже если мы будем использовать MySQL для начала, учитывая его масштабируемость. Я знаю, что крупные компании, такие как Facebook, Digg, и недавно Twitter используют Cassandra, но я не верю, что какой-либо из этих сайтов работает на Rails. Мой вопрос заключается в том, возможно ли использовать Cassandra с использованием Ruby on Rails. Вопросы для рассмотрения:

  1. Мы в значительной степени полагаемся на камень Authlogic. Повлияет ли переключение на Cassandra на его работу?
  2. Есть ли у Кассандры зрелые рубиновые клиенты? Глядя на Github, кажется, что клиент фауны (теперь клиент твиттеров) самый зрелый. У кого-нибудь был опыт производства?

Ценю любые советы.

Ответы [ 5 ]

16 голосов
/ 05 марта 2010

Твиттер запускает рельсы на большей части их интерфейса. Клиент Фауны на самом деле создан и выпущен Твиттером, поэтому вы можете быть уверены, что он актуален и стабилен при больших нагрузках. Изучение истории коммитов показывает, что к ней часто прибегают улучшения, и это здорово.

Скорее всего, для правильной работы с Cassandra необходимо настроить Authlogic. В частности, он предоставляет определенные методы, основанные на named_scope и реляционных данных.

Похоже, что кто-то создал плагин для поддержки DataMapper в Authlogic: http://twitter.com/collintmiller/statuses/2064046718. Вы можете использовать его в качестве отправной точки для его совместимости с Cassandra.

Удачи!

9 голосов
/ 05 марта 2010

Не думаю, что начинать с MySQL, а затем переходить на Cassandra - это хорошая идея.

Cassandra - это NoSQL решение, в то время как MySQL - это "классическая" база данных на основе SQL.

Это означает, что ваши модели будут другими.

Если вы начинаете с MySQL, вам придется полагаться на ActiveRecord для создания ваших моделей. Если вы затем переключитесь на Cassandra, вам придется изменить все ваши модели на NoSQL-совместимое промежуточное ПО (например, BigRecord ). Это означает не только изменение ваших моделей, но также и контроллеров, которые их используют (поскольку их интерфейс будет другим).

При этом Кассандра и тому подобное должны использоваться в очень требовательных приложениях, таких как твиттер.

Остальные веб-приложения на несколько порядков менее интенсивны - вы уверены, что вам все еще понадобится Cassandra?

PostgreSQL и хорошо спроектированная база данных достаточно хороши в 98% случаев.

7 голосов
/ 22 марта 2010

Если вы затем перейдете на Cassandra, вам придется изменить все ваши модели на NoSQL

Это совсем не так.Если вы запрограммировали таким образом, что ваша база данных MySQL выполняет множество соединений, то да, у вас может быть проблема.Мы избегали объединений столько, сколько могли с самого начала, когда мы запускали маршрут MySQL.Затем, когда мы начали мигрировать в Casandra, это было довольно просто, мы сделали это только с 1 моделью.Тогда скажи 4 модели за один раз.И т.д. Хорошо работает.Фактически, когда вы читаете интервью в твиттере, вы заметите, что они некоторое время параллельно запускали MySQL и Casandra для одной и той же модели: http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king.

Что касается Authlogic, вы можете сохранить эту часть в MySQL длясколько угодно, просто держите это свободно в связке с вашими данными Cassandra.

5 голосов
/ 20 марта 2010

Я сейчас исследую Cassandra, MongoDB и CouchDB.

Один из способов определить, у кого больше всего поддержки разработчиков, - это проверить количество наблюдателей в проекте github с самым высоким рейтингом для каждого. По крайней мере, в грубой оценке.

Прямо сейчас это

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

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

178 - Кассандра http://github.com/fauna/cassandra

Хотя, я должен сказать, что на нескольких громких сайтах (Twitter, Digg, Reddit и т. Д.) Недавно объявили, что они переезжают на Кассандру, это для них большой голос доверия.

У Монго, похоже, самая лучшая документация на данный момент. Я думаю, их автоматическое разделение все еще в альфа-версии, так что, насколько хорошо оно масштабируется, еще неизвестно.

Я только начинаю узнавать обо всем этом, поэтому, если у других есть понимание, пожалуйста, поделитесь.

1 голос
/ 05 марта 2010

Существует также http://github.com/NZKoz/cassandra_object,, который IIANM строит поверх клиента фауны. "Cassandra Object предоставляет хороший API для работы с Cassandra. CassandraObjects в основном совместимы с утильным типом с объектами ActiveRecord, поэтому большая часть кода вашего контроллера должна работать нормально ... Используйте это в работе, только если вы хотите помочь в разработке , сейчас есть куча острых углов. "

...