SlideShare a Scribd company logo
1
Переход на DynamoDB.
Есть ли жизнь после
MongoDB?
Вяль Тимур
Март 29, 2018
2
println(“Hello World!”)
Hello World!
3
Amazon Web Services DynamoDB
4
План
Что такое DynamoDB?1
Различия между DynamoDB и MongoDB2
Ограничения DynamoDB3
Наш опыт перехода с MongoDB на DynamoDB4
Проблемы с которыми мы столкнулись5
5
Dynamo vs Mongo
Key-Value
Document
6
Ценовая политика
Условно
Запись
Пропускная способность
Чтение (по 25 ед.)
+ +
2,5 млн.
запросов
7
Ограничения в DynamoDB
DynamoDB имеет 2 типа индексов (Локальный и Глобальный)1
Количество индексов на таблицу не более 5 каждого типа2
Нету уникальных индексов4
Размер записи в таблице ограничен 400KB5
Ограничения на редактирование таблицы6
Максимальный размер индекса - 2 поля3
8
Нестыковка количества полей в индексах
{
"_id"
"pubId"
"pubDocId"
"key"
"value"
}
Mongo
Compound index
{
"docId"
"publisherMetadata"
"key"
"value"
}
Dynamo
pubId_pubDocId
Domain Class
Getter and Setter Global secondary index
9
Нестыковка количества полей в индексах
{
"_id"
"planId"
"beginDate"
"endDate"
"value"
}
Mongo
Compound index
{
"planId"
"period "
"beginDate"
"endDate"
"value"
}
Dynamo
beginDate_endDate
Domain Class
Annotation @DynamoDBDelimited
Composite PK
10
Сериализация/десериализация через getters/setters
Student
• Getter
• Setter
• …
• First Name
• Last Name
• …
• Other info
{…;}
11
Сериализация/десериализация полей сложных типов
Map<SomeEnum, Map<String, String>>
@DynamoDBConvertedJson@DynamoDBConverted(converter = Converter.class)
Converter
• convert
• unconvert
DynamoDBTypeConverter
12
Инструменты для миграции данных
13
Инструменты для миграции данных
14
DynamoDB + Data Pipeline + S3
Имена таблиц не изменяются!
~35-40 GB = 2-2.5
Шаг 1. Экспорт на S3
Шаг 2. Импорт с S3 в новую таблицу
~1.5 сут.
Dynamo Table S3 Bucket
Dynamo TableS3 Bucket
15
• Хорошая интеграция с AWS сервисами
• Данные хранятся в облаке
• Масштабируемость и быстродействие
• Лёгкий старт
• Имеет локальную бесплатную версию
• Слабый инструмент получения данных
• Ограничения на редактирование таблиц
Выводы
16
Вопросы?
17
Спасибо за внимание!

More Related Content

Similar to Переход на DynamoDB. Есть ли жизнь после MongoDB?

kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDKrivoy Rog IT Community
 
Познай ТОП, выпуск 2. Севальнев Дмитрий (Пиксель Плюс)
Познай ТОП, выпуск 2. Севальнев Дмитрий (Пиксель Плюс)Познай ТОП, выпуск 2. Севальнев Дмитрий (Пиксель Плюс)
Познай ТОП, выпуск 2. Севальнев Дмитрий (Пиксель Плюс)
Дмитрий Севальнев
 
Google protocol buffers в мобильных проектах
Google protocol buffers в мобильных проектахGoogle protocol buffers в мобильных проектах
Google protocol buffers в мобильных проектах
ciklum_ods
 
Seo практикум 3.0 - продвижение коммерческого портала в яндексе и google
Seo практикум 3.0 - продвижение коммерческого портала в яндексе и googleSeo практикум 3.0 - продвижение коммерческого портала в яндексе и google
Seo практикум 3.0 - продвижение коммерческого портала в яндексе и google
Sergey Yurkov
 
Быстро о быстром
Быстро о быстромБыстро о быстром
Быстро о быстром
Roman Dvornov
 
Владислав Моргун
Владислав МоргунВладислав Моргун
Владислав Моргун
SEO.UA
 
Никулин Павел. Machine learning для текстового анализа
Никулин Павел. Machine learning для текстового анализаНикулин Павел. Machine learning для текстового анализа
Никулин Павел. Machine learning для текстового анализа
Дмитрий Шахов
 
Яндекс.Поиск для сайта. HTML+CSS: новые возможности дизайна выдачи
Яндекс.Поиск для сайта. HTML+CSS: новые возможности дизайна выдачиЯндекс.Поиск для сайта. HTML+CSS: новые возможности дизайна выдачи
Яндекс.Поиск для сайта. HTML+CSS: новые возможности дизайна выдачи
Сергей Мочалов
 
Основы текстовой оптимизации
Основы текстовой оптимизацииОсновы текстовой оптимизации
Основы текстовой оптимизации
Rush Agency
 
Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08
Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08
Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08
Vladislav Morgun
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"
Ontico
 
Анализ доменной зоны TJ
Анализ доменной зоны TJАнализ доменной зоны TJ
Анализ доменной зоны TJIvan Golodov
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 
Оптимизация 64-битных программ
Оптимизация 64-битных программОптимизация 64-битных программ
Оптимизация 64-битных программ
Tatyanazaxarova
 
My sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmugMy sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmug
Andrey Tokarchuk
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest
 
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)Dmitry Degtyarev
 

Similar to Переход на DynamoDB. Есть ли жизнь после MongoDB? (20)

kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
 
Познай ТОП, выпуск 2. Севальнев Дмитрий (Пиксель Плюс)
Познай ТОП, выпуск 2. Севальнев Дмитрий (Пиксель Плюс)Познай ТОП, выпуск 2. Севальнев Дмитрий (Пиксель Плюс)
Познай ТОП, выпуск 2. Севальнев Дмитрий (Пиксель Плюс)
 
Google protocol buffers в мобильных проектах
Google protocol buffers в мобильных проектахGoogle protocol buffers в мобильных проектах
Google protocol buffers в мобильных проектах
 
poznay top 2
poznay top 2poznay top 2
poznay top 2
 
Seo практикум 3.0 - продвижение коммерческого портала в яндексе и google
Seo практикум 3.0 - продвижение коммерческого портала в яндексе и googleSeo практикум 3.0 - продвижение коммерческого портала в яндексе и google
Seo практикум 3.0 - продвижение коммерческого портала в яндексе и google
 
Быстро о быстром
Быстро о быстромБыстро о быстром
Быстро о быстром
 
Владислав Моргун
Владислав МоргунВладислав Моргун
Владислав Моргун
 
Никулин Павел. Machine learning для текстового анализа
Никулин Павел. Machine learning для текстового анализаНикулин Павел. Machine learning для текстового анализа
Никулин Павел. Machine learning для текстового анализа
 
Яндекс.Поиск для сайта. HTML+CSS: новые возможности дизайна выдачи
Яндекс.Поиск для сайта. HTML+CSS: новые возможности дизайна выдачиЯндекс.Поиск для сайта. HTML+CSS: новые возможности дизайна выдачи
Яндекс.Поиск для сайта. HTML+CSS: новые возможности дизайна выдачи
 
Основы текстовой оптимизации
Основы текстовой оптимизацииОсновы текстовой оптимизации
Основы текстовой оптимизации
 
Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08
Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08
Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
Ror - The Beginning
Ror - The BeginningRor - The Beginning
Ror - The Beginning
 
Анализ доменной зоны TJ
Анализ доменной зоны TJАнализ доменной зоны TJ
Анализ доменной зоны TJ
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
Оптимизация 64-битных программ
Оптимизация 64-битных программОптимизация 64-битных программ
Оптимизация 64-битных программ
 
My sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmugMy sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmug
 
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
 
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
 

More from Vitebsk Miniq

Runtime compilation and code execution in groovy
Runtime compilation and code execution in groovyRuntime compilation and code execution in groovy
Runtime compilation and code execution in groovy
Vitebsk Miniq
 
The 5 Laws of Software Estimates
The 5 Laws of Software EstimatesThe 5 Laws of Software Estimates
The 5 Laws of Software Estimates
Vitebsk Miniq
 
Latest & Greatest Observability Release 7.9
Latest & Greatest Observability Release 7.9Latest & Greatest Observability Release 7.9
Latest & Greatest Observability Release 7.9
Vitebsk Miniq
 
Тестирование Spring-based приложений
Тестирование Spring-based приложенийТестирование Spring-based приложений
Тестирование Spring-based приложений
Vitebsk Miniq
 
Семантический поиск - что это, как работает и чем отличается от просто поиска
Семантический поиск - что это, как работает и чем отличается от просто поискаСемантический поиск - что это, как работает и чем отличается от просто поиска
Семантический поиск - что это, как работает и чем отличается от просто поиска
Vitebsk Miniq
 
Локализационное тестирование - это не только перевод
Локализационное тестирование - это не только переводЛокализационное тестирование - это не только перевод
Локализационное тестирование - это не только перевод
Vitebsk Miniq
 
ISTQB Сертификация тестировщиков: быть или не быть?
ISTQB Сертификация тестировщиков: быть или не быть?ISTQB Сертификация тестировщиков: быть или не быть?
ISTQB Сертификация тестировщиков: быть или не быть?
Vitebsk Miniq
 
Apollo GraphQL Federation
Apollo GraphQL FederationApollo GraphQL Federation
Apollo GraphQL Federation
Vitebsk Miniq
 
Who is a functional tester
Who is a functional testerWho is a functional tester
Who is a functional tester
Vitebsk Miniq
 
Crawling healthy
Crawling healthyCrawling healthy
Crawling healthy
Vitebsk Miniq
 
Вперед в прошлое
Вперед в прошлоеВперед в прошлое
Вперед в прошлое
Vitebsk Miniq
 
CloudFormation experience
CloudFormation experienceCloudFormation experience
CloudFormation experience
Vitebsk Miniq
 
Learning Intelligence: the story of mine
Learning Intelligence: the story of mineLearning Intelligence: the story of mine
Learning Intelligence: the story of mine
Vitebsk Miniq
 
Как программисты могут спасти мир
Как программисты могут спасти мирКак программисты могут спасти мир
Как программисты могут спасти мир
Vitebsk Miniq
 
Использование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложенийИспользование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложений
Vitebsk Miniq
 
Distributed tracing system in action. Instana Tracing.
Distributed tracing system in action. Instana Tracing.Distributed tracing system in action. Instana Tracing.
Distributed tracing system in action. Instana Tracing.
Vitebsk Miniq
 
Насорил - убери!
Насорил - убери!Насорил - убери!
Насорил - убери!
Vitebsk Miniq
 
Styled-components. Что? Когда? И зачем?
Styled-components. Что? Когда? И зачем?Styled-components. Что? Когда? И зачем?
Styled-components. Что? Когда? И зачем?
Vitebsk Miniq
 
Красные флаги и розовые очки
Красные флаги и розовые очкиКрасные флаги и розовые очки
Красные флаги и розовые очки
Vitebsk Miniq
 
CSS. Практика
CSS. ПрактикаCSS. Практика
CSS. Практика
Vitebsk Miniq
 

More from Vitebsk Miniq (20)

Runtime compilation and code execution in groovy
Runtime compilation and code execution in groovyRuntime compilation and code execution in groovy
Runtime compilation and code execution in groovy
 
The 5 Laws of Software Estimates
The 5 Laws of Software EstimatesThe 5 Laws of Software Estimates
The 5 Laws of Software Estimates
 
Latest & Greatest Observability Release 7.9
Latest & Greatest Observability Release 7.9Latest & Greatest Observability Release 7.9
Latest & Greatest Observability Release 7.9
 
Тестирование Spring-based приложений
Тестирование Spring-based приложенийТестирование Spring-based приложений
Тестирование Spring-based приложений
 
Семантический поиск - что это, как работает и чем отличается от просто поиска
Семантический поиск - что это, как работает и чем отличается от просто поискаСемантический поиск - что это, как работает и чем отличается от просто поиска
Семантический поиск - что это, как работает и чем отличается от просто поиска
 
Локализационное тестирование - это не только перевод
Локализационное тестирование - это не только переводЛокализационное тестирование - это не только перевод
Локализационное тестирование - это не только перевод
 
ISTQB Сертификация тестировщиков: быть или не быть?
ISTQB Сертификация тестировщиков: быть или не быть?ISTQB Сертификация тестировщиков: быть или не быть?
ISTQB Сертификация тестировщиков: быть или не быть?
 
Apollo GraphQL Federation
Apollo GraphQL FederationApollo GraphQL Federation
Apollo GraphQL Federation
 
Who is a functional tester
Who is a functional testerWho is a functional tester
Who is a functional tester
 
Crawling healthy
Crawling healthyCrawling healthy
Crawling healthy
 
Вперед в прошлое
Вперед в прошлоеВперед в прошлое
Вперед в прошлое
 
CloudFormation experience
CloudFormation experienceCloudFormation experience
CloudFormation experience
 
Learning Intelligence: the story of mine
Learning Intelligence: the story of mineLearning Intelligence: the story of mine
Learning Intelligence: the story of mine
 
Как программисты могут спасти мир
Как программисты могут спасти мирКак программисты могут спасти мир
Как программисты могут спасти мир
 
Использование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложенийИспользование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложений
 
Distributed tracing system in action. Instana Tracing.
Distributed tracing system in action. Instana Tracing.Distributed tracing system in action. Instana Tracing.
Distributed tracing system in action. Instana Tracing.
 
Насорил - убери!
Насорил - убери!Насорил - убери!
Насорил - убери!
 
Styled-components. Что? Когда? И зачем?
Styled-components. Что? Когда? И зачем?Styled-components. Что? Когда? И зачем?
Styled-components. Что? Когда? И зачем?
 
Красные флаги и розовые очки
Красные флаги и розовые очкиКрасные флаги и розовые очки
Красные флаги и розовые очки
 
CSS. Практика
CSS. ПрактикаCSS. Практика
CSS. Практика
 

Переход на DynamoDB. Есть ли жизнь после MongoDB?