The document introduces libAttachSQL, a new C connector for MySQL that provides a non-blocking API. It was created by Andrew Hutchings and is designed from the ground up to be lightweight, well documented, and compatible with modern asynchronous programming techniques. LibAttachSQL uses libuv for its event loop and aims to improve upon existing MySQL C connectors by providing a fully asynchronous API without legacy issues.
2. About LinuxJedi
• Worked for Sun/Oracle, MySQL Support Engineer
• Worked at Rackspace, Drizzle Software Engineer
• Worked at SkySQL, Senior Sustaining Engineer
• Managed two teams, several projects at HP Cloud
• Co-Author of MySQL 5.1 Plugins Development
3. About HP's Advanced Techonology Group
• An Open Source think-tank
• Fosters collaboration throughout HP
and Open Source communities
4.
5. Other MySQL C Connectors
• libmysqlclient (GPLv2/proprietary)
• libdrizzle (3-clause BSD)
• Maria DB Client (LGPLv2.1 (sort-of))
6. None of these have an official fully non-blocking API!
8. libAttachSQL 1.0 Features
• Non-blocking API
• Apache 2.0 license
• Very lightweight (1.0.0 shared binary is 501KiB)
• Can use OpenSSL and zlib for encryption and compression
• Server side and (sort-of) local prepared statements
• Good documentation from the start (http://docs.libattatchsql.org/)
9. Compatible With
• Ubuntu 12.04 and up
• RedHat/CentOS 6.x and up
• Windows (via. MinGW cross-compile)
• GCC and CLang
10. Why not libdrizzle?
• libdrizzle 5.1 has a blocking API
• Internal state loop is ugly to deal with
• Networking code was hard to work with
11. Good things about libdrizzle
• Lightweight
• Nice, simple API
• Well tested (Jenkins CI)
• Easy to contribute to
• Liberal license
12. Why libAttachSQL?
• Modern techniques
• All of the good points of libdrizzle, none of the legacy
• Designed from the ground-up for use with MySQL
32. Connection Groups
• Group many connections into a single event loop
• Many queries can run simultaneously on a single thread
• Uses a callback API when there events to process
• Can't be used for Prepared Statements (yet)
44. Project Status
• 4 months in development (coding started 4th July)
• 3 alpha releases, 2 beta releases, 1 RC release
• First GA (1.0.0) is out now!
• Packages for Ubuntu and RHEL/CentOS
45. Future
• Python wrapper
• Other language wrappers
• Server API?
• Tools built around libAttachSQL