Сравнительный анализ MongoDB, DocumentDB и HDInsight

Введение

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

NoSQL СУБД представлены широким ассортиментом продуктов. В этой статье мы расскажем о трех из них — MongoDB, DocumentDB и HDInsight: проведем сравнительный анализ основных характеристик и рассмотрим особенности реализации.

Характеристики

MongoDB и DocumentDB предназначены для обработки транзакций, а HDInsight – преимущественно для аналитики. HDInsight – это система на основе Hadoop, размещающаяся в облаке. Давайте рассмотрим характеристики подробно.

Модель данных

MongoDbMongoDB и DocumentDB используют гибкую структуру данных. Для хранения данных MongoDB использует формат данных BSON, являющийся двоичным вариантом формата JSON, а DocumentDB использует формат JSON. В обеих СУБД данные хранятся в виде документов. Обе системы имеют зарезервированный идентификатор, который принимает значение GUID (globally unique identifier, глобально уникальный идентификатор) для представления уникальной записи. MongoDB имеет зарезервированное поле под названием _id, а DocumentDB – id.

Варианты размещения

MongoDB может размещаться как на локальном оборудовании, так и в облаке. DocumentDB и HDInsight размещаются в облаке Azure.

Масштабируемость

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

documentdbDocumentDB размещается в облаке Azure, и все серверы поддерживают операции чтения и записи. Управления кластером осуществляется с помощью средств Azure.

MongoDB и DocumentDB обеспечивают вертикальное и горизонтальное масштабирование, т.е. шардинг (sharding). MongoDB реализует шардинг с помощью «шард-кластеров» (shard cluster).

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

Кроме того, СУБД поддерживает такие операции, как $in, $gt и $lt при использовании фильтра. Также поддерживается поиск вложенных структур. Чтобы выполнить groupby и having, MongoDB использует такие операции, как $match и $group. Присутствует и поддержка таких операций, как $geoNear, позволяющих использовать преимущества геопространственных индексов (geospatical index). Кроме того, поддерживаются операции $sum и $avg при использовании совместно с $group.

DocumentDB поддерживает создание хранимых процедур (stored procedure), триггеров (trigger) и пользовательских функций (user-defined function, UDF) с помощью JavaScript. СУБД использует SQL-подобные запросы для извлечения данных. Также поддерживаются соединения (join) в пределах документа, имеющего вложенную структуру, для применения фильтра к данным. Основным недостатком является отсутствие каких-либо вариантов группирования (group by) и методов, таких как сумма (sum) и среднее (average). Пользователи должны самостоятельно реализовать эти возможности.

Согласованность и доступность

MongoDB применяет свойства ACID (atomicity, consistency, isolation, durability; атомарность, согласованность, изолированность, долговечность) на уровне документа. Свойства ACID гарантируют надежное изменение документа. В случае возникновения какой-либо ошибки, операция отменяется, и система возвращается в исходное состояние. MongoDB позволяет пользователю задать уровень важности операций записи (write concern). Если в системе присутствует несколько подчиненных серверов, уровень важности операций записи определяет, на каком количестве подчиненных серверов данные будут изменены, прежде чем пользователь получит подтверждение изменений.

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

MongoDB разработана таким образом, что в случае выхода из строя главного сервера, его место занимает подчиненный сервер. Это происходит автоматически и не требует вмешательства пользователя. DocumentDB использует средства Azure для управления доступностью серверов.

Управление и операции

Azure предоставляет веб-интерфейс для управления и мониторинга аккаунта DocumentDB. Мониторинг использования осуществляется с помощью диаграмм. Также есть возможность настраивать показатели в соответствии с потребностями.

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

HDInsightВсе это время мы сравнивали DocumentDB и MongoDB. Эти две СУБД поддерживают транзакционные данные, в то время как HDInsight поддерживает операции чтения. HDInsight размещается в облаке Azure, поэтому данная СУБД использует средства Azure для поддержки масштабируемости, доступности, управления и операций. HDInsight и MongoDB поддерживают запросы map-reduce. HDInsight эффективнее обрабатывает большие объемы данных по сравнению с MongoDB.

Заключение

В этой статье мы сравнили MongoDB, DocumentDB и HDInsight. MongoDB и DocumentDB поддерживают транзакционные данные, в то время как HDInsight не поддерживает транзакции и предназначена исключительно для анализа. HDInsight и MongoDB поддерживают запросы map-reduce. HDInsight обеспечивает более высокую производительность при выполнении запросов map-reduce и способна эффективнее обрабатывать большие объемы данных по сравнению с MongoDB.

MongoDB поддерживает функции агрегации, а DocumentDB – еще нет. Интеграция MongoDB и Hadoop позволит одновременно использовать преимущества транзакционной системы и аналитики.

По материалам: Developer

Добавить комментарий

Ваш e-mail не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =