 and why you should not run away from it. You should understand it. It's a lot of maybe fad in this ecosystem and that's why the Postgres room yesterday was also fairly crowded. I think it's worth noting that we have a very good diverse community. I work at Prokona, we make 100% open source tools and before that I did MariaDB server and MySQL. So most importantly, I think MySQL is nearly 23 years old. It's basically past being a voting adult. Prokona server is also about nine years old. MariaDB, eight years old. It was probably worth mentioning Drizzle, which we can learn some stuff about. How many of you heard of or used Drizzle before? Heard of, okay. Okay, how many of you heard of or used WebSkill SQL before? Okay, significantly a lot more. So you kind of learn in these experiments that companies need different things and WebSkill SQL actually posted a very good, sort of goodbye message in December of 2016 and they still meet up every year at the Prokona live and actually a lot of the features in WebSkill SQL probably also made its way into MariaDB server as well as Prokona server and some even directly into MySQL itself. And we don't have much learning from Drizzle. Besides the whole don't have all the core developers hired by a single company argument. So at some stage we will learn more about that. Also a shout out to MariaDB, who just celebrated its eighth birthday. February 1st was the GA release, so kudos, Monty. This cake is not obviously mine. It's Lixon Peng's cake. I stole it from his LinkedIn profile. He works at Alibaba and on MariaDB as well. He's not here, but he is at Five Foster. So Daniel Van Eden is also not here, sick. He actually created this and I ended up modifying it to give you sort of an idea of where we are in terms of a branch. And I know it's really small. So this one should be better. Not by much maybe. How do I do that? It's fine, you don't need to see me. No, you don't want that. You switch it off. Anyway, very nice graph. It's generated. Daniel started this project like five years ago. It was based on something else on relational databases. And it's very worth noting that in MySQL 55, which is what started lots of things, you'll realize that that's when InnoDB scalability was focused on. And I think we have a talk later about performance from Dimitri who's here somewhere. And 56 also brought along a lot of optimizer improvements. And in fact, MariaDB 53 also did that as well. Prokona server 55 brought in group comment in the binary log, which is parted from MariaDB server. But then after that, Prokona uses the regular 56 implementation. MariaDB server 10.2 actually gets some things from MySQL 57, which is InnoDB. Yes, Monty. Yes, that was in the previous slide. I didn't want to focus on that. It's very hard to see. Very hard to see from afar. So anyway, this graphic is available at Daniel Van Eden's GitHub repository and the pull request for the modified version which now includes the GAF cluster MariaDB 10.2 pulling InnoDB. So this line here means it's pulling InnoDB as opposed to pulling extra DB. And obviously we're both waiting for 8.0 and 10.3 to come out. So 8.0.4 is in the second release candidate. So my presumption is we will see a generally available release soon. And MariaDB server 10.3.4 is in a second beta. So I guess soon we'll see a release candidate as well. But this is a general idea of where the branches and forks and community has spread really. And of course, just to annoy Mark a little bit, there is also a bit about Drizzle there. So in terms of the open source community, I think MariaDB is excellent, taking external contributors as well as committers. So you can actually commit code directly to the MariaDB tree. Also participates in Google Summer of Code, which helps get younger blood into server development. MySQL 5.7 has taken patches as well. Save virtual columns from MariaDB from the same guy called Andrew Jakov, which became generated columns but was also heavily rewritten. And MySQL also takes lots of contributions from Prokona. So actually if you look at, and even Facebook and so forth. So if you look at the release notes, you'll find that there are all these companies that are credited, and those tend to be like 70 pages long if you look at the PDF of where the credits come from. And it's actually quite a long list from MySQL. Contributions are obviously welcome, but you can't commit directly to the code base, which is something that's probably more or less always been true. There's also MySQL community contributor award program that Oracle runs. And actually the two people probably running that are sitting right here in the front. And they are also running this room. So kudos. Prokona, it's similar. You can report bugs. You can ask for features, but you can't commit to the tree either, even though it's all on GitHub. Also these things are contributor agreements that I probably was noting. Oracle requires you to sign an Oracle contributor agreement. I understand some corporates have issues signing that. MariaDB also has a contributor agreement or the option of contributing with BSD-New such that you don't have to sign a contributor agreement. And that maybe makes things easier for people. But also when it comes to contributor code, code is not just something you drop and then you run away. Code is something that requires maintenance actively. And what is the state of community maintain code is also really important to look at. People ask, is MySQL dying? So I stood out at the Prokona booth yesterday and lots of people are like, MySQL is dying. No, we don't wanna use MySQL because Oracle owns it. Those are not technical reasons why you should not use MySQL. And MySQL is far from dying. It's clearly exaggerated. We're getting better MySQL all the time. Every time there's a new release, it gets better. There are a lot of external contributors. I think pretty much everyone in this audience is an external contributor of some sort. There's lots of people using it. There's tons of shared knowledge. Look at the amount of shared knowledge on making InnoDB work well. It's amazing. And Oracle has been actually a great steward because they've not actually killed MySQL development. They've just enhanced MySQL development, which you can see in 5.6, 5.7, 8.0 even. The release candidate is actually worth using. In fact, there's this website called the complete list of features run by a guy called Morgan Tucker who used to work on MySQL as well. And just list features in 5.7 that are highlights. And I think there are more than 150 features that are highlighted on that list. The documentation is now so complex from MySQL that I think if you print out the PDFs, you might actually hit some 4,000 pages. And a couple of months ago, I think Giuseppe, Fred, and I were having a chat with someone who wanted to know more about grants. And actually, if you look at the documentation for grants, it's actually fairly complex without knowing, without having years of experience dealing with grants, it may not be super easy for a newbie to pick up on it. As such, they do grant all asterisks and asterisks, which is not what they're supposed to be doing. So actually there's a lot of new features that a lot of people don't know exists and maybe don't use yet. And it's kind of sad because it's been out for more than two years. So one of my favorite ones is online buffer pool resize and how everything starts becoming more online as we are able to grow things nowadays. And of course, things like multi-cells replication, even though it came to MariaDB first, it is also present in 5.7. I personally also like the JSON, MySQL shell and the XDEV API and the X protocol because I think it's super cool. Lots of people nowadays like to do stuff with MongoDB and this sort of gives you an insight from that standpoint. Also GS functionality. I spoke to people yesterday as well saying, hey, we're using Postgres, we used to use MySQL but then we use Postgres now because of GIS. But the GS functionality in MySQL 5.7 is actually heavily underrated, right? It's not only is it good, it can also do stuff like Google Maps can do. And I think Norvald, who may or may not be here, has also given a great talk at the GIS track about GIS and MySQL. So there are lots of things that people don't really know about, which is unfortunate. And that's also true for MariaDB. So, 10.1 brought a whole bunch of new things. Start transaction with consistent snapshot to be fair is now also in MySQL 5.7. Galera cluster being integrated, very cool. The first thing, introduce table space encryption. InnoDB defragmentation, parallel replication, we probably haven't talked about that as well later. The thread pool is highly useful from being open source as well. And roles, SQL-sided roles, which Giuseppe will talk about later as well. Not the MariaDB variant, but the MySQL variant. 10.2 also brought other features, like InnoDB as the default InnoDB. Now, that may be a play on words because nowadays, when you ask for something, you get something else. So for a long time, if you ask for InnoDB, you got extra DB. And in many Linux distributions, if you ask for MySQL, you get MariaDB. So. Pyrox is in alpha. There are obviously window functions and commentable expressions. Two things that are probably very useful. I like this a lot, the AWS Key Management Plugin. Highly useful if you're gonna use encryption because you don't want to use the File Key Management Plugin. And of course, Oracle style execute immediate where you start seeing new stuff. And this is obviously not, these are not comprehensive lists of what's new. It's just stuff that's worth noting that you may not necessarily see in other distribution of MySQL. Pocona server for 5.6 and 5.7 also introduces other things. Pocona server mostly focuses on wanting to be more manageable, more usable, more operationally useful. So things like the utility user, if you're running in like say OpenStack for example, you may find useful, something like the utility user where you have system access, but you can't actually look at the schema. And if you, the proxy protocol support, if you want to use maybe HA proxy, which supports the proxy protocol, backup locks, improvements around backups and extra backup. Then of course, since we're gonna talk about the ecosystem, the server ecosystem anyway, here's a base blog post. I don't know how many of you've read it. It's worth reading. Compatibility largely means that things are supposed to exist, or occur together without problems or conflict. And this is true even in computing. Why it really matters is because if people ask for a feature in one server, they may not get it in the next server because they did not necessarily drop in compatible. And MariaDB server is after all the default in pretty much every Linux distribution except Ubuntu. The latest Ubuntu does ship 5.7. I think it's worth noting from a Linux distribution or a more pragmatic standpoint, we should take a page out of the cloud operators. The cloud operators don't pass off MariaDB as MySQL or vice versa. That is true for Amazon. That is true for Microsoft. That is true for Rackspace. They actually offer you multiple choices. And choice is actually probably a good thing because you realize very quickly like, hey, maybe I want to use innerDB memcashd for putget and that's not present say in some server. So Monty did ask a question earlier and he is in the audience. He did make a verbal commitment a while ago about MySQL 5.6 should be comparable to MariaDB server 10.1 as well as 10.2 comparable to 5.7. And till today, you actually get the description that it's an enhanced drop-in replacement for MySQL. And this is true because the data directory is the same, the port is the same. But in terms of feature compatibility, it may not necessarily be equivalent. Governance is obviously worth talking about. MariaDB has a cooperation as well as a foundation and I think that's really important that the foundation gets stronger. And today you'll notice the foundation has foundation members from booking.com, Visma, Alibaba Cloud, IBM, WordPress.com, Microsoft and even Tencent. So diverse representation in a foundation is a good thing. MySQL for better or for worse is actually governed by Oracle. And as I said, people have negative connotations to a company that actually does good things. And Procona is governed by a corporation called Procona Inc. It's also privately held and has never raised any funding before and has been around for like 11 years without funding. So you gotta know who's funding what. And if you ask, is there vendor lock in an open source? That's something to also always think about overall. And that's a bigger for them thing. So in terms of releases, here are a bunch of releases. You'll notice that 10.1 and 5.7 were released may basically two days apart. And as I said, 10.3.4 is in beta, beta two now and MySQL 804 is in release candidate two now. So I suggest if you are interested you should start looking at this stuff because if I'm a guessing person you're gonna see these generally available in like three months, give or take. And Procona server, I don't list it here because it generally follows from a major release anywhere between three to six months behind. And for example, a good example is MySQL 803 is already being worked on by the developers. Replication is important. And this I took straight out of the MariaDB Knowledgebase. It is definitely easier to migrate to MariaDB server but it's harder to migrate away from MariaDB server in terms of from a replication standpoint. So I don't wanna throw any hotel California jokes here. There are obviously things that are different. So the default bin log format in 10.2 is mixed as opposed to being row in MySQL. The annotation of row events is on. Time-delayed replication is available in MariaDB 10.2 as well. This I think is an extremely unique feature. DML only flashback which allows you to roll back instances to an older snapshot. Synchronous replication. Lots of people are very interested in things like Galera cluster and Galera cluster has spawned two branches so to speak. One's called MariaDB Galera cluster which is built into MariaDB server. And of course there's Procona XDB cluster with proxy SQL and an admin tool. And synchronous replication is probably gonna play even more important role going forward. And Oracle has come up with something possibly similar. It's called group replication. And it's very tied with MySQL LSH. It's also very tied to MySQL router. And the product around it is called MySQL InnoDB cluster which one could actually launch. And Fred has a nice little video I think on YouTube. Maybe it takes you five minutes to watch the video and you could actually start your own little InnoDB cluster and listen to his soothing voice. So let's talk about the X protocol. MariaDB server does not have that at the moment. So you can't use MySQL LSH. And this consequently means you will not be starting up an InnoDB cluster. So this definitely means from a synchronous replication standpoint things are diverging. Encryption. MySQL 5.7 and MariaDB Server 10.1 and greater both have encryption. The MariaDB version does table space as well as table encryption based on the Google patch. And MySQL only does table space encryption. You are required to use InnoDB file per table for MySQL but this has been the default for quite some time now. And as logs, logs don't get encrypted in the MySQL variants today but they are in the MariaDB variant. So MySQL bin log obviously has a bit of an issue in MariaDB but you can do read from remote server and use the encryption plugin API as well as a plugin but it obviously adds some load to the server. I actually mentioned that it doesn't encrypt tables or logs, yeah. Yeah. We'll do questions later. Security. MySQL native password which has been around since four or one I think but renamed later uses double SHA-1 based authentication. And I guess that's not useful any longer so MySQL has this thing called SHA-2B6 password since MySQL 5.6. You are more than encouraged to probably turn this on going forward. In fact, there are some good blog posts just last week about SHA-2B6 as well as MySQL 8. So we were. MariaDB follows this thing called edit25519 which is the elliptic curve digital signature algorithm used by OpenSH. This is another implementation. Naturally they're both obviously not compatible so probably worth noting that if you're creating users and migrating from one server to the other you have to reset the passwords. Validated password is on by default in MySQL 5.7 so if you by default provide a poor password it will actually tell you not to do that. And SSL also has various differences so SSL in 5.7 is pre-generated keys and you just need to turn it on in the client. And there's also a utility called MySQL SEL RSA setup that's provided with MySQL 5.7 that you can use. Libraries are changing. So Yazzle I guess changes name every few years to Yazzle, Yazzle, Wolf SSL. Anyhow ignore the name changes. It's all going open SSL going forward. There are also user table changes. So if you write scripts, oh dear. If you write scripts it's worth noting that you need to actually make note of the fact that there are changes in the MySQL user table. Password expiry does not exist yet from last I checked. Password last change as well as lifetime is available in MySQL. Account locks and unlocks also probably important. Slides will be online so I provide lots of links. Stuff that might matter to you. MySQL has an optimizer hints, query rewriting, optimize the trace which could be very useful I think at one stage someone from Wikipedia Hemi wanted it and he's speaking here later. I don't know if he's here later now. MySQL super read-only mode. Ah, he's here. MySQL super read-only mode, very important when you're doing automatic failovers to ensure that super user doesn't accidentally write also something we're looking forward to. And a newer performance schema. When it comes to tools, if a tool requires the MySQL global transaction ID, so MySQL failover, replication admin, MHA for GTID based failover which Yoshi writes. MySQL router, all the stuff will not work with MariaDB server. This only works with MySQL and Pogona server. The external ecosystem is alive and kicking, right? So many good things. You've got toolkit, extra backup, proxy SQL, max scale, what else? Vittes, I think we have a talk for Vittes later. Orchestrator, definitely Shlomi will probably talk about it later. Sandbox, now in a new language even. So lots of people actually pay attention to making tools around MySQL. And I think that's why you should use it, right? Because it's very vibrant, it's a great ecosystem. When do you want to use MariaDB server today? So everything's about today, right? So I'm not talking about the Vittes or the release candidates. A whole bunch of reasons why you'd probably want to use MariaDB today that you may choose over say MySQL or Pogona server. Also a whole bunch of reasons why you'd want to use Pogona server over say MySQL. So maybe you want to use Myrox, which is fully generally available. You want to use the key ring vault plugin for encryption. You want column compression maybe. You've outgrown MySQL for some reason. Pogona server, great, great choice. And for everyone else, I think the best is actually for you to use MySQL 5.7. It's been out for two years, it's pretty stable. It's well worth using. There is obviously the very near future, which I estimate to be less than three months. MySQL 8 also brings you things like roles, commentable expressions, window functions, histograms, MariaDB Server 10.3 brings you Oracle support as well to some extent. System version tables I think is extremely cool because it's coming out of the SQL, I think 2011 standard possibly. You also got the semi sync stuff merged in via Alibaba. SQL mode equals Oracle I think could be a game changer for people who are migrating from Oracle to another open source database. So what should you use today? I think you should care about the innovation today and most of the innovation I spoke about has already happened for at least two years, so both 5.7 and 10.1 has been around for about that long. Think about the features you need today. You definitely want freedom from vendor independence. You want to always make sure that there are multiple vendors supporting your product, know the difference between a branch and a fork. And some might recognize this, Michael Stonebreaker said that for Facebook, MySQL would be a fate worse than death, so they made t-shirts. I think mastering the ecosystem takes a lot of time, which is something that you should invest in if you care about MySQL, and it's definitely not a fate worse than death for anybody, so let's stop with the thought and let's focus on good stuff and making sure we are a strong ecosystem where people look at us as a first choice, as opposed to saying, hey, let's try Postgres or MongoDB. Thank you for listening. I have some time for questions. Yes.