Действительно ли производство Cassandra готово к Ruby on Rails?

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

  1. Мы в большой степени полагаемся на драгоценный камень Authlogic. Был бы, переключаясь на влияние Cassandra, как оно работает?
  2. Есть ли какие-либо опытные рубиновые клиенты для Cassandra? Наблюдение GitHub, кажется, что клиент фауны (теперь клиент Твиттера) является самым опытным. У кого-либо был производственный опыт с ним?

Цените любые подсказки.

33
задан Kinjal Dixit 2 January 2012 в 13:20
поделиться

5 ответов

Twitter использует рельсы для большей части своего внешнего интерфейса. Клиент Fauna на самом деле создается и выпускается Twitter, поэтому вы можете быть уверены, что он актуален и стабилен при больших рабочих нагрузках. Анализ истории коммитов показывает, что в них часто вносятся улучшения, и это здорово.

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

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

Удачи!

16
ответ дан 27 November 2019 в 18:37
поделиться

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

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

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

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

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

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

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

9
ответ дан 27 November 2019 в 18:37
поделиться

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

1
ответ дан 27 November 2019 в 18:37
поделиться

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

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

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

7
ответ дан 27 November 2019 в 18:37
поделиться

Сейчас я изучаю Cassandra, MongoDB и CouchDB.

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

На данный момент это

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

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

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

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

У Mongo, похоже, пока что больше всего и лучше всего документации. Однако их авто-шардинг все еще находится в альфа-версии, так что насколько хорошо он масштабируется, еще предстоит увидеть.

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

5
ответ дан 27 November 2019 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: