Académique Documents
Professionnel Documents
Culture Documents
Indexes
Theory to Practice
Percona Live London 2013
Tim Callaghan, Tokutek
tim@tokutek.com
@tmcallaghan
Tuesday, November 12, 13
Who is Tokutek?
Tokutek builds high-
performance database
software!
TokuDB - storage engine for
MySQL and MariaDB
TokuMX - storage engine for
MongoDB
HDD & SSD
storage
Storage Engine
Developer Interface
Tuesday, November 12, 13
Who am I?
17 year database consumer
schema design, development, deployment
database administration + infrastructure
mostly Oracle
5 year database producer
2 years @ VoltDB
2+ years @ Tokutek
Tuesday, November 12, 13
Housekeeping
Feedback is important to me
Ideas for Webinars or Presentations?
Whos using MongoDB?
Anyone using TokuDB or TokuMX?
Please ask questions
Tuesday, November 12, 13
Agenda
Why Fractal Tree indexes are cool
(TokuDB)
(TokuMX)
Q+A
Tuesday, November 12, 13
Indexing:
B-trees and
Fractal Tree Indexes
Tuesday, November 12, 13
B-trees
Tuesday, November 12, 13
message buffers
insert 15;
Fractal Tree Indexes - insert
25
10 99
2,3,4 10,20 22,25 99
insert (15)
TokuDB
Fractal Tree Indexing +
MySQL/MariaDB
Tuesday, November 12, 13
What is TokuDB?
Transactional MySQL Storage Engine - think InnoDB
Available for MySQL 5.5 and MariaDB 5.5
ACID and MVCC
Free/OSS Community Edition
http://github.com/Tokutek/ft-engine
Enterprise Edition
Commercial support + hot backup
20
Performance + Compression + Agility
Tuesday, November 12, 13
TokuDB Performance
Warning - Benchmarks Ahead!
Tuesday, November 12, 13
Sysbench Performance
Sysbench read/write workload, > RAM
23
The fastest IO is the one you never have to do (compression)
Tuesday, November 12, 13
TokuDB Compression
Tuesday, November 12, 13
Compression + IO Reduction
Compression Performance
iiBench benchmark
28
Tuesday, November 12, 13
Compression Achieved
TokuDB Agility
Tuesday, November 12, 13
Adding an index
TokuMX
Fractal Tree Indexing +
MongoDB
Tuesday, November 12, 13
What is TokuMX?
TokuMX = MongoDB with improved storage (Fractal Tree indexes)
Drop in replacement for MongoDB v2.2 applications
Including replication and sharding
Same data model
Same query language
Drivers just work
Open Source
http://github.com/Tokutek/mongo
Performance + Compression + Transactions
Tuesday, November 12, 13
MongoDB Storage
18
4 5555
(1,ptr5) (4,ptr1),
(12,ptr8)
(19,ptr7) (10000,ptr2)
The pointer tells MongoDB where to look in the heap for the requested
document (another IO)
35
85
40 120
(2,ptr5),
(22,ptr6)
(50,ptr4) (100,ptr7) (222,ptr3)
PK index (_id + pointer) Secondary index (foo + pointer)
db.test.insert({foo:55})
db.test.ensureIndex({foo:1})
memory mapped heap
Tuesday, November 12, 13
TokuMX Storage
18
4 5555
(1,doc) (4,doc),
(12,doc)
(19,doc) (10000,doc)
36
85
40 120
(2,4), (22,12) (50,19) (100,10000) (222,1)
PK index (_id + document) Secondary index (foo + _id)
db.test.insert({foo:55})
db.test.ensureIndex({foo:1})
memory mapped heap
One less IO per _id lookup, document is clustered in the index
Tuesday, November 12, 13
TokuMX Performance
Tuesday, November 12, 13
Performance - Replication
TokuMX replication allows secondary servers to process
replication without IO
Simply injecting messages into the Fractal Tree
Indexes on the secondary server
The Hard Work was done on the primary
o Uniqueness checking
o Transactional locking
o Update effort (read-before-write)
Elimination of replication lag
Your secondaries are fully available for read scaling!
Wasnt that the point?
40
Tuesday, November 12, 13
42
Performance - Lock Refinement
Tuesday, November 12, 13
TokuMX Compression
Tuesday, November 12, 13
Compression
MongoDB does not offer compression
Compressed file systems?
Shortened field names?
o Remember: each field name is stored in every single document
TokuMX easily achieves 5x-10x compression
Buy less disk or flash
Compressed reads and writes reduce overall IO
TokuMX support 3 compression types
zlib, quicklz, lzma (size vs. speed)
all data is compressed
Use descriptive field names!
They are easy to compress
48
Tuesday, November 12, 13
Compression
TokuMX Transactions
Tuesday, November 12, 13
ACID + MVCC
ACID
In MongoDB, multi-insertion operations allow for
partial success
o Asked to store 5 documents, 3 succeeded
We offer all or nothing behavior
Document level locking
MVCC
In MongoDB, queries can be interrupted by writers.
o The effect of these writers are visible to the reader
TokuMX offers MVCC
o Reads are consistent as of the operation start
51
Tuesday, November 12, 13
Multi-statement Transactions
TokuMX brings the following to MongoDB
db.runCommand({beginTransaction, isolation:
mvcc})
... perform 1 or more operations
db.runCommand(rollbackTransaction) |
db.runCommand(commitTransaction)
Not allowed in sharded environments
mongos will reject
52
Tuesday, November 12, 13
Tim Callaghan
VP/Engineering, Tokutek
tim@tokutek.com
@tmcallaghan
Questions?
Tuesday, November 12, 13