87
Как сэкономить $1 000 000 на базах данных Денис Аникин, ТехДир Почты/Облака Mail.Ru

Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

  • Upload
    ontico

  • View
    1.649

  • Download
    7

Embed Size (px)

Citation preview

Page 1: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Как сэкономить$1 000 000

набазах данных

Денис Аникин,ТехДир Почты/Облака Mail.Ru

Page 2: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Why use a DBMS?

Page 3: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Why use a DBMS?

+ QUERIES+ ACID+ INDEXING+ TABLES+ DURABILITY

Database File

Page 4: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Heavy read workload

APP

DB

APP

APP APP

Page 5: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Overloaded

Page 6: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Solution: replication

APP DB Master

Update

DB Slave

Replication

Select

DB SlaveDB Slave

DB SlaveDB Slave

Page 7: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Heavy write workload

APP

DB

APP

APP APP

Page 8: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Replication does not scale writes

Page 9: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Solution: sharding

DB DB DB

DB DB DB

DB DB DB

Replication

Sharding

Page 10: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Who is the next problem?…

Page 11: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

The boss

Page 12: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

The boss

Page 13: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Technology

Page 14: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

We are loosing money

Page 15: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Close down

Page 16: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

What should we do?

Page 17: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache!

DB DB

DB DB

DB DB

Cache

App

Goodlatency

Page 18: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

But …

Page 19: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Inconsistency

DB DB

DB DB

DB DB

Cache

App

Page 20: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

InconsistencyStill have sharding

DB DB

DB DB

DB DB

Cache

App

Page 21: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

InconsistencyCache does not optimize updates out!

DB DB

DB DB

DB DB

Cache

App

Page 22: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

InconsistencyApp

Cache DB

Cache rebooted

Data’s lost

Page 23: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

InconsistencyApp

CacheDB

Cache rebooted

Data’s lost

Page 24: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache- Inconsistency- Still need sharding- What else?

Page 25: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache is not a DB

File

Page 26: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Inconsistency

WHATTO

DO?

Page 27: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Smart cache

DB DB

DB DB

DB DB

SmartCache App

Goodlatency

Page 28: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

AppSmartCache DB

Cache rebooted

OK

Well it’s better

Page 29: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Well it’s better, but …

Page 30: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Still inconsistency

Cache rebooted

Data lost

AppSmartCache DB

Page 31: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Still sharding

DB DB

DB DB

DB DB

SmartCache App

Page 32: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Remember, your boss …

Page 33: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

… doesn’t like sharding

Page 34: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

… because it’s way too expensive

Page 35: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache- Inconsistency- Still need sharding- No database properties- What else?

Page 36: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cold start

Page 37: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cold start

DB DB

DB DB

DB DB

Cache

ColdStartKillsThe

Cache

Page 38: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cold start

DB

DB

DB

Cache

DB

DB

DB

DB

DB

DB

Only to warmup

cache

Page 39: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache- Inconsistency- Still need sharding- No database

properties- Cold start

Page 40: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

How to warm it up?

Page 41: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

How to warm it up?

Page 42: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Persistent cache

DiskMemory

Dump

Page 43: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Do you like it?

Page 44: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Persistent cache

DiskMemory

Dump

- IOPS- STALE DATA+ FAST WARMUP

Page 45: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

How to fix it?

Page 46: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Persistent cache

DiskMemory

Log

+ IOPS+ FRESH DATA+ FAST WARMUP- BIGGER SIZE

100Mb/sec

Page 47: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

There’s still a problem

Page 48: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Persistent cache

DiskMemory

Dump & Log

+ IOPS+ FRESH DATA+ FAST WARMUP+ OPTIMAL SIZE

Page 49: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Solved!

Page 50: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache is warmed up

Page 51: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache

Page 52: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache

Page 53: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Why use a DBMS at all?

Page 54: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Why use a DBMS at all?• Durability• Replication

Page 55: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Why use a DBMS at all?• Durability. What does a

DB store?• Replication

Page 56: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Why use a DBMS at all?• Durability. What does a

DB store? Hot & Cold data

• Replication

Page 57: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Temperature of data

9.9Tb100Gb

Page 58: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Temperature of data

9.9Tb

100Gb

9.9Tb9.9Tb

9.9Tb9.9Tb

9.9Tb9.9Tb

9.9Tb9.9Tb

9.9Tb9.9Tb

Shard

Replicate

Page 59: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Why do we copy a DB?

Page 60: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Temperature of data

9.9Tb

100Gb

Shard

Replicate

100Gb100Gb

100Gb100Gb

100Gb100Gb

Page 61: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

The boss’s still angry

Page 62: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Ideas?

Page 63: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Why use a DBMS at all?• Durability. What does a

DB store? Well, cache is also durable now

• Replication

Page 64: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

An idea!CACHEIS THE

PRIMARYDATA SOURCE

Page 65: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

An idea!CACHEIS THE

PRIMARYDATA SOURCE

With replication

Page 66: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

An idea!CACHEIS THE

PRIMARYDATA SOURCE

With replicationAnd with all other DB features

Page 67: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache

Page 68: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache

Page 69: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache is not a DB

File

Page 70: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache can be a DB!

Page 71: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache

CanBeA

DATABASE

Page 72: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

+ CACHE+ PERSISTENCE+ ACID TRANSACTIONS+ REPLICATION+ STORED PROCEDURES

Database

Page 73: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Tarantool – for hot data+ CACHE+ PERSISTENCE+ ACID TRANSACTIONS+ REPLICATION+ STORED PROCEDURES (LUA)

Database

Page 74: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Tarantool

Page 75: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

We’ve done it!

9.9Tb

100Gb

9.9Tb9.9Tb

9.9Tb9.9Tb

9.9Tb9.9Tb

9.9Tb9.9Tb

9.9Tb9.9Tb

Shard

Replicate

Page 76: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

We’ve done it!

9.9Tb

100Gb

SQL DBMS

Tarantool

Page 77: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Look back• Shard, replica, cache, smart

cache• Shard exists, replica back,• Persistent cache, replication,

acid. Now cache is a DB• 2 instances could be

enough

Page 78: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Cache. Why not?• Dependable, durable• You’re on the road to cache• No ACID, no consistency, no

durability• Leave cozy DB for cache• Tarantool helps come over• No magic, just a new tool

Page 79: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Tarantool in Mail.Ru

Page 80: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Mail.Ru Users’ Profiles

Profiles MySQLMySQL

MySQLMySQL

MySQLMySQL

16x1/8 of workload

Page 81: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Mail.Ru Users’ Profiles

$1.2M upfront$300K each year

128x MySQL 4x TarantoolVS

$20K upfront$5K each year

60 times!!!

Saved more than $1 000 000

Page 82: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Mail.Ru Email & Cloud

$100M+

Tarantool120+ instances of

Page 83: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

The bottom line is …

Page 84: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Right tool for the job

Page 85: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Saved $1 000 000 on a feature

Page 86: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Summary

Page 87: Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженном проекте / Аникин Денис (Mail.Ru)

Questions?Денис Аникин,техдир Почты/Облака Mail.Ru

[email protected]: danikin2Whatsapp/Viber: +79165129650