Подтвердить что ты не робот

Готово ли производство Cassandra для Ruby on Rails?

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

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

Оцените все советы.

4b9b3361

Ответ 1

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

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

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

Удачи!

Ответ 2

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

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

Это означает, что ваши модели будут отличаться.

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

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

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

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

Ответ 3

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

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

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

Ответ 4

Я изучаю 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 и т.д.), недавно объявляющих, что они переезжают в Кассандру, это большой вотум доверия для них.

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

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

Ответ 5

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