Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe...

41
© 2019 Percona 1 Marcos Albe - Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

Transcript of Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe...

Page 1: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona1

Marcos Albe - Principal Support Engineer @ Percona

Beyond Relational Databases: MongoDB, Redis & ClickHouse

Page 2: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona2

Introduction

MySQL everyone?

Page 3: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona3

Introduction

Redis? Memcached?

Page 4: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona4Image credits: 451 Research (https://451research.com/state-of-the-database-landscape)

Page 5: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona5

Agenda

▪ Introduction▪Why not Relational Databases?▪Redis: Key-Value▪MongoDB: Document▪ClickHouse: Columnar

Page 6: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona6

Why not Relational Databases?

Page 7: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona7

Why not Relational Databases?

▪General purpose but not optimal for all purposes ▪ Impedance mismatch with developers▪ACID/locking induced latency▪Storage architecture not optimal for big data

Page 8: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona8

Agenda

▪ Introduction▪Why not Relational Databases?▪Redis: Key-Value▪MongoDB: Document▪ClickHouse: Columnar

Page 9: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona9

Page 10: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona10

Page 11: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona11

Redis highlights

▪Fast… very fast.▪Mature / large community▪Many data structures ▪Advanced features▪Horizontally scalable / built-in HA (Sentinel / Cluster)▪BSD license / Commercial licenses available▪Client libraries for about every programming language

Page 12: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona12

Redis data types

▪ Lists▪Sets▪Sorted sets▪Hashes▪Bitmaps▪Geohash

Page 13: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona13

Redis good use cases

▪ Lots of data▪High concurrency▪Massive small-data intake▪Simple data access patterns▪Session Cache / Full page cache▪Counters / Leaderboards▪Queues

Page 14: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona14

Redis bad Use Cases

▪Durability and consistency▪Complex data access patterns▪Non-PK access▪Security concerns

Page 15: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona15

▪ Fast▪ Highly scalable/available▪ Simple access patterns▪ Advanced data types▪ Advanced features for KV store

Atomic operations▪ Ubiquitous / large community

▪ Lower durability▪ Limited access patterns▪ Lack of security▪ No secondary keys▪ Cache invalidation is hard

PROs CONs

Page 16: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona16

Agenda

▪ Introduction▪Why not Relational Databases?▪Redis: Key-Value▪MongoDB: Document▪ClickHouse: Columnar

Page 17: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona17

Page 18: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona18

MongoDB Flexible Schema

Page 19: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona19

MongoDB Flexible Schema

Page 20: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona20

MongoDB Flexible Schema

▪Embedded in blogpost document (natural case)▪Embedded in user document (bad idea)▪Denormalize and keep duplicate data (VERY bad idea)▪Apply normalization and user lookup() (JOIN equivalent)

Page 21: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona21

Page 22: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona22

Document Stores: Flexible Schema

Page 23: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona23

Document Stores: Flexible Schema

Page 24: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona24

MongoDB highlights

▪ Sharding and replication for dummies!▪ Flexible schema▪ Multi-document transactions (new in 4.0)▪ Pluggable storage engines for distinct workloads.▪ Excellent compression options with PerconaFT, RocksDB, WiredTiger▪ On disk encryption (Enterprise Advanced)▪ Connectors for all major programming languages▪ Sharding and replica aware connectors▪ Geospatial functions▪ Aggregation framework

Page 25: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona25

MongoDB good use cases

▪Catalogs▪Analytics/BI (BI Connector on 3.2)▪Time series▪Metadata repositories▪Prototype Development

Page 26: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona26

MongoDB bad use cases

▪Recursiveness▪Multiple views of the data ▪Developer comfort

Page 27: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona27

▪ Fast▪ Easy sharding▪ Simple access patterns▪ Rich feature set ▪ Async connectors▪ Flexible schema

▪ Inefficiency for JOINs▪ Still immature internally▪ Attribute names bloat space▪ MMAP db-level locking

PROs CONs

Page 28: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona28

Agenda

▪ Introduction▪Why not Relational Databases?▪Redis: Key-Value▪MongoDB: Document▪ClickHouse: Columnar

Page 29: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona29 © 2019 Percona

Page 30: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona30

Row-oriented Column-oriented

Columnar Data Layout

001:10,Smith,Joe,40000;

002:12,Jones,Mary,50000;

003:11,Johnson,Cathy,44000;

004:22,Jones,Bob,55000;

...

10:001,12:002,11:003,22:004;

Smith:001,Jones:002,Johnson:003,Jones:004;

Joe:001,Mary:002,Cathy:003,Bob:004;

40000:001,50000:002,44000:003,55000:004;

...

Page 31: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona

Columnar Data Layout

Row-oriented Read Approach

What we want to read

Read Operation

Memory Page

1 2

3

4

10 Smith Bob 40000

12 Jones Mary 50000

11 Johnson Cathy 44000

Page 32: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

Columnar Data Layout

What we want to readRead Operation

Memory Page

1 2

3

4

10 12 11 22

Smith Jones Johnson

Joe Mary Cathy Bob

Column-oriented Read Approach

Page 33: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona33

ClickHouse: columnar store

woot!

Page 34: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona34

ClickHouse highlights▪True column oriented▪Compression▪Disk based (not in-memory)▪Parallelized▪Distributed▪SQL querying; • Improved JOINs in latter versions▪Vector engine▪Real-time updates

Page 35: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona35

ClickHouse highlights▪ Indexes▪Dictionaries▪Online queries▪On-disk GROUP BYs▪Approximated calculations▪Replication ▪Few, but popular connectors▪Support for Tableau

Page 36: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona36

ClickHouse limitations▪Non-standard SQL ▪UPDATE/DELETE is a bulk operation (ALTER … UPDATE)▪No windowing functions ▪No transactions or constraints▪Eventual consistency▪Time data types have no milliseconds▪No implicit type conversions▪ Impossible to do table partitioning (except by month)▪ Lack of enterprise operation tools

Page 37: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona37

ClickHouse good use cases▪Suitable for read-mostly or read-intensive, large data repositories▪Full table / large range reads.▪Time series data▪Unstructured problems where “good” indexes are hard to forecast▪ Log analysis▪Re-creatable datasets

Page 38: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona38

ClickHouse bad use cases▪Not good for “SELECT *” queries or queries fetching most of the columns▪Not good for "small" writes; Good for bulk writes▪Not good for mixed read/write; Focus on large reads and large inserts▪Bad for unstructured data

Page 39: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona39

▪VERY fast▪Distributed▪Compression▪Primary-keys▪On-disk GROUP BY

▪Non-standard SQL▪Few connectors▪Driven mostly by Yandex needs▪No partitioning

PROs CONs

Page 40: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

© 2019 Percona40

I'm Redis My name is Mongo

They call me ClickHouse

Who invited these???

Page 41: Beyond Relational Databases: MongoDB, Redis & ClickHouse · 1 © 2019 Percona Marcos Albe -Principal Support Engineer @ Percona Beyond Relational Databases: MongoDB, Redis & ClickHouse

DATABASE PERFORMANCEMATTERS

Database Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance MattersChampions of Unbiased Open Source Database Solutions