SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
NoSQL базы данных эпохи облаков
© 2020 IBM Corporation
Презентация от 04 июня 2020 года
Что такое Apache CouchDB?
2
LB1
LB2 (failover)
• Open Source проект под эгидой Apache Software Foundation
• Документ-ориентированная СУБД
• Работа с данными в формате JSON через RESTful API
• Горизонтальное масштабирование на чтение и запись
• Устойчивость к отказам отдельных серверов
• Встроенная мульти-мастер репликация
Что такое IBM Cloudant?
3
• Облачный сервис NoSQL СУБД от IBM
• Использует доработанное ядро CouchDB
• Эластичное управление пропускной способностью и ёмкостью
• Географически-распределённая инфраструктура ЦОД
• Реализует ряд расширений и усовершенствований, включая работу с
геоданными
• Новые функции интегрируются в Apache CouchDB
Некоторые успешные проекты
4
SeniorAdvisor Healthcare
GameStop Retail
Likeminder Media
YukonBaby Healthcare
Dimagi
Life
Sciences
Skechers Retail
Opteamize Education
RunKeeper Healthcare
Menuat Retail
AppAdvice Media
Cabify Transport
Liberty Mutual Insurance
Morningstar Financial
Hothead Games Media
Kohl’s Retail
Ovation
Computer
Services
Quetzal Retail
SpaceCraft Media
RadPad Media
RSG Media Media
Connio
Computer
Services
Comdata
Computer
Services
https://www.ibm.com/case-studies/search
• «Родной» интерфейс и формат данных для Web
• Практически неограниченная масштабируемость
• Гибкость и удобство разработки
• Репликация! – в том числе для мобильных устройств и IoT
• Отсутствие привязки к поставщику (Vendor Lock-In)
Spark SQL
Сильные стороны
5
REST (HTTP/s) API
Data APIs
On-Premises Appliances
Analytics Exchange APIs
Cloud Data Services APIs
JSON, REST, Geospatial,
Mobile
Offline Sync
Cloud and Local
Masterless Nodes
Web & Mobile
Applications Data IngestData Export
«Родной» интерфейс и формат данных для Web
6
• Сократить (вовсе исключить!) «сериализацию»
• RESTful API = любые средства разработки
• JSON – «штатный» формат обмена для современных приложений
• Межсетевые экраны и прокси-сервера «открыты по умолчанию»
1. {
2. "_id": "110067407",
3. "_rev": "1-9c45439faa16674951ce450e7b88a6b6",
4. "date": "2017/01/15 16:41:25 +0000",
5. "properties": {
6. "source": "boston",
7. "main_crimecode": "arrest",
8. "shooting": false
9. },
10. "geometry": {
11. "type": "Point",
12. "coordinates": [-
71.08561842,42.3286598]
13. }
14. }
Практически неограниченная масштабируемость
7
• Распределённая архитектура
• MVCC, eventual consistency
• Запись не будет «бутылочным горлом»
• Добавление серверов по мере надобности
Начать с малого и расти по мере необходимости
Чтение Запись
Гибкость и удобство разработки
8
• Схема данных управляется приложением
• но может контролироваться при записи!
• (обработчик обновлений – «update handler»)
• Индексы по полям
• Полнотекстовые индексы на базе Apache Lucene
• Автоматические расчёты внутри БД по схеме Map-Reduce
• Мобильные приложения (сценарии «Offline first»)
• Работа с географическими данными
Интерфейсы для работы с данными
9
Документы JSON Первичный индекс Вторичный индекс
• Прямой поиск по полю _id • Существует всегда
• B-trees
• Значение _id à Документ
• Инкрементальный MapReduce
• B-trees
• Ключ à Поля
• Чтение и запись единичного
документа или их набора с
указанием значения поля _id
• Поиск документов по _id
• Возможность поиска по
диапазону значений
• Анализ диапазона или множества
• Агрегация, статистика,
группировка данных
Полнотекстовый (Lucene) Geospatial CouchDB Mango (Cloudant Query)
• На основе Apache Lucene
• Индексируются все поля или
выбранная часть
• R* trees
• Lat/Long координаты GeoJSON
• Декларативные запросы к стиле
MongoDB
• Запросы Ad-hoc
• Поиск документов по
содержимому
• Возможна группировка и базовые
геопространственные операции
• Сложные геометрии
(polygon, circular string, ...)
• Геометрические вычисления
(intersect, overlaps, …)
• Запросы Ad-hoc
• Операторы (>, <, IN, OR, AND)
• Интуитивно для специалистов с
опытом MongoDB или SQL
Репликация
10
Pull
Push
Cluster A Cluster B
Sync
SyncSync
§ Двунаправленная:
Push + Pull = Synchronization
§ Непрерывная либо по запросу
§ Фильтруемая:
Отбор подмножества по условию
§ Надёжная:
Возобновляется после прерывания
• Автоматическое обнаружение конфликтов
• Автоматический выбор «победителя»
• Возможность скорректировать выбор в приложении
Репликация и гибридные облака
11
Разработка мобильных приложений
12
• Готовые инструменты для построения мобильных «Offline First»
приложений
• Cloudant Sync – локальное JSON хранилище для мобильных
устройств, Open Source
• Android: https://github.com/cloudant/sync-android
• iOS: https://github.com/cloudant/CDTDatastore
• SwiftCloudant – официальная Open Source библиотека под Apple Swift
для работы с CouchDB и Cloudant
• https://github.com/cloudant/swift-cloudant
• PouchDB – база данных для работы в браузере
• Синхронизация с CouchDB и Cloudant
Интеграция Cloudant и Apache Spark
§ Расширение в составе Apache Bahir
§ Варианты применения:
– Быстрая аналитика над данными
– Трансформация и фильтрация
потока данных перед загрузкой
– Аналитика над данными из
нескольких источников (не только
Cloudant)
§ Поддержка Spark SQL
– SQL-запросы к данным Cloudant
– Обработка результатов на Scala и
Python
– Запись результатов обратно в
Cloudant
13
SparkSession / DataFrame / Dataset APIs
Structured
Streaming
MLlib GraphFrame
TensorFrame
s
SQL
Spark Core
Spark Core (RDD APIs)
Data Source
Connections
Spark
SQL
Интеграция Cloudant и Apache Spark
14
Cloudant Geospatial
15
§ Обширный набор функций поддержки ГИС-приложений
– Накрывающий многоугольник и эллипс, окружность, прямоугольник
– Предсказание пути, оптимизация маршрута, GeoIP
– Сегментирование данных на основании сведений о местоположении
– Стандарты GeoJSON, OGC SFSQL, SQL/MM
§ Локальный доступ (на уровне устройства) к функциям ГИС
§ Интеграция с распространенными ГИС-приложениями
– Поддержка формата WKB (GDAL, Python)
– ESRI ArcGIS
– Интеграция с MapBox
Влияние Cloudant на развитие CouchDB
16
• CouchDB 1.0:
• Fauxton (GUI для управления и доступа к данным)
• Полнотекстовый поиск
• Поддержка географических запросов
• CouchDB 2.0:
• Поддержка кластерного режима работы
• CouchDB 3.0:
• Партиционированные запросы
• Перебалансировка кластера для расширения
Немного истории – Apache CouchDB и IBM Cloudant
Будущее: Cloudant «on Transaction Engine»
18
• Организация работы с данными на основе FoundationDB
• Снижение задержек при запросах
• Автоматическое масштабирование
• долой ручное шардирование!
• Строгая согласованность данных
• вторичные индексы обновляются синхронно
• Доступен уже сегодня
• Реализация в CouchDB ожидается в версии 4.0
• зависит от решений сообщества
Пример конфигурации оборудования Cloudant
19
• Типовой узел «bare metal» кластера Cloudant для IBM IaaS
• 48 процессорных ядер
• 128 Гбайт оперативной памяти
• Диски – один из двух вариантов:
• 2 x 1,2 Тбайт SSD в RAID-0
• 4 x 1,2 Тбайт SSD в RAID-10 (для минимизации отказов узла)
• Локальные SSD-диски критичны для производительности
• Кластер на 12 узлов обычно обеспечивает не менее:
• 20 000 чтений в секунду
• 10 000 записей в секунду
• 1 000 глобальных запросов (сканирований) в секунду
• По опыту, тюнинг (партиционирование, индексы, …) позволяет
достичь ещё более высоких показателей на том же кластере
Дополнено 17 июня 2020 года
YMMV
Специфика производительности Cloudant и CouchDB
20
• Cloudant и CouchDB – не база ключ/значение
• Вторичные индексы и полнотекстовый поиск
• Инкрементальные расчёты Map-Reduce
• Встроенная система репликации изменений
• Сравнение «скорострельности» с (вашей любимой NoSQL базой)
имеет смысл только при сопоставимой функциональности
• Диски (предпочтительно – flash-память)
• Вместо хранения всех данных в оперативной памяти
• Перспектива – переход на FoundationDB обеспечит снижение нагрузки
ввода-вывода
• Увеличение и уменьшение размера кластера
• Обычно выполняется группами по 3 узла (или кратно)
• Позволяет масштабировать как чтение, так и запись
Дополнено 17 июня 2020 года
© 2020 IBM Corporation

Weitere ähnliche Inhalte

Was ist angesagt?

Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцКак мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцMikhail Tabunov
 
Миграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облакоМиграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облакоNatalia Efimtseva
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureNatalia Efimtseva
 
NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015Shamim bhuiyan
 
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Coit-people
 
Российская СУБД Postgres Pro
Российская СУБД Postgres ProРоссийская СУБД Postgres Pro
Российская СУБД Postgres ProAndrey Fleyta
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Andrew Avdeev
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest
 
Построение Read Model-ей с использованием потоков событий
Построение Read Model-ей с использованием потоков событийПостроение Read Model-ей с использованием потоков событий
Построение Read Model-ей с использованием потоков событийDenis Ivanov
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Tanya Denisyuk
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?aragozin
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Ontico
 
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.proit-people
 
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )Shamim bhuiyan
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Ontico
 

Was ist angesagt? (20)

Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцКак мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
 
Миграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облакоМиграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облако
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows Azure
 
NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015
 
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
 
Webcluster cases
Webcluster casesWebcluster cases
Webcluster cases
 
Российская СУБД Postgres Pro
Российская СУБД Postgres ProРоссийская СУБД Postgres Pro
Российская СУБД Postgres Pro
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
02 1c-bitrix-cloud-storage
02 1c-bitrix-cloud-storage02 1c-bitrix-cloud-storage
02 1c-bitrix-cloud-storage
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
 
1c bitrix-cluster-et
1c bitrix-cluster-et1c bitrix-cluster-et
1c bitrix-cluster-et
 
Построение Read Model-ей с использованием потоков событий
Построение Read Model-ей с использованием потоков событийПостроение Read Model-ей с использованием потоков событий
Построение Read Model-ей с использованием потоков событий
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
 
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
 
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
 
Azure
AzureAzure
Azure
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
 

Ähnlich wie IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков

Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureDmitry Lazarenko
 
DevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System AdministratorDevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System AdministratorJetBrains Russia
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПОDmitry Lazarenko
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data applianceCleverDATA
 
Drupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupalCamp MSK
 
Microsoft Azure - введение в основные сервисы для разработки и инфраструктуры...
Microsoft Azure - введение в основные сервисы для разработки и инфраструктуры...Microsoft Azure - введение в основные сервисы для разработки и инфраструктуры...
Microsoft Azure - введение в основные сервисы для разработки и инфраструктуры...Microsoft
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Ontico
 
Онлайн миграция контейнеров. Взгляд изнутри
Онлайн миграция контейнеров. Взгляд изнутриОнлайн миграция контейнеров. Взгляд изнутри
Онлайн миграция контейнеров. Взгляд изнутриJelastic Multi-Cloud PaaS
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загорdrupalconf
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
 
AZadonsky New Cloud Services
AZadonsky New Cloud ServicesAZadonsky New Cloud Services
AZadonsky New Cloud ServicesVasily Demin
 
The impact of the cloud on development by Alexander Klimov, Igor Sukharev
The impact of the cloud on development by Alexander Klimov, Igor SukharevThe impact of the cloud on development by Alexander Klimov, Igor Sukharev
The impact of the cloud on development by Alexander Klimov, Igor Sukharevigorsukharev
 
The impact of the cloud on development by Alexander Klimov, Igor Sukharev
The impact of the cloud on development by Alexander Klimov, Igor SukharevThe impact of the cloud on development by Alexander Klimov, Igor Sukharev
The impact of the cloud on development by Alexander Klimov, Igor SukharevAlexander Klimov
 
Александр Киракозов "Архитектура загрузчика Яндекс.Диска"
Александр Киракозов "Архитектура загрузчика Яндекс.Диска"Александр Киракозов "Архитектура загрузчика Яндекс.Диска"
Александр Киракозов "Архитектура загрузчика Яндекс.Диска"Yandex
 
Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018ITEM
 
Решения Brocade для построения IP сетей будущего
Решения Brocade для построения IP сетей будущегоРешения Brocade для построения IP сетей будущего
Решения Brocade для построения IP сетей будущегоARCCN
 
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhonePavel Bashmakov
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networkingguest57eb8a
 
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуреСХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуреDEPO Computers
 

Ähnlich wie IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков (20)

Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
 
DevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System AdministratorDevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System Administrator
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПО
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data appliance
 
Drupal and NodeJS.
Drupal and NodeJS.Drupal and NodeJS.
Drupal and NodeJS.
 
Drupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupal в облаке - Владимир Юнев
Drupal в облаке - Владимир Юнев
 
Microsoft Azure - введение в основные сервисы для разработки и инфраструктуры...
Microsoft Azure - введение в основные сервисы для разработки и инфраструктуры...Microsoft Azure - введение в основные сервисы для разработки и инфраструктуры...
Microsoft Azure - введение в основные сервисы для разработки и инфраструктуры...
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
Онлайн миграция контейнеров. Взгляд изнутри
Онлайн миграция контейнеров. Взгляд изнутриОнлайн миграция контейнеров. Взгляд изнутри
Онлайн миграция контейнеров. Взгляд изнутри
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загор
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
AZadonsky New Cloud Services
AZadonsky New Cloud ServicesAZadonsky New Cloud Services
AZadonsky New Cloud Services
 
The impact of the cloud on development by Alexander Klimov, Igor Sukharev
The impact of the cloud on development by Alexander Klimov, Igor SukharevThe impact of the cloud on development by Alexander Klimov, Igor Sukharev
The impact of the cloud on development by Alexander Klimov, Igor Sukharev
 
The impact of the cloud on development by Alexander Klimov, Igor Sukharev
The impact of the cloud on development by Alexander Klimov, Igor SukharevThe impact of the cloud on development by Alexander Klimov, Igor Sukharev
The impact of the cloud on development by Alexander Klimov, Igor Sukharev
 
Александр Киракозов "Архитектура загрузчика Яндекс.Диска"
Александр Киракозов "Архитектура загрузчика Яндекс.Диска"Александр Киракозов "Архитектура загрузчика Яндекс.Диска"
Александр Киракозов "Архитектура загрузчика Яндекс.Диска"
 
Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018
 
Решения Brocade для построения IP сетей будущего
Решения Brocade для построения IP сетей будущегоРешения Brocade для построения IP сетей будущего
Решения Brocade для построения IP сетей будущего
 
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhone
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networking
 
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуреСХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
 

IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков

  • 1. NoSQL базы данных эпохи облаков © 2020 IBM Corporation Презентация от 04 июня 2020 года
  • 2. Что такое Apache CouchDB? 2 LB1 LB2 (failover) • Open Source проект под эгидой Apache Software Foundation • Документ-ориентированная СУБД • Работа с данными в формате JSON через RESTful API • Горизонтальное масштабирование на чтение и запись • Устойчивость к отказам отдельных серверов • Встроенная мульти-мастер репликация
  • 3. Что такое IBM Cloudant? 3 • Облачный сервис NoSQL СУБД от IBM • Использует доработанное ядро CouchDB • Эластичное управление пропускной способностью и ёмкостью • Географически-распределённая инфраструктура ЦОД • Реализует ряд расширений и усовершенствований, включая работу с геоданными • Новые функции интегрируются в Apache CouchDB
  • 4. Некоторые успешные проекты 4 SeniorAdvisor Healthcare GameStop Retail Likeminder Media YukonBaby Healthcare Dimagi Life Sciences Skechers Retail Opteamize Education RunKeeper Healthcare Menuat Retail AppAdvice Media Cabify Transport Liberty Mutual Insurance Morningstar Financial Hothead Games Media Kohl’s Retail Ovation Computer Services Quetzal Retail SpaceCraft Media RadPad Media RSG Media Media Connio Computer Services Comdata Computer Services https://www.ibm.com/case-studies/search
  • 5. • «Родной» интерфейс и формат данных для Web • Практически неограниченная масштабируемость • Гибкость и удобство разработки • Репликация! – в том числе для мобильных устройств и IoT • Отсутствие привязки к поставщику (Vendor Lock-In) Spark SQL Сильные стороны 5 REST (HTTP/s) API Data APIs On-Premises Appliances Analytics Exchange APIs Cloud Data Services APIs JSON, REST, Geospatial, Mobile Offline Sync Cloud and Local Masterless Nodes Web & Mobile Applications Data IngestData Export
  • 6. «Родной» интерфейс и формат данных для Web 6 • Сократить (вовсе исключить!) «сериализацию» • RESTful API = любые средства разработки • JSON – «штатный» формат обмена для современных приложений • Межсетевые экраны и прокси-сервера «открыты по умолчанию» 1. { 2. "_id": "110067407", 3. "_rev": "1-9c45439faa16674951ce450e7b88a6b6", 4. "date": "2017/01/15 16:41:25 +0000", 5. "properties": { 6. "source": "boston", 7. "main_crimecode": "arrest", 8. "shooting": false 9. }, 10. "geometry": { 11. "type": "Point", 12. "coordinates": [- 71.08561842,42.3286598] 13. } 14. }
  • 7. Практически неограниченная масштабируемость 7 • Распределённая архитектура • MVCC, eventual consistency • Запись не будет «бутылочным горлом» • Добавление серверов по мере надобности Начать с малого и расти по мере необходимости Чтение Запись
  • 8. Гибкость и удобство разработки 8 • Схема данных управляется приложением • но может контролироваться при записи! • (обработчик обновлений – «update handler») • Индексы по полям • Полнотекстовые индексы на базе Apache Lucene • Автоматические расчёты внутри БД по схеме Map-Reduce • Мобильные приложения (сценарии «Offline first») • Работа с географическими данными
  • 9. Интерфейсы для работы с данными 9 Документы JSON Первичный индекс Вторичный индекс • Прямой поиск по полю _id • Существует всегда • B-trees • Значение _id à Документ • Инкрементальный MapReduce • B-trees • Ключ à Поля • Чтение и запись единичного документа или их набора с указанием значения поля _id • Поиск документов по _id • Возможность поиска по диапазону значений • Анализ диапазона или множества • Агрегация, статистика, группировка данных Полнотекстовый (Lucene) Geospatial CouchDB Mango (Cloudant Query) • На основе Apache Lucene • Индексируются все поля или выбранная часть • R* trees • Lat/Long координаты GeoJSON • Декларативные запросы к стиле MongoDB • Запросы Ad-hoc • Поиск документов по содержимому • Возможна группировка и базовые геопространственные операции • Сложные геометрии (polygon, circular string, ...) • Геометрические вычисления (intersect, overlaps, …) • Запросы Ad-hoc • Операторы (>, <, IN, OR, AND) • Интуитивно для специалистов с опытом MongoDB или SQL
  • 10. Репликация 10 Pull Push Cluster A Cluster B Sync SyncSync § Двунаправленная: Push + Pull = Synchronization § Непрерывная либо по запросу § Фильтруемая: Отбор подмножества по условию § Надёжная: Возобновляется после прерывания • Автоматическое обнаружение конфликтов • Автоматический выбор «победителя» • Возможность скорректировать выбор в приложении
  • 12. Разработка мобильных приложений 12 • Готовые инструменты для построения мобильных «Offline First» приложений • Cloudant Sync – локальное JSON хранилище для мобильных устройств, Open Source • Android: https://github.com/cloudant/sync-android • iOS: https://github.com/cloudant/CDTDatastore • SwiftCloudant – официальная Open Source библиотека под Apple Swift для работы с CouchDB и Cloudant • https://github.com/cloudant/swift-cloudant • PouchDB – база данных для работы в браузере • Синхронизация с CouchDB и Cloudant
  • 13. Интеграция Cloudant и Apache Spark § Расширение в составе Apache Bahir § Варианты применения: – Быстрая аналитика над данными – Трансформация и фильтрация потока данных перед загрузкой – Аналитика над данными из нескольких источников (не только Cloudant) § Поддержка Spark SQL – SQL-запросы к данным Cloudant – Обработка результатов на Scala и Python – Запись результатов обратно в Cloudant 13 SparkSession / DataFrame / Dataset APIs Structured Streaming MLlib GraphFrame TensorFrame s SQL Spark Core Spark Core (RDD APIs) Data Source Connections Spark SQL
  • 15. Cloudant Geospatial 15 § Обширный набор функций поддержки ГИС-приложений – Накрывающий многоугольник и эллипс, окружность, прямоугольник – Предсказание пути, оптимизация маршрута, GeoIP – Сегментирование данных на основании сведений о местоположении – Стандарты GeoJSON, OGC SFSQL, SQL/MM § Локальный доступ (на уровне устройства) к функциям ГИС § Интеграция с распространенными ГИС-приложениями – Поддержка формата WKB (GDAL, Python) – ESRI ArcGIS – Интеграция с MapBox
  • 16. Влияние Cloudant на развитие CouchDB 16 • CouchDB 1.0: • Fauxton (GUI для управления и доступа к данным) • Полнотекстовый поиск • Поддержка географических запросов • CouchDB 2.0: • Поддержка кластерного режима работы • CouchDB 3.0: • Партиционированные запросы • Перебалансировка кластера для расширения
  • 17. Немного истории – Apache CouchDB и IBM Cloudant
  • 18. Будущее: Cloudant «on Transaction Engine» 18 • Организация работы с данными на основе FoundationDB • Снижение задержек при запросах • Автоматическое масштабирование • долой ручное шардирование! • Строгая согласованность данных • вторичные индексы обновляются синхронно • Доступен уже сегодня • Реализация в CouchDB ожидается в версии 4.0 • зависит от решений сообщества
  • 19. Пример конфигурации оборудования Cloudant 19 • Типовой узел «bare metal» кластера Cloudant для IBM IaaS • 48 процессорных ядер • 128 Гбайт оперативной памяти • Диски – один из двух вариантов: • 2 x 1,2 Тбайт SSD в RAID-0 • 4 x 1,2 Тбайт SSD в RAID-10 (для минимизации отказов узла) • Локальные SSD-диски критичны для производительности • Кластер на 12 узлов обычно обеспечивает не менее: • 20 000 чтений в секунду • 10 000 записей в секунду • 1 000 глобальных запросов (сканирований) в секунду • По опыту, тюнинг (партиционирование, индексы, …) позволяет достичь ещё более высоких показателей на том же кластере Дополнено 17 июня 2020 года YMMV
  • 20. Специфика производительности Cloudant и CouchDB 20 • Cloudant и CouchDB – не база ключ/значение • Вторичные индексы и полнотекстовый поиск • Инкрементальные расчёты Map-Reduce • Встроенная система репликации изменений • Сравнение «скорострельности» с (вашей любимой NoSQL базой) имеет смысл только при сопоставимой функциональности • Диски (предпочтительно – flash-память) • Вместо хранения всех данных в оперативной памяти • Перспектива – переход на FoundationDB обеспечит снижение нагрузки ввода-вывода • Увеличение и уменьшение размера кластера • Обычно выполняется группами по 3 узла (или кратно) • Позволяет масштабировать как чтение, так и запись Дополнено 17 июня 2020 года
  • 21. © 2020 IBM Corporation