МонгоДБ против Кассандры

Я оцениваю, что может быть лучшим вариантом миграции.

В настоящее время я нахожусь в разбитом MySQL (горизонтальный раздел), причем большинство моих данных хранятся в блоках JSON. У меня нет сложных SQL-запросов (уже перенесен после того, как я разбил свой db).

Прямо сейчас, похоже, что и MongoDB, и Cassandra будут вероятными вариантами. Моя ситуация:

  • Много чтения в каждом запросе, менее регулярные записи
  • Не беспокоится о "массивной" масштабируемости
  • Больше беспокоит простая настройка, обслуживание и код.
  • Свернуть стоимость оборудования/сервера

Ответ 1

Много чтения в каждом запросе, меньше регулярных записей

Обе базы данных хорошо работают на чтениях, где горячие данные устанавливаются в памяти. Оба они также подчеркивают модели данных без объединения (и вместо этого поощряют денормализацию), и оба предоставляют индексы на документы или rows, хотя индексы MongoDB в настоящее время более гибкие.

Механизм хранения Cassandra обеспечивает постоянную запись независимо от того, насколько большой ваш набор данных растет. Писания более проблематичны в MongoDB, отчасти из-за механизма хранения на основе дерева b, но больше из-за для блокировки записи в базе данных.

Для аналитики MongoDB обеспечивает пользовательскую реализацию карты/уменьшения; Cassandra предоставляет встроенную поддержку Hadoop, в том числе для Hive (хранилище данных SQL, построенное на карте Hadoop/сокращение) и Pig (специфический для Hadoop язык анализа, который, по мнению многих, лучше подходит для работы с картами/сокращением рабочих нагрузок, чем SQL).

Не беспокоится о "массивной" масштабируемости

Если вы смотрите на один сервер, MongoDB, вероятно, лучше подходит. Для тех, кто больше обеспокоен масштабированием, архитектура Cassandra без единой точки отказа будет проще настроить и повысить надежность. (Глобальная блокировка записи MongoDB также становится более болезненной.) Cassandra также дает намного больше контроля над тем, как работает ваша репликация, включая поддержку нескольких центров обработки данных.

Больше беспокоит простую настройку, обслуживание и код

Оба тривиально настраиваются с разумными стандартными значениями по умолчанию для одного сервера. Cassandra проще настроить в конфигурации с несколькими серверами, так как нет особых узлов, о которых нужно беспокоиться; вот скринкаст, демонстрирующий настройку кластера 4 node Cassandra за две минуты.

Если вы используете JOSON blobs, MongoDB является безумно хорошим для вашего случая использования, учитывая, что он использует BSON для хранения данных. Вы сможете получать более богатые и более запрашиваемые данные, чем в вашей нынешней базе данных. Это будет самая значительная победа для Монго.

Ответ 2

Я интенсивно использовал MongoDB (последние 6 месяцев), создавая иерархическую систему управления данными, и я могу ручаться за простоту настройки (установить его, запустить, использовать!) и скорость. Пока вы внимательно относитесь к индексам, он может кричать, по скорости.

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

Реальным свингером для меня, когда мы оценивали базы данных NoSQL, был запрос: Cassandra - это просто гигантское хранилище ключей/значений, а запрос немного затруднительно (по крайней мере, по сравнению с MongoDB), поэтому для производительности, d должны дублировать довольно много данных как своего рода ручного индекса. MongoDB, с другой стороны, использует модель "запрос по примеру".

Например, скажем, у вас есть сборник (язык MongoDB для эквивалента таблицы RDMS), содержащий пользователей. MongoDB хранит записи как документы, которые в основном являются двоичными объектами JSON. например:

{
   FirstName: "John",
   LastName: "Smith",
   Email: "[email protected]",
   Groups: ["Admin", "User", "SuperUser"]
}

Если вы хотите найти всех пользователей под названием Smith, у которых есть права администратора, вы просто создадите новый документ (в консоли администратора с помощью Javascript или в процессе производства, используя язык по вашему выбору):

{
   LastName: "Smith",
   Groups: "Admin"
}

... и затем запустите запрос. Это. Есть добавленные операторы для сравнения, фильтрация RegEx и т.д., Но все это довольно просто, а документация на основе Wiki довольно хороша.

Ответ 3

Зачем выбирать между традиционной базой данных и хранилищем данных NoSQL? Используйте оба! Проблема с решениями NoSQL (за пределами начальной кривой обучения) заключается в отсутствии транзакций - вы делаете все обновления для MySQL и MySQL заселяете хранилище данных NoSQL для чтения - тогда вы извлекаете выгоду из преимуществ каждой технологии. Это добавляет больше сложностей, но у вас уже есть сторона MySQL - просто добавьте MongoDB, Cassandra и т.д. В микс.

Нотариальные хранилища NoSQL обычно масштабируются лучше, чем традиционная БД для тех же самых спецификаций - есть причина, по которой Facebook, Twitter, Google и большинство стартапов используют решения NoSQL. Это не просто вундеркинды, которые высоко ценят новые технологии.

Ответ 4

Я, вероятно, буду странным человеком, но я думаю, вам нужно остаться с MySQL. Вы не описали реальную проблему, которую вам нужно решить, а MySQL/InnoDB - отличная память для работы даже для данных blob/json.

Существует общий трюк среди веб-инженеров, чтобы попытаться использовать больше NoSQL, как только осознание приходит, что используются не все функции РСУБД. Это само по себе не является веской причиной, поскольку чаще всего базы данных NoSQL имеют довольно плохие механизмы обработки данных (что MySQL называет механизмом хранения).

Теперь, если вы этого не делаете, укажите, что отсутствует в MySQL, и вы ищете в другой базе данных (например, автоматическое отключение, автоматический переход на другой ресурс, репликация с несколькими ведущими устройствами, более слабые данные гарантия согласованности в кластере, оплачиваемом при более высокой пропускной способности записи и т.д.).

Ответ 5

Я не использовал Cassandra, но я использовал MongoDB и считаю, что это потрясающе.

Если вы после простой настройки, это он. Вы просто разворачиваете MongoDB и запускаете демон mongod и запускаете его.

Очевидно, что только стартер, но чтобы вы начали легко.

Ответ 6

Вчера я увидел презентацию о монгодже. Я могу определенно сказать, что установка была "простой", так же просто, как распаковать ее и запустить ее. Готово.

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

Я думаю, что в этом случае, в конце концов, это спустится, к которому вы лично чувствуете себя более комфортно, и у которого есть набор инструментов, который вы предпочитаете. Что касается презентации на mongodb, ведущий указал, что набор инструментов для mongodb был довольно легким и что многие (они сказали какие-либо действительно) инструменты похожи на то, что доступно для MySQL. Это, конечно же, их опыт, поэтому YMMV. Одна вещь, которая мне понравилась в mongodb, заключалась в том, что для нее было много поддержки языка (Python и .NET - это те, которые я использую в первую очередь).

Список сайтов с использованием mongodb довольно впечатляет, и я знаю, что твиттер просто переключился на использование cassandra.