Use the Fork Luke
Who Cares About ANSI?
2005 OSCON -> 1/(20+)
Custom Advisory Board 2005
(the customers who cared about 5.0 were Embedded)
Do Not Live in the Past
Master Plan
Rethink Everything
Do not assume everything was
bad.
Focus
•Drop ERP (90’s style applications)
•Drop Data Warehousing
•Drop Analytic
Focus On Web Applications
MySQL Market is now just entering
16 Core.
Do not play catchup.
Leap forward.
Library of Congress is just 26
Terabytes.
The world is 64bit, and there is a lot
of RAM.(SSD will be common in two years.)
MicroKernel
•Move code to the Edge
•No new features in core
•To add interfaces you have to remove == amount of code
Multi-Core
•No new locks
•Remove old locks
•Think today:
•Burn memory (copy on write)
•Messages scales.
(Don’t lose or corrupt data)
ACID CompliantTransactional
Innodb is our Default Engine
(If Maria or PBXT turn out to be faster, we will switch. Transactional/Performance matter.)
We have no...
•Stored Procedures
•Views
•Triggers
•No Query Cache
We may though...
SP’s through Real Languages
Views are useful, but not when materialized
Triggers no, but maybe Callbacks...
Prepared Statements are
out.(no one uses them, they blow up the server)
What we are doing...
•No required authentication (think http)
•Round Trip Serialized SQL
•Make SQL Injection harder
Dump ACL
•We authenticate in clouds.
•KISS
•PAM (Pluggable Authentication Modules)
•No cost authentication
Authorization is coming...
Do people really sort blobs?
Field Types•Less primitives
•We just now have “blob”
•Weakly Typed.
•3 byte int? (See Slashdot Comment Problem)
•Think UUID/IPV4(6)/SERIAL...
•ENUM tosses an error if a wrong value is inserted.
Интернет является UTF-8.
は、 Web UTF - 8 です。
The Web is UTF-8.
Recycle(be lazy, re-use libraries)
Reuse many eyeballs
•PCRE today (not REGEX)
•No “shipped” libraries
•Maybe ICU? libatomic-ops? Intel Building Blocks? talloc()? glib()?
•Proto-buffers.
Maintenance Matters
(Refactoring is valuable and necessary)
In with the New
•C99 (types for C++ code)
•Posix
•Package-lib
•STL is in.
TABLE != Table
•(we are going from C+ to C++)
How big is it?
6.0.5-alpha:1,128,112
5.1.25-rc: 1,009,108
5.0.51b: 999,382
Drizzle: 315,560generated using David A. Wheeler's 'SLOCCount'.
Performance Matters
(we all want race cars)
•Scale Out
•Optimizer (OLTP)
•Execution Engine
Transparency + Edge
LaunchPad
•Forking is good, no emailed patches.
•Anyone can create an account.
•Transparency by Launchpad staff.
Buildbot
•26 Active platforms.
•Anyone can sign up a new platform.
•Completely distributed.
Open Source• All internal and external contributors are equal.
• “Captains” handle trees, karma gets you in
• Those who commit are Janitors.
• Those who only work on their own code are not Captains.
•Changes are sent to mailing list. Fuzzy ++ system used (negatives are weighed more heavily)
30+ Languages(within 3 months)
Code Drives Decisions
Requirement for Release
•All Incompatible Changes are completed. (and more require upgrades to version)
•All tests work.
•New code additions are fine (think Linux Kernel)
Innovation Happens
Elsewhere
• Patrick Galbraith (Principle Engineer/Lycos)
• Antony Curtis (Google)
• Transactional
• Multi-System
• Integrated
• Performance
Federated X
Transport• Eric Day (Architect XO)
• Asynchronous
• Multi-protocol
• Partionalable
Distributed Query Cache
• Toru Maesake (Research Engineer/Mixi.jp)
• Non-locking
• Cloud Distributed (Memcached)
• Pluggable
Where are we going?
TodayClient2 ClientN
Connection Thread Pool
Parser Query 101101
Client1
Optimizer
Storage Engines InnoDB MyISAM MERGE MEMORY ARCHIVE
Query Cache
TomorrowClient2 ClientN
Routing Proxies
Parser Query 101101
Client1
Optimizer
Query Memcached Cache
Parser Query 101101
Optimizer
Storage Routing
SQL & REST
So how do I get involved?
•http://launchpad.net/drizzle
•bzr branch lp:drizzle
•http://launchpad.net/drizzle-discuss
•(mailing list)
•Freenode #drizzle