В этой статье сравним MongoDB и Cassandra — две самые популярные NoSQL базы данных.
На выбор подходящей СУБД для проекта может уйти довольно много времени. Требования к базе данных могут включать упрощенную модель данных, гарантию транзакций, производительность чтения/записи, горизонтальное масштабирование и отказоустойчивость.
Для начала нужно определиться с типом СУБД: SQL или NoSQL. Если вы выберите NoSQL, то дальше появляется вопрос: MongoDB или Cassandra. Да, на рынке существует множество NoSQL-баз данных, но среди них лидируют MongoDB и Apache Cassandra. Оба продукта похожи, но все-таки разные. Давайте сравним эти две СУБД, чтобы сделать правильный выбор.
В этих СУБД используются разные модели для доступа и управления данными. Они обе отлично подходят для современных приложений, включая мобильные приложения, игры и интернет-приложения. С ними вы получите гибкое, масштабируемое решение с высокой производительностью и широкой функциональностью, обеспечивающее максимальное удобство эксплуатации.
Краткий обзор Cassandra и MongoDB
Что такое MongoDB
MongoDB — это кросс-платформенная документо-ориентированная база данных, обеспечивающая высокую производительность, высокую доступность и простое масштабирование. MongoDB использует концепции документа и коллекции. Написана на C++, C и JavaScript. Работает в операционных системах: Windows Vista и выше, Linux, OS X 10.7 и выше, Solaris и FreeBSD.
MongoDB — это отличное решение для работы с BigData со следующими преимуществами:
Отсутствие схемы.
Документы одной коллекции могут различаться по количеству полей, содержанию и размеру. Другими словами, разные сущности не должны быть идентичными по структуре.
Простота масштабирования.
Хранение данных, используемых в текущий момент, во внутренней памяти, что обеспечивает более быстрый доступ.
Хранение данных в виде JSON-документов.
Поддержка динамических запросов (запросы на основе документов).
Отсутствие сложных запросов с JOIN.
Отсутствие необходимости сопоставления объектов приложения с объектами базы данных.
Что такое Cassandra
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 |
Какие компании используют MongoDB и Cassandra
Оба решения достаточно гибки, чтобы соответствовать требованиям бизнеса.
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. Оцените требования вашего проекта и выберите подходящую базу данных.
MongoDB vs Cassandra FAQ
Когда использовать Cassandra?
Вам нужна возможность масштабирования и надежность. Система проста в развертывании и настройке репликации. Cassandra отлично подходит для веб- и мобильных приложений, а также проектов со сложной аналитикой и анализом данных в реальном времени для географически распределенных BigData-систем.Является ли Cassandra NoSQL-базой данных?
Apache Cassandra — это NoSQL-база данных, обеспечивающая непрерывную доступность, высокую производительность и линейную масштабируемость.Когда Cassandra лучше не использовать?
Cassandra — это NoSQL база данных и не поддерживает ACID и реляционную модель. Cassandra не лучший выбор, если у вас есть строгие требования к поддержке ACID, вам нужна богатая модель данных и гибкость схемы.
В заключение хочу пригласить всех желающих на бесплатный демоурок по теме "OrientDB: запрашиваем данные из графов". Подробнее об уроке можно узнать по ссылке ниже.
leahch
О чем текст? Ни о чем!
99% статьи есть в любом источнике.
выводы и рекомендации - никакие
технической информации - ноль
Зачем такое писать? Читать здесь точно нечего.