Q&A with the MySQL Community Team
by Heather VanCura
Today, we are joined by two members of the MySQL Community Team, Frédéric Descamps (AKA lefred) and Scott Stroz.
Q: Can you tell us a little about your background?
Fred: I’ve worked in the Open-Source world for over 20 years. First, as a Linux developer and consultant. Then, I opted for the database world, working as a DBA and in charge of operation teams. I worked as a MySQL consultant and trainer before joining the MySQL Community Team at Oracle in 2016.
Scott: I have been a developer for over 20 years. I have used a variety of languages in that time, but the one thing in my development stack that has stayed the same is MySQL. I used MySQL in my first job as a web developer and still use it today. It is a story for another time, but I worked as a paramedic for 14 years before becoming a developer.
Q: What are the responsibilities of the Community Team? Do your individual responsibilities differ?
Fred: The team is responsible for spreading the news about all the new features our talented engineering team is developing for MySQL. Recently, we also started evangelizing the amazing MySQL offering in Oracle Cloud Infrastructure with the powerful MySQL HeatWave service. We also spend time helping our community on social media, forums, and Slack, … But we do many other things, like reviewing books and working on certification exams.
Q: Fred, you mentioned that you are a DBA. Can you talk about a feature MySQL DBAs might be interested in learning?
Fred: MySQL 8.0 includes helpful features I wished we had while I was in charge of MySQL production sites like GIPK mode, instant DDLs, and more. But something I like is the complete offering we have regarding MySQL Architectures, starting with MySQL InnoDB ReplicaSet (using traditional async replication), MySQL InnoDB Cluster (a full HA solution), MySQL InnoDB ClusterSet (HA with Disaster Recover), and very recently we added Read Replicas. All these solutions are fully integrated with MySQL Router and MySQL Shell. I also recommend you look at MySQL Shell if you have not heard about it.
Q: Could you provide more details about these solutions and what are they solving?
Fred: MySQL HA relied on custom solutions that needed to be better maintained or used third-party tools for a long time. With MySQL Shell and the Admin API, we wanted to fill that gap and provide a strong solution to quickly deploy the most robust solutions for High Availability, Disaster Recovery, and Read Scale-out. All of these are now fully integrated natively with MySQL.
Q: But who are they targeting?
Fred: These solutions are targeted to almost everybody, from the developer who would like to deploy an asynchronous replica to DevOps teams that would like to deploy an entire MySQL architecture using configuration management systems, as all the Admin API can be called via the command line and/or as part of scripts.
Q: Are those solutions Open Source?
Fred: Yes, all the components are Free and Open-Source. They are all included in MySQL Community Edition. You can deploy almost any architecture once you install MySQL and MySQL Shell.
Q: You also talked about GIPK mode. What is it?
Fred: We have implored users to create InnoDB tables with Primary Keys for many years. Despite all this effort, many developers still create tables without Primary Keys. This has an obvious performance impact, but worse, these tables are incompatible with group replication. Therefore, we have implemented the possibility to create invisible primary keys that are auto-generated when a user or a framework creates tables without primary keys. They are hidden, so there is no need to change anything in the application, but they are optimal for InnoDB and any replication schema.
Q: We all heard about the impressive MySQL HeatWave service in OCI, but are there also some other features implemented for OCI that the Community Server benefits from?
Fred: Yes. Since the MySQL Team operates the MySQL HeatWave Service, we also improve MySQL Server, like MySQL Community, to perform better in our cloud. We have made changes in Replication, in Group Replication, in observability. We have added new privileges and more.
Q: MyISAM is almost obsolete in 8.0. Of course, The only engine to focus on is InnoDB, but why? And for you, what is the most helpful improvement made for InnoDB in MySQL 8.0?
Fred: InnoDB is the ACID-compliant engine in MySQL. It supports MVCC, row locking, transactions, … if you care about your data, you should forget about MySIAM.
The best improvement for InnoDB in MySQL 8 might be the GIPK mode I explained earlier. But I also like the possibility of turning off the redo logs, which offers a significant performance boost for the initial data load. We also have added the option to change the size of the redo logs online.
Q: Scott, in contrast to Fred, you consider yourself a developer. Can you talk about a MySQL feature developers might be interested in learning about?
Scott: From a developer’s standpoint, I have become quite smitten with MySQL Document Store – a NoSQL solution built on top of MySQL.
Q: What do you mean when you say “NoSQL”?
Scott: Before I can explain NoSQL, we should talk about how data is stored in relational databases.
In a relational database, data is stored in tables. Each table consists of multiple columns. Each column holds a specific data type – a string, a number, a date, etc. In many cases, data in one table is related to data in another table – this is where the “relational” comes from. In relational databases, data is often very structured. We use SQL or “structured query language” to retrieve, update, add, or delete data from the database.
At its most basic level, a NoSQL database is a data storage mechanism that does not use the traditional table/column structure mentioned above. Data is often stored in collections (instead of tables) as JavaScript Object Notation (JSON) documents (instead of rows). NoSQL databases often have no schema, and data can be very unstructured. Typically, an API is used to handle CRUD operations.
Your readers might be interested to learn that “NoSQL” does not necessarily mean that no SQL is used. In some cases, it means “not only SQL”.
Q: When might developers use a NoSQL solution?
Scott: I come from the school of thought where all data should be rigidly structured in tables and columns with the proper relationships defined – so it took me a while to warm up to NoSQL.
The best time to use a NoSQL solution is when we are working with unstructured data or don’t have control of the structure. Many applications ingest data from third-party APIs, and it would be challenging and time-consuming to try and mimic a relational table structure for that data. If the data structure returned by an API changes, we need to update the database schema and possibly any code interacting with the tables where that data is stored.
Logging is another area that could benefit from a NoSQL solution. I have worked on projects where we needed to log a variety of data – most commonly, to log exception information. While this data might be more structured than data from a third-party API, there are still enough differences where storing this data using NoSQL might make sense.
Q: What are some advantages of MySQL Document Store?
Scott: Like other NoSQL solutions, MySQL Document Store offers an easy-to-use API for managing JSON documents. But what happens under the covers is interesting.
When a new collection is created using the MySQL Document Store API, a MySQL table is created using the InnoDB storage engine. This means that MySQL Document Store has all the advantages of any other InnoDB solution – including being fully ACID compliant.
The table created has three columns: _id – the table’s primary key; doc, which stores documents using the JSON data type; and _json _schema, which holds schema validation information and uses the JSON data type.
This leads me to the most significant advantage of using MySQL Document Store – because the data is stored in a MySQL table, we can use raw SQL and MySQL’s built-in JSON functions to run complex queries for reporting or analytics.
Q: What programming languages can access MySQL Document Store?
Scott: Oracle officially supports a variety of languages. We offer connectors, or what some might call an ‘SDK’, for:
- Java – which includes other Java-based languages such as Groovy and Kotlin.
- Node.js
- PHP
- Python
- .NET
- C++
The MySQL community has also provided open-source connectors for other languages.
Q: Does anything special need to be done to enable MySQL Document Store?
Scott: MySQL Document Store uses the X-Plugin to communicate over the X protocol. The X-plugin has been installed by default since version 8.0.1. So, if you are using a more recent version of MySQL, you can start using MySQL Document Store without needing to install anything else.
The X Protocol communicates over port 33060 instead of port 3306, so some network changes may need to be made.
I want to note that MySQL HeatWave, running in Oracle Cloud Infrastructure (OCI), is currently the only “MySQL in the cloud” offering that supports MySQL Document Store.
Q: Where can our readers learn more about MySQL Document Store?
Scott: The best place to get more information is from the documentation on the MySQL site at dev.mysql.com/doc/
There are also quite a few posts about MySQL Document Store on the MySQL blog at blogs.oracle.com/mysql.
Q: There has been some buzz about Oracle’s MySQL HeatWave Database Service. Can you tell us a little about it?
Scott: Sure. HeatWave is a fully managed MySQL database service in Oracle Cloud Infrastructure (OCI), AWS, and Azure. It offers fully automated backup and recovery, automated updates to MySQL, and all the benefits of MySQL Enterprise. MySQL HeatWave Database Service can be used for transactional and analytic processing without needing a separate analytics server or an ETL (extract, transform, load) process. We recently released MySQL Lakehouse, a service that allows users to process and query large amounts of data – hundreds of terabytes – stored in the object store. Lakehouse can read data in different formats, such as CSV, Parquet, and Aurora/Redshift export files.
More information on HeatWave: https://www.oracle.com/mysql/heatwave/
…………………..
Heather VanCura is Vice President, Community Engagement at Oracle, leading the Java Community Process (JCP) program and MySQL Community Outreach team. With 20+ years of experience at Oracle and Sun Microsystems, she actively engages with the developer community as an international speaker, event organizer, and mentor. She has visited six continents and over fifty countries meeting developers and helping them to engage in standards-related and open source projects. Heather is passionate about promoting diversity in technology and volunteers with organizations like Women Who Code and IEEE Women in Engineering. Her extensive involvement includes serving on the boards of Dress for Success and FIRST LEGO League NorCal. Heather’s dedication to empowering developers and advocating for diversity makes her a respected leader in the industry.
Frederic Descamps ‘@lefred” has been consulting OpenSource and MySQL for more than 20 years. After graduating in Management Information Technology, Frédéric started his career as a developer for a multinational company.. He will then opt for a different career joining one of the first Belgian start-up fully dedicated to Open Source projects around GNU/Linux. It is in 2011 that lefred joined Percona, one of the leading MySQL-based specialists and became a performance expert. He decided to join the MySQL Community Team in 2016 as a MySQL Community Manager for EMEA & APAC. Frédéric is also a regular speaker of OpenSource Conferences and technical reviewers for several books. His blog mostly dedicated to MySQL is https://lefred.be
Scott Stroz is a developer with over 20 years of experience in several languages. MySQL has been the only constant in his development stack. He is passionate about sharing what he has learned on his coding journey so others may learn from his mistakes.