Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...

55
Зачем Persistence для In-Memory, и как он работает? Артем Шитов Solution Architect, GridGain [email protected] persistence

Transcript of Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...

Page 1: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Зачем Persistence для In-Memory, икак он работает?

Артем Шитов

Solution Architect, [email protected]

persistence

Page 2: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Зачем Persistence для In-Memory?

• Растущие объемы данных — растущая проблема• Вычислительные мощности• Подходы к хранению и доступу• In-Memory: преимущества и проблемы

• Что предлагает Apache Ignite?• Memory-Centric SQL MPP Database• Скорость и надежность

• Как это работает внутри?• Страничная организация памяти• Выделение памяти• Дисковое хранилище• Распределенный SQL

Page 3: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Зачем Persistence для In-Memory?

• Растущие объемы данных — растущая проблема• Вычислительные мощности• Подходы к хранению и доступу• In-Memory: преимущества и проблемы

• Что предлагает Apache Ignite?• Memory-Centric SQL MPP Database• Скорость и надежность

• Как это работает внутри?• Страничная организация памяти• Выделение памяти• Дисковое хранилище• Распределенный SQL

Page 4: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Зачем Persistence для In-Memory?

• Растущие объемы данных — растущая проблема• Вычислительные мощности• Подходы к хранению и доступу• In-Memory: преимущества и проблемы

• Что предлагает Apache Ignite?• Memory-Centric SQL MPP Database• Скорость и надежность

• Как это работает внутри?• Страничная организация памяти• Выделение памяти• Дисковое хранилище• Распределенный SQL

Page 5: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Растущие объемы данных —растущая проблема

Page 6: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 7: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 8: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 9: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 10: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Как мы справляемся с ростом данных?

• Более мощный процессор• гонка гигагерц, Pentium IV — 3.8 Ghz

• Больше ядер в процессоре• гонка ядер, Xeon Phi 7210 — 64 ядра• multithreading, parallel computing

• Больше машин в кластере• гонка кластеров, Alibaba FuxiSort — 3 377 машин• distributed computing• горизонтальная (и эластичная) масштабируемость

• Больше кластеров

Page 11: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Как мы справляемся с ростом данных?

• Более мощный процессор• гонка гигагерц, Pentium IV — 3.8 Ghz

• Больше ядер в процессоре• гонка ядер, Xeon Phi 7210 — 64 ядра• multithreading, parallel computing

• Больше машин в кластере• гонка кластеров, Alibaba FuxiSort — 3 377 машин• distributed computing• горизонтальная (и эластичная) масштабируемость

• Больше кластеров

Page 12: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Как мы справляемся с ростом данных?

• Более мощный процессор• гонка гигагерц, Pentium IV — 3.8 Ghz

• Больше ядер в процессоре• гонка ядер, Xeon Phi 7210 — 64 ядра• multithreading, parallel computing

• Больше машин в кластере• гонка кластеров, Alibaba FuxiSort — 3 377 машин• distributed computing• горизонтальная (и эластичная) масштабируемость

• Больше кластеров

Page 13: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Как мы справляемся с ростом данных?

• Более мощный процессор• гонка гигагерц, Pentium IV — 3.8 Ghz

• Больше ядер в процессоре• гонка ядер, Xeon Phi 7210 — 64 ядра• multithreading, parallel computing

• Больше машин в кластере• гонка кластеров, Alibaba FuxiSort — 3 377 машин• distributed computing• горизонтальная (и эластичная) масштабируемость

• Больше кластеров

Page 14: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 15: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

RDBMS

SQL

strongconsistency

Page 16: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

RDBMS

вертикальноемасштабирование

SQL

strongconsistency

Page 17: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

RDBMS

вертикальноемасштабирование

SQL

strongconsistency

Page 18: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

NoSQL

горизонтальное масштабирование

Page 19: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

NoSQL

горизонтальное масштабирование

strongconsistency

Page 20: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

NoSQL

горизонтальное масштабирование

SQLstrongconsistency

Page 21: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

NoSQL

горизонтальное масштабирование

strongconsistency SQL

Page 22: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

In-Memory Data Grids

горизонтальное масштабирование

SQL

Page 23: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

In-Memory Data Grids

горизонтальное масштабирование

strongconsistency SQL

Page 24: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

In-Memory Data Grids

горизонтальное масштабирование

strongconsistency SQL

Page 25: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 26: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Что предлагает Apache Ignite?

Page 27: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 28: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Apache Ignite

горизонтальное масштабирование

strongconsistency

ApacheIgnite

SQL

Page 29: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 30: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Предсказуемое

потребление

памяти

Полная

транзакционность(WAL)

Быстрыйперезапуск

Автоматическаядефрагментация

Off-Heapубирает паузы GC

Хранитнадмножестводанных

Page 31: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Apache Ignite

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

Page 32: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Apache Ignite

масштабируется на тысячи узлов,в том числе на разных континентах,дает скорость in-memory и надежность диска,применяется крупнейшими компаниями

Page 33: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Как это работает внутри?

Page 34: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Что внутри?

• Переработанная архитектура хранения• адаптирована под прозрачное хранение данных как в off-heap памяти,

так и на диске

• Собственное дисковое хранилище с WAL и checkpointing

• H2 для разбора SQL, оптимизации и подготовки плана выполнения

• Собственное исполнение SQL по плану поверх высоко распределенного окружения

Page 35: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 36: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Архитектура памяти

• Страницы

• Выделение памяти

• Сегменты (единица выделения памяти)

• Регионы

• Чтение данных

Page 37: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Страницы (Pages)

Page 38: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Страницы: выделение памяти

Page 39: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Страницы: выделение памяти

горячиеданные

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

Page 40: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Страницы: выделение памяти

Page 41: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Сегменты

Page 42: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Регионы

Page 43: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 44: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

B.get(X)

Affinity: K -> shard -> [Node]

Page 45: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 46: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 47: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Диск

• WAL

• Checkpoints

• Distributed storage

Page 48: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 49: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

WAL

entriy, entry, …

INSERTUPDATEDELETE

Page 50: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Checkpoints

Page 51: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Persistence

Page 52: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)
Page 53: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Распределенный SQL

FROM,

WHERE,

JOIN

FROM,

WHERE,

JOIN

FROM,

WHERE,

JOIN

FROM,

WHERE,

JOIN

GROUP BY,

HAVING

JDBCODBC

ApacheIgnite

ApacheIgnite

ApacheIgnite

ApacheIgnite

Page 54: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)

Apache Ignite

• Горизонтально масштабируется

• Позволяет использовать SQL

• Колоцирует вычисления и данные

• Работает с данными со скоростью In-Memory

• Безопасно хранит данные на дисках• Full SQL

• Lazy Run

Page 55: Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает / Артем Шитов (GridGain)