Монгодб против Кассандры [закрыто]



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



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



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




  • много читает в каждом запросе, менее регулярные записи

  • не волнуюсь о" массивной " масштабируемости

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

  • минимизировать стоимость оборудования / сервера

886   6  

6 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

список сайтов, использующих mongodb довольно впечатляет, и я знаю, что twitter просто переключился на использование Кассандры.

Comments

    Ничего не найдено.