Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

FOSDEM MySQL and Friends Devroom

185 views

Published on

TiDB Introduction

Published in: Software
  • Be the first to comment

  • Be the first to like this

FOSDEM MySQL and Friends Devroom

  1. 1. TiDB: Distributed, horizontally scalable, MySQL compatible FOSDEM 2019 Morgan Tocker (@morgo)
  2. 2. Agenda ● History and Community ● Technical Walkthrough ● Use Cases ● Benchmarks ● MySQL Compatibility
  3. 3. History and Community #singlepage Founded in 2015 in China Ti = Titanium Apache 2.0 Licensed Storage layer (TiKV) a CNCF project since 2018 US Office since 2018 Quick Numbers: 700+ Annual Conference Attendees 300+ Production Deployments 200+ GitHub Contributors (the TiDB server alone)
  4. 4. Agenda ● History and Community ● Technical Walkthrough ● Use Cases ● Benchmarks ● MySQL Compatibility
  5. 5. Introduction TiDB is a distributed database that speaks the MySQL protocol It is not based on the MySQL source code It is an ACID/strongly consistent database The inspiration is Google Spanner/F1 It separates SQL processing and Storage into separate components Both of them are independently scalable The SQL processing layer is stateless It is designed for both Transaction and Analytical Processing (HTAP)
  6. 6. TiDB TiDB Region 1 L TiKV Node 1 Region 2 Region 3 Region 4 Region 2 L TiKVNode 3 Region 3 Region 4 L Region 1 Region 4 TiKV Node 2 Region 3 L Region 2 Region 1 TiKV Cluster PD Cluster
  7. 7. Row + Column Storage (Announced Jan 2019) Spark Cluster TiDB TiDB Region 1 TiKV Node 1 Region 2 Region 3 Region 4 Region 2 TiKV Node 3 Region 3 Region 4 Region 1 Region 4 TiKV Node 2 Region 3 Region 2 Region 1 TiFlash Node 2 TiFlash Extension Cluster TiKV Cluster TiSpark Worker TiSpark Worker TiFlash Node 1
  8. 8. TiDB: The SQL Layer Node1 Node2 Node3 Node4 MySQL Network Protocol SQL Parser Cost-based Optimizer Distributed Executor (Coprocessor) ODBC/JDBC MySQL Client Any ORM which supports MySQL TiDB TiKV
  9. 9. TiKV: The Storage Foundation RocksDB Raft Transaction Txn KV API Coprocessor API RocksDB Raft Transaction Txn KV API Coprocessor API RocksDB Raft Transaction Txn KV API Coprocessor API Raft Group Client gRPC TiKV Instance TiKV Instance TiKV Instance gRPC gRPC PD Cluster
  10. 10. Migration (in and out of TiDB) DM MySQL Binlog SQL Dump File Lightning TiDB Binlog MySQL Instances
  11. 11. Agenda ● History and Community ● Technical Walkthrough ● Use Cases ● Benchmarks ● MySQL Compatibility
  12. 12. Use Cases 1. Approaching the maximum size for MySQL on a single server. Debating whether or not to shard. 2. Already sharded MySQL, but having a hard time doing analytics on up-to-date data.
  13. 13. Mobike + TiDB ● 200 million users ● 200 cities ● 9 million smart bikes ● ~30 TB / day
  14. 14. Agenda ● History and Community ● Technical Walkthrough ● Use Cases ● Benchmarks ● MySQL Compatibility
  15. 15. Benchmarks (TiDB 2.1) Thank you Alexander Rubin! https://www.percona.com/blog/2019/01/24/a-quick-look-into-tidb-performance-on-a-single-server/
  16. 16. Benchmarks (TiDB 2.1) Thank you Alexander Rubin! https://www.percona.com/blog/2019/01/24/a-quick-look-into-tidb-performance-on-a-single-server/
  17. 17. Benchmarks (TiDB 2.1) Thank you Alexander Rubin! https://www.percona.com/blog/2019/01/24/a-quick-look-into-tidb-performance-on-a-single-server/
  18. 18. Agenda ● History and Community ● Technical Walkthrough ● Use Cases ● Benchmarks ● MySQL Compatibility
  19. 19. pingcap.com /docs/sql/mysql-compatibility/
  20. 20. Summary ● Compatibility with MySQL 5.7: ○ Joins, subqueries, DML, DDL etc. ○ All SQL Modes ● On the 3.0 roadmap: ○ CTEs, Views, Window Functions ● Not Planned: ○ Stored Procedures, Triggers, Events, Fulltext
  21. 21. Nuanced ● Some features work differently ○ Auto Increment ○ Optimistic Locking ● TiDB works better with smaller transactions ○ Recommended to batch updates, deletes, inserts to 5000 rows
  22. 22. Tools ● Mydumper, ProxySQL work ○ We maintain a branch of mydumper ○ We are looking to push upstream ● Innotop.. won’t work ● MySQL Workbench works!
  23. 23. Thank you!

×