Ужимай и властвуй алгоритмы компрессии в базах данных...

53
Compression in Open Source Databases Peter Zaitsev CEO, Percona MySQL Central @ OOW 26 Oct 2015

Upload: ontico

Post on 06-Jan-2017

1.054 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

Compression in Open Source Databases

Peter ZaitsevCEO, PerconaMySQL Central @ OOW26 Oct 2015

Page 2: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

2

Few Words About Percona

Your Partner in MySQL and

MongoDB Success

100% Open Source Software

“No Lock in Required”

Solutions and Services

We work with MySQL, MariaDB,

MongoDB, Amazon RDS and Aurora

Page 3: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

3

About the Talk

A bit of the History

Approaches to Data Compression

What some of the popular systems implement

Page 4: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

4

Lets Define The Term

Compression - Any Technique to make data size smaller

Page 5: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

5

A bit of History

Early Computers were too slow to compress data in Software

Hardware Encryption (ie Tape)

Compression first appears for non performance critical data

Page 6: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

6

We did not need it much for space…

Page 7: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

7

Welcome to the modern age

Data Growth outpaces HDD improvements

Powerful CPUs Flash

Cloud Data we store now

Page 8: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

8

Exponential Data Size Growth

Page 9: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

9

Powerful CPUs

High Performance

Multiple Cores

Page 10: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

10

Can Compress and Decompress Fast!

•Up to 1GB/sec compression

•Up to 2GB/sec decompression

Snappy, LZ4

Page 11: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

11

Flash

Disk space is more costly than for HDDs

Write Endurance is expensive

Want to write less data

Decent at handling fragmentation

Page 12: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

12

Cloud

Pay for Space Pay for IOPS

More limited Storage

Performance

Network Performance

may be limited

Page 13: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

13

Data we store in Databases

• Text• JSON• XML• Time Series Data• Log Files

Modern Data

Compresses Well!

Page 14: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

14

COMPRESSION BASICSIntroduction into a ways of making your data smaller

Page 15: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

15

Lossy and Lossless

Database generally use Lossless Compression

Lossy compression done on the application level

Page 16: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

16

Some ways of getting data smaller

Layout Optimizations “Encoding”

Dictionary Compression

Block Compression

Page 17: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

17

Layout Optimizations

Column Store versus Row Store

Hybrid Formats

Variable Block Sizes

Page 18: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

18

Encoding

Depends on Data Type and Domain

Delta Encoding, Run Length Encoding (RLE)

Can be faster than read of uncompressed data

UTF8 (strings) and VLQ (Integers)

Index Prefix Compression

Page 19: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

19

Dictionary Compression

Replacing frequent values with

Dictionary Pointers

Kind of like STL String

ENUM type in MySQL

Page 20: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

20

Block Compression

Compress “block” of data so it is smaller for storage

Finding Patterns in Data and Efficiently encoding them

Many Algorithms Exist: Snappy, Zlib, LZ4, LZMA

Page 21: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

21

Block Compression Details

Compression rate highly depends on data

Compression rate depends on block size

Speed depends on block size and data

Page 22: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

22

Block Size Dependence (by Leif Walsh)

Page 23: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

23

There is no one size fits all

Typically Compression Algorithm can be selected

Often with additional settings

Page 24: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

24

WHERE AND HOWWhere do we compress data and how do we do that

Page 25: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

25

Where to Compress Data

In Memory ?

In the Database Data Store ?

As Part of File System ?

Storage Hardware ?

Application ?

Page 26: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

26

Compression in Memory

Reduce amount of memory needed for

same working set

Reduce IO for Fixed amount of Memory

Typically in-Memory Performance Hit

Encoding/Dictionary Compression are

good fit

Page 27: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

27

Database Data Store

Reduce Database Size on Disk

Works with all file systems and storage

With OS cache can be used as In-

Memory compression variant

Dealing with fragmentation is common issue

Page 28: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

28

Compression on File System Level

Works with all Databases/Storage

Engines

Performance Impact can be

significant

Logical Space on disk is not reduced ZFS

Page 29: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

29

Compression on Storage Hardware

Hardware Dependent

Does not reduce space on disk

Can result in Performance Gains

rather than free space (SSD)

Can become a choke point

Page 30: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

30

By Application

No Database Support needed

Reduce Database Load and Network Traffic

Application may know more about data

More Complexity

Give up many DBMS features (search, index)

Page 31: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

31

DESIGN CONSIDERATIONSWhat makes database system to do well with compression

Page 32: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

32

The Goal

Minimize Negative Impact for User Operations (Reads and Writes)

Page 33: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

33

Design Principles

Fast Decompression Compression in Background

Parallel Compression/Decompression

Reduce need of Re-Compression on Update

Page 34: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

34

Choosing Block Size

Large Blocks

• Most efficient for compression

• Bulky Read Writes

Small Blocks

• Fastest to Decompress

• Best for point lookups

Page 35: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

35

IMPLEMENTATION EXAMPLESWhat Database systems Really do with Compression

Page 36: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

36

MySQL “Packed” MyISAM

Compress table “offline” with myisampack

Table Becomes Read Only

Variety of compression methods are used

Only data is compressed, not indexes

Note MyISAM support index prefix compression for all indexes

Page 37: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

37

MySQL Archive Storage Engine

Does not support indexes

Essentially file of rows with sequential access

Uses zlib compression

Page 38: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

38

Innodb Table Compression

Available Since MySQL 5.1

Pages compressed using zlib

Compressed page target (1K, 4K, 8K) has to be set

Both Compressed and Uncompressed pages can be cached in Buffer Pool

Per Page “log” of changes to avoid recompression

Extenrally Stored BLOBs are compressed as single entity

Page 39: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

39

Innodb Transparent Page Compression

Available in MySQL 5.7

Zib and LZ4 Compression

Compresses pages as they are written to disk

Free space on the page is given back using “hole punching”

Originally designed to work with FusionIO NVMFS

Can cause problems for current filesystem due to very high hole number

Page 40: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

40

Disk usage (Linkbench data set by Sunny Bains)

Page 41: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

41

Performance on Fast SSD (FusionIO NVMFS)

Page 42: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

42

Results on Slower SSD (Intel 730*2, EXT4)

Page 43: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

43

Fractal Trees Compression

Available as Storage Engine for MySQL and MongoDB

Can use many compression libraries

Tunable Compression Block Size

Reduce Re-Compression due to message buffering

Page 44: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

44

Can get a lot of compression

Page 45: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

45

MongoDB WiredTiger Storage Engine

Engine Has many compression settings

Indexes are using Index Prefix Compression

Data Pages can be compressed using zlib or Snappy

Page 46: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

46

Compression Size (results by Asya Kamsky)

Page 47: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

47

Compression in RocksDB

RocksDB – LSM Based Storage Engine for MongoDB and MySQL

LSM works very well with compression

Supports, zlib, lz4, bzip2 compression

Can use different compression methods for different Levels in LSM

Page 48: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

48

Compression results from Mike Kania

Page 49: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

49

PostgreSQL

Uses compression by default with TOAST

2KB (default) or longer Strings, BlOBs

Unlike Innodb External Storage is not required for Compression

Recommended to use File system compression ie ZFS if Compression is Desired

Page 50: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

50

Summary

Compression is Important in Modern Age

Consider it for your system

Many different techniques are used to make data smaller by databases

Compression support is rapidly changing and improving

Page 51: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

51

Want More ?

I’m talking about MySQL Replication Options

Free (as in Beer) Moscow MySQL Users Group meetup November 6th,

Hosted by Mail.ru

http://www.meetup.com/moscowmysql/

Page 52: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

52

Percona Live 2016 call for paper is Open

Call for Papers Open until November 29, 2016

MySQL, MongoDB, NoSQL, Data in The Cloud

Anything to make Data Happy!

http://bit.ly/PL16Call

Page 53: Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)

53

Thank You!Peter Zaitsev

[email protected]://www.linkedin.com/in/peterzaitsev