В этой статье сравним MongoDB и Cassandra — две самые популярные NoSQL базы данных. На выбор подходящей СУБД для проекта может уйти довольно много времени. Требования к базе данных могут включать упрощенную модель данных, гарантию транзакций, производительность чтения/записи, горизонтальное масштабирование и отказоустойчивость. Для начала нужно определиться с типом СУБД: SQL или NoSQL. Если вы выберите NoSQL, то дальше появляется вопрос: MongoDB или Cassandra. Да, на рынке существует множество NoSQL-баз данных, но среди них лидируют MongoDB и Apache Cassandra. Оба продукта похожи, но все-таки разные. Давайте сравним эти две СУБД, чтобы сделать правильный выбор. В этих СУБД используются разные модели для доступа и управления данными. Они обе отлично подходят для современных приложений, включая мобильные приложения, игры и интернет-приложения. С ними вы получите гибкое, масштабируемое решение с высокой производительностью и широкой функциональностью, обеспечивающее максимальное удобство эксплуатации. MongoDB — это кросс-платформенная документо-ориентированная база данных, обеспечивающая высокую производительность, высокую доступность и простое масштабирование. MongoDB использует концепции документа и коллекции. Написана на C++, C и JavaScript. Работает в операционных системах: Windows Vista и выше, Linux, OS X 10.7 и выше, Solaris и FreeBSD. MongoDB — это отличное решение для работы с BigData со следующими преимуществами: Отсутствие схемы. Документы одной коллекции могут различаться по количеству полей, содержанию и размеру. Другими словами, разные сущности не должны быть идентичными по структуре. Простота масштабирования. Хранение данных, используемых в текущий момент, во внутренней памяти, что обеспечивает более быстрый доступ. Хранение данных в виде JSON-документов. Поддержка динамических запросов (запросы на основе документов). Отсутствие сложных запросов с JOIN. Отсутствие необходимости сопоставления объектов приложения с объектами базы данных. Apache Cassandra — это бесплатная нереляционная отказоустойчивая СУБД, позволяющая создавать масштабируемые и надежные хранилища огромных наборов данных. Cassandra написана на языке Java корпорацией Facebook в 2008 году и передана в Apache Software Foundation в 2009 году. Система представляет собой гибридное решение NoSQL, сочетающее в себе модель хранения данных, основанную на колоночных семействах (ColumnFamily), с концепцией ключ-значение (key-value). Наиболее значимые преимущества Cassandra: Возможность получить время отклика порядка миллисекунд (менее 10 мс). Достижение высокой масштабируемости с точки зрения записи. В Cassandra можно писать данные с сумасшедшей скоростью. И в некоторых ситуациях это важно, например, когда мы перемещаем большие объемы данных между записями. Отказоустойчивость. Падение одного из узлов не приводит к отказу всей системы. Простота. По сравнению с привычными реляционными базами данных, Cassandra проще для изучения и работы. Давайте сравним MongoDB и Cassandra по нескольким параметрам, приведенным в таблице ниже. Параметр MongoDB Cassandra Веб-сайт www.mongodb.com cassandra.apache.org Дата релиза 2009 2008 Разработчик MongoDB, Inc The Apache Software Foundation Лицензия Открытый исходный код. Server Side Public License (SSPL) и драйверы под Apache License. Открытый исходный код. Apache License 2.0. Стоимость Есть как бесплатная / с открытым исходным кодом, так и коммерческая версия. Есть как бесплатная / с открытым исходным кодом, так и коммерческая версия. Окружение Разрабатывается MongoDB Inc. Кроссплатформенная. Развивается фондом фонда Apache Software Foundation и применяется в распределенных окружениях. Поддерживаемые операционные системы Linux, OS X, Solaris, Windows. BSD, Linux, OS X, Windows. Поддерживаемые языки программирования Actionscript, C, C#, C++, Clojure, ColdFusion, D, Dart, Delphi, Erlang, Go, Groovy, Haskell, Java, JavaScript, Lisp, Lua, MatLab, Perl, PHP, PowerShell, Prolog, Python, R, Ruby, Scala, Smalltalk. C#, C++, Clojure, Erlang, Go, Haskell, Java, JavaScript, Perl, PHP, Python, Ruby, Scala. Простота использования Довольно проста в использовании. Довольно проста в использовании. Производительность Быстрое выполнение запросов благодаря простой схеме. Высокая масштабируемость и линейная производительность. Масштабируемость Масштабируемость при записи ограничена. Высокая масштабируемость. Скорость С точки зрения операций чтения MongoDB не быстрее Cassandra. Быстрее для простых запросов. Схема Не требует схемы. Необходимость предварительного определения столбцов. Поддерживаемые языки запросов В качестве языка запросов используется JavaScript и JSON-документ. Язык запросов CQL. Высокая доступность Один мастер Мультимастер Нативная агрегация Встроенный фреймворк агрегации. Нет встроенной агрегации. Для этого используются инструменты вроде Hadoop, Spark. Вторичные индексы Вторичные индексы — это одна из основная конструкций в MongoDB. Доступна только поверхностная поддержка вторичных индексов. Выразительная объектная модель Поддержка богатой и выразительной объектной модели. Довольно традиционная структура таблиц со строками и столбцами. Техническая поддержка Есть корпоративная техническая поддержка 24x7, а также расширенная коммерческая. Поддержка предоставляет неограниченный доступ к обновлениям и исправлениям безопасности. Техническая поддержка Cassandra осуществляется сторонними компаниями, такими как Datastax, URImagination, Impetus и другими. Активность сообщества Сообщество MongoDB проводит различные вебинары и мероприятия, есть юзер группы и курсы в MongoDB University. Apache Software Foundation предлагает сайт сообщества со списком рассылки, IRC, ссылками на книги и статьи. Эту информацию можно найти по адресу http://cassandra.apache.org/community/. Документация docs.mongodb.com/manual cassandra.apache.org/doc/latest Оба решения достаточно гибки, чтобы соответствовать требованиям бизнеса. Cassandra: AppScale. AppScale — это вычислительная платформа с открытым исходным кодом, предназначенная для развертывания приложений Google App Engine в общедоступных, частных облаках и локальных кластерах. Constant Contact. Constant Contact — это платформа для электронного маркетинга. Digg. Digg — это новостной веб-сайт без централизованной модерации. Пользователи размещают на сайте истории и новости, и сами решают, попадет ли информация на главную страницу. Facebook. Эта социальная сеть, входящая в пятерку самых посещаемых сайтов в мире. IBM. IBM — один из крупнейших производителей и поставщиков аппаратного и программного обеспечения. Компании уже более ста лет, и на протяжении всего этого времени она находится среди лидеров технологического прогресса. Instagram. Instagram — одна из самых популярных социальных сетей, позволяющая публиковать и делиться своими фотографиями и видео. Spotify. Spotify — шведский музыкальный сервис, доступный почти в 120 странах. Netflix. Netflix — один из самых популярных сервисов потокового вещания видео в мире. Reddit. Reddit — крупнейшая социальная новостная платформа, где пользователи размещают ссылки на любую понравившуюся им информацию в Интернете. MongoDB: Google. Google — хорошо известная многонациональная компания, специализирующаяся на интернет-сервисах. UPS. UPS — американская международная компания по доставке посылок и управлению цепочками поставок. Cisco. Бренд известной IT-корпорации Cisco Systems из США. Сетевые маршрутизаторы, беспроводные устройства и системы видеонаблюдения, используемые по всему миру. eBay. eBay — крупнейший аукцион. BOSCH. Немецкий бренд, выпускающий различную бытовую технику для дома и кухни. Forbes. Forbes — популярный журнал, издаваемый во многих развитых странах. Его авторитетность – результат многолетней работы на рынке деловых СМИ. GAP. Всемирно известный американский бренд, производящий повседневную одежду, обувь, нижнее белье и аксессуары для мужчин, женщин и детей. PayPal. PayPal — поставщик финансовых услуг, предлагающий бесплатные денежные переводы и платежи за онлайн-покупки. Вы впечатлены этими громкими именами? Все они используют MongoDB и Cassandra. Ваш выбор Cassandra, если вы занимаетесь аналитикой в ​​реальном времени, электронной коммерцией, обнаружением фрода, музыкальными каталогами, онлайн-курсами и потоковой передачей данных. MongoDB лучше подойдет для систем управления контентом (CMS, content management systems) и мобильных приложений. Если у вас нет четкой схемы данных, то лучше выбрать MongoDB. Репликация в ней есть из коробки, но, возможно, потребуется ее поднастроить. Для MongoDB также вам придется выучить новый язык запросов. Cassandra будет лучшим выбором, если вам важна простая установка и настройка, у вас структурированные/неструктурированные данные и вы ожидаете быстрого увеличения объема данных. Cassandra предлагает масштабирование с минимальным администрированием и высокой надежностью. Хотя MongoDB по праву выигрывает в простоте развертывания готового решения, Cassandra — в управлении масштабированием. Надеюсь, теперь вы стали немного лучше разбираться в MongoDB и Cassandra. Оцените требования вашего проекта и выберите подходящую базу данных. Когда использовать Cassandra?Вам нужна возможность масштабирования и надежность. Система проста в развертывании и настройке репликации. Cassandra отлично подходит для веб- и мобильных приложений, а также проектов со сложной аналитикой и анализом данных в реальном времени для географически распределенных BigData-систем. Является ли Cassandra NoSQL-базой данных?Apache Cassandra — это NoSQL-база данных, обеспечивающая непрерывную доступность, высокую производительность и линейную масштабируемость. Когда Cassandra лучше не использовать?Cassandra — это NoSQL база данных и не поддерживает ACID и реляционную модель. Cassandra не лучший выбор, если у вас есть строгие требования к поддержке ACID, вам нужна богатая модель данных и гибкость схемы. В заключение хочу пригласить всех желающих на бесплатный демоурок по теме "OrientDB: запрашиваем данные из графов". Подробнее об уроке можно узнать по ссылке ниже. Зарегистрироваться на бесплатный урок