Transcript
Page 1: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Drizzle Database Microkernel

David Axmark23 May, 2009

Page 2: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Why Drizzle?

Web (and other) users does not need a full featured SQL database.

Less complex → Easier to understandLess code & locks → Faster

Easier to modularize → plugins

Drizzle is a fork of MySQL 6.0

Page 3: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Goals

● To build a database optimized for Web/Cloud● As much functionality as possible in p lu gin s● S im p lif y the code● Design for multi-core & high con cu r r en cy● Optimize as a member of the application stack● C om m u n it y developed● Use memory for more performance/parallelism

Page 4: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Gone!• Stored Procedures• Views• Triggers• Query Cache• Prepared Statements• Many Field types (tinyint ...)• Windows support• Character sets (only UTF-8)• Authentication system (Modularied)• Libraries shipped with the code

Page 5: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

How Big Is It?

6.0.9-alpha: 1,203,9045.0.75: 988,2124.1.22: 858,902Drizzle: 339,648

Generated using David A. Wheeler's 'SLOCCount'.

Page 6: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Values• Open and well documented interfaces• Transparent goals and processes• Everything is public• Have Fun!• Make it easy to contribute • Build a ecosystem around drizzle• Contributors should be able to make money

Page 7: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Team & Community

Sun: Brian Aker, Lee Bieber, Jay Pipes, Stewart Smith, Monty Taylor,Eric DayExternal community: Toru Maesaka, Yoshinori

Sano, Patrick Galbraith, C.J. Collier, Paul McCullagh, Padraig O'Sullivan, Mark Atwood, Alan Kasindorf, Kristian Neilsen, Jim Starkey, Josh Berkus, Mark Callaghan, Jeremy Zawodny, David Axmark, more...

• Majority of contributors are external to Sun (as I am)

Page 8: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Tools & Environment

• Drizzle beverages •Launchpad (web branch/bug handling), •Bazaar (revision control)•Hudson (Extensible continuous integration engine)

• Buildbot today on >12 clients:•OpenSolaris, Solaris 10•Mac OS•Linux [Ubuntu, Gentoo, CentOS, Fedora, Debian]

• Community interaction and peer review• IRC, Mailing lists

Page 9: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Scope

Focused on providing a database that is:•Reliable, ACID transactional•Fast and scalable on modern architecture•Simply design for ease of installation and management•Easy to use and hard to misuse!

Page 10: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Architecture GoalClient Client Client

Routing Proxies

Query MemcachedCache

Parser Query 101101 Parser Query 101101

Optimizer Optimizer

SQL & REST

Storage Routing

Page 11: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Gotcha Free

No inserts for wrong dataACID/Transactional CompliantClean protocol supportSimplified type systemNo implicit committing of transaction

•No new features in the core → only plugins• UTF-8 only

Removed unnecessary locks

Page 12: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Web is in UTF-8•この利用規約(以下「本利用規約」といいます)は• ᚠᛇᚻ᛫ᛒᛦᚦ᛫ᚠᚱᚩᚠᚢᚱ᛫ᚠᛁᚱᚪ᛫ᚷᛖᚻᚹᛦᛚᚳᚢᛗ• rس ش ش ش ش ص

y

r ص ض

• Drizzle has only UTF-8 so lots of code/complexity is gone

Page 13: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Protocol

Redesigned and rewritten from MySQL's Pluggable Talks new/old protocol TCP & UDP Built in sharding support Asynchronous Checksums Batching support BSD license

Page 14: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009
Page 15: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Storage Engines

● Retain Multiple Engine support● Default to Transactional ACID engine

● InnoDB plugin● Allow Engines to own their own Meta Data

Page 16: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Security, 3A's

• Authentication, Authorization, Access Control

• No cost if you do not use it

• Plugins for PAM / LDAP / HTTP Auth

Page 17: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Roadmap Now

● New Table Discovery● Multi-Replication Applier● Dependency Checking for Plugins● New information Schema/Backend

Page 18: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Roadmap Later

Performance SchemaSemi-synchronous replication systemJDBC / ODBC driversNative language stored proceduresHash JoinCloud Service

Page 19: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Project Interaction

Examples of projects Drizzle integrates with:memcachedGearman/HadoopPBXTInnoDBxtraDB (Percona)

Page 20: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Benchmark• Done this week on current drizzle •8 Core Intel System/8gigs of Ram• sysbench --db-driver=drizzle --drizzle-mysql=on --max-time=200 --max- requests=0 --test=oltp --drizzle-db=test --drizzle-port=4427 --drizzle- host=127.0.0.1 --drizzle-user=root --db-ps-mode=disable --db- driver=drizzleclient --drizzle-table-engine=innodb --oltp-read-only=on --oltp-table-size=100000

• Dr izzl e • transactions: 447/sec

• MyS Q L 5 .4• transactions: 364/sec

Page 21: "Clouds on the Horizon Get Ready for Drizzle" by David Axmark @ eLiberatica 2009

Where?

Launchpad - http://launchpad.net/drizzleBzr branch lp:drizzle

Wiki - http://drizzle.org/wiki/Main_Page

Discuss - https://launchpad.net/~drizzle-discuss

IRC - Freenode #drizzle


Top Related