Открыть сервисСервис

IBM Cloudant

IBM Cloudant — это документоориентированная нереляционная система управления базами данных (NoSQL), предоставляемая как облачный сервис (DBaaS — Database as a Service) компанией IBM. Cloudant основана на проекте Apache CouchDB и оптимизирована для работы с большими объёмами данных, высокой нагрузкой на запись и географически распределёнными приложениями, обеспечивая автоматическую репликацию, масштабирование и высокую доступность.

История

Проект Cloudant был основан в 2008 году в Кембридже (штат Массачусетс, США) Адамом Крейнером, Майком Миллером и Аланом Хоффманом. Изначально сервис назывался «Cloudant» и предлагал хостинг баз данных на основе Apache CouchDB. В 2010 году компания привлекла инвестиции от фонда RockPort Capital Partners, а в 2011 году — от фонда Commonwealth Capital Ventures. В 2012 году Cloudant выпустила собственную версию CouchDB с улучшенной производительностью и поддержкой кластеризации.

В 2014 году IBM объявила о приобретении Cloudant за 75 миллионов долларов США. После покупки сервис был интегрирован в портфель облачных решений IBM Bluemix (позднее переименованный в IBM Cloud). В 2016 году IBM выпустила версию Cloudant, совместимую с Apache CouchDB 2.0, а в 2018 году — версию с поддержкой геопространственных запросов. В 2020 году IBM объявила о прекращении поддержки автономного плана Cloudant, переведя всех пользователей на план, входящий в состав IBM Cloud.

Архитектура и принципы работы

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

Cloudant использует документоориентированную модель, где данные хранятся в виде JSON-документов. Каждый документ имеет уникальный идентификатор (_id) и может содержать произвольное количество полей. Документы группируются в базы данных, которые могут быть как изолированными, так и реплицируемыми между собой.

Репликация и синхронизация

Ключевой особенностью Cloudant является поддержка многомастерной репликации (multi-master replication). Это означает, что несколько копий базы данных могут одновременно принимать запросы на запись, а изменения синхронизируются между ними асинхронно. Репликация может быть настроена между разными регионами, дата-центрами или даже между облачной и локальной (on-premises) версией CouchDB.

Согласованность

Cloudant использует модель eventual consistency (событийная согласованность) — данные могут быть временно несогласованными между репликами, но в конечном итоге все копии приходят к единому состоянию. Это обеспечивает высокую доступность и устойчивость к сетевым разделениям (partition tolerance) в соответствии с теоремой CAP.

API и протоколы

Доступ к Cloudant осуществляется через RESTful HTTP API. Все операции — создание, чтение, обновление, удаление документов — выполняются с помощью стандартных HTTP-методов (GET, PUT, POST, DELETE). API полностью совместим с Apache CouchDB, что позволяет использовать те же библиотеки и инструменты. Для запросов используется язык MapReduce, а также индексы на основе B-деревьев.

Ключевые возможности

Автоматическое масштабирование

Cloudant автоматически распределяет данные по кластеру серверов, обеспечивая горизонтальное масштабирование (sharding). При увеличении нагрузки система может добавлять новые узлы без перерыва в обслуживании. Пользователь не управляет инфраструктурой — все операции по масштабированию выполняются провайдером.

Индексация и поиск

Cloudant поддерживает вторичные индексы, создаваемые с помощью MapReduce-функций. Для полнотекстового поиска используется интеграция с Apache Lucene. Также доступна поддержка геопространственных запросов (через GeoJSON) и индексов на основе пространственных данных.

Безопасность

Доступ к базам данных Cloudant контролируется через API-ключи (IAMIdentity and Access Management) или через аутентификацию по паролю. Поддерживается шифрование данных в покое (AES-256) и в транзите (TLS/SSL). Для дополнительной защиты можно настроить брандмауэр и списки контроля доступа (ACL).

Резервное копирование и восстановление

Cloudant автоматически создаёт резервные копии данных в нескольких дата-центрах. Пользователь может настроить периодичность и длительность хранения копий. Восстановление возможно на любой момент времени в пределах заданного окна.

Применение

Мобильные и веб-приложения

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

Интернет вещей (IoT)

В системах IoT Cloudant применяется для сбора и хранения телеметрии с датчиков, устройств и сенсоров. Высокая пропускная способность на запись позволяет обрабатывать миллионы событий в секунду.

Аналитика и отчётность

Cloudant может служить источником данных для аналитических систем, таких как Apache Spark или IBM Analytics Engine. Данные извлекаются через API или через потоковую передачу (например, через Apache Kafka).

Геораспределённые системы

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

Сравнение с другими NoSQL-решениями

ХарактеристикаIBM CloudantMongoDBAmazon DynamoDB
Модель данныхДокументы (JSON)Документы (BSON)Документы (JSON)
РепликацияMulti-masterSingle-masterMulti-master
СогласованностьEventualStrong (по умолчанию)Eventual / Strong
APIRESTfulRESTful + драйверыRESTful + SDK
РазмещениеОблако (IBM Cloud)Облако / on-premisesОблако (AWS)
ЦенообразованиеПлата за объём данных и запросыПлата за инстансПлата за чтение/запись

Критика и ограничения

Cloudant имеет ряд ограничений, которые могут быть существенными для некоторых сценариев. Во-первых, модель событийной согласованности не подходит для приложений, требующих строгой согласованности данных (например, финансовые транзакции). Во-вторых, максимальный размер одного документа ограничен 1 МБ, что может быть проблемой для хранения больших бинарных объектов (изображений, видео). В-третьих, Cloudant не поддерживает транзакции в классическом ACID-понимании — все операции атомарны только на уровне одного документа. Кроме того, сервис привязан к экосистеме IBM Cloud, что может ограничивать гибкость при выборе провайдера.

Интересные факты

  • Cloudant изначально разрабатывался как хостинг-провайдер для CouchDB, а не как самостоятельная СУБД.
  • В 2013 году Cloudant обрабатывал более 10 миллиардов запросов в месяц.
  • После приобретения IBM, Cloudant стал основой для сервиса IBM Cloud Databases for CouchDB.
  • Cloudant использует технологию «BigCouch» — распределённую версию CouchDB, разработанную изначально в Cloudant.

Источники

  • Официальная документация IBM Cloudant (IBM Cloud Docs)
  • «Cloudant: The Definitive Guide» (O'Reilly Media, 2014)
  • Статья «IBM acquires Cloudant» (IBM Newsroom, 2014)
  • Apache CouchDB Documentation (couchdb.apache.org)
  • Статья «Cloudant vs MongoDB vs DynamoDB» (Database Trends, 2019)