So hopefully you’ve read the first 5 blogs in this 6 part series you should have a good introduction to
• Part 1 – What we heard from the MySQL Community (keep it solid, and innovate faster) and our change to new release model those requirements.
• Part 2 – How a new plugin that provides a new protocol is a first example
• Part 3 – More than just SQL – the New MySQL CRUD APIs – Simple, Powerful, Modern for New MySQL Collections and Tables
• Part 4 – A new MySQL Shell – adding powerful commandline tool for Javascript and Python scripting support which exposes new APIs provided by the new protocol
• Part 5 – The New Connector/Node.js and new X Dev API
As we’ve been building this Chapter in the MySQL story from the bottom up for you, and with that as context, its time we put it all together – this first of many steps. In this case a big step where we are looking at the MySQL Document Store.
First, lets start by considering some modern software factoids
• Move faster, change rapidly
• Time to market is critical
• Rapid prototyping, iterate fast and frequently
• Relational Models ask for schema up front
• Potentially saving time later
• Less variation, less code for edge cases
• Easy to run in-depth analytics
• Document Models do not ask for a schema
• Saves time up front
• Often adds operational costs in the long term
• Getting Analytics from the data can be way more work
• Most popular NoSQL database use similar data structures to relational databases (B+TREE)
• No inherent scalability advantages
• Yet behind on key functionality
• Standing up multiple database technologies adds complexity for operations teams
Currently you’re forced into making choices or choosing multiple solutions – SQL/NoSQL, Relational/Document Store. So as an alternative our thinking was to build both into MySQL database across all levels for the database stack – storage, structure, protocol, APIs, Tools, etc. And that’s just what we’ve done with the release of
• MySQL 5.7.12 with the new X Plugin
• The new X Dev API
• Connectors – New! Node.js, Java, NET – and many more coming soon
• MySQL Shell, MySQL for Visual Studio – and more tools coming
So with the new things we’ve added to MySQL, we think more parts of your business can have both schema-less and schema in the same technology stack. Checking off all the critical boxes of developers, operations, and LOB teams.
Developers:
[ x ] Schemaless
[ x ] Rapid Prototyping
[ x ] Document Model
Operations:
[ x ] Performance Management/Visibility
[ x ] Robust Replication, Backup, Restore
[ x ] Advanced Tooling Ecosystem
Business Owner:
[ x ] Don’t lose my data = ACID transactions
[ x ] Capture all my data = Extensible/Schemaless
[ x ] Products On Schedule/Time to Market = Rapid Development
Again we wanted to provide the full stack to make using MySQL “First Class” for Document Stores and more like it is for relational. That meant adding
• Native JSON Datatype, Indexes on JSON Documents
• New protocol supporting expanded capabilities needed for this and more
• New CRUD-style API unifying JSON document and table access – in addition to SQL
• Document Collections with Key Value Semantics
• Interactive Shell “MySQL Shell” – Javascript, Python, SQL modes
• Connectors that include NoSQL CRUD APIs
– Java, New NodeJS, NET, C++/C, PHP, Python
– Method Chaining and Pipelining
– Supports Combined Document and Relational
We believe this is a good start for the MySQL Document Store. Most of what we’ve released are DMRs, so we definitely want feedback so we can rapidly make improvements.
Meeting the challenge meant expanding Developer Interfaces and Database tools
• Addressing information with a both classic and modern data architectures.
• For all types of data – structured, semi, and unstructured
• Empowering developers – Simpler, Faster, Flexible
• Leveraging latest NoSQL oriented tools/methods – Javascript, Node.js, JSON, CRUD, Methods chaining, and more
With these additions, and more to come, MySQL can take you beyond relational – fully embracing a Document Store stack (and hybrid), leveraging the flexibility of Document Stores with the power of the analytics, the stability of ACID, and proven performance.
Find out more by looking into the following documents.
- Using MySQL as a Document Store – Manual
- X DevAPI – Tutorial for JavaScript
- X DevAPI – Tutorial for Python
- X DevAPI User Guide – A detailed look at the X DevAPI
- MySQL Connector/Node.js X DevAPI Reference
- MySQL Connector/Net – X DevAPI Reference
- MySQL Connector/J – X DevAPI Reference
If you got questions or feedback please feel free to post on the MySQL Forums.