 Hello there, it's loud I'm Doug Shelley. I'm the vice president of product development at to Sora Today I wanted to talk to you a little bit about to Sora and our database the service platform So just a little bit of an overview on to Sora if you've never heard of us We are the trove company trove is a open-stack project I hope everybody kind of knows about the database the service project within open-stack We've been involved for about a year In the last cycle we were a top contributor to the project in Juneau to the trove project right now We have about ten developers in my group that are working on the project and we have a One person on trove core and he's sitting right there wave Amherst We have offices in Cambridge, Massachusetts and near Toronto, which is where I'm from So what we've built is a enterprise database the service platform that's based on trove It's it says the most advanced trove distribution available. I hazard to say it's probably the only trove distribution available The goal of this distribution one of the main goals is to provide enterprise support We're really looking to support enterprises as they roll out database the service particularly in private cloud and One of the things we're doing is we're basically and I'm going to talk more about this but we're basically providing a certification of the databases that are supported within the platform and The distributions that run open stack and I'll talk more about why that's important in a second We're we also really want to be the trusted advisor to the enterprise not not just merely Hawking software to them but talking to them about challenges with databases service particularly an open stack and You know advising them on how they can roll that out in a way that makes sense to them So One of the things we're going to talk about is what's unique about databases service So why is this different than other open stack projects? so if you attended This the session this morning by Jay pipes and Peter boros Which was all about my sequel running underneath open stack as the infrastructure database You start to get some appreciation why databases are different than some of the other pieces of the stack I think through their presentation. It's certainly elicited some of the complexities of of Managing my sequel in that environment. So so kind of we basically believe databases are different There's administration management each one of the databases, you know, like across my sequel Mongo Cassandra, they have their own personality Some of them weren't actually engineered for the cloud and that becomes material when you want to put it in a cloud And there's other systems that they rely on and not only your database is different in this context trove is a different kind of project So basically the trove project there's this concept of a guest agent Which is the proxy between the database and the rest of the open stack services Which is unique Which is kind of unique in the open stack ecosystem We want to provide consistent management across all the instances some of the other Neularities are the databases require tuning and customization and they're not it's not it's not the same across all of the database types So that tuning and customization for mongo is different than the tuning and customization for my sequel for example These guest agents can't be viewed like drivers You know drivers I think is a pretty common concept in the context of open stack these things aren't really a driver And the trove project it actually sits on top of all the other services and leverages novice in their swift Keystone glance so With our platform, we're actually trying to address these differences in a way that's meaningful to the enterprise So why would somebody want to use the to Sora database to service platform enterprise edition? So for three reasons it's robust. It's supported and it's interoperable. So by robust Not only are we help we're adding project adding features upstream that enterprises need so we're kind of driving Enterprise agenda within the within the open source project So we just recently added replication to the community. I'm going to do a demonstration of that in a minute The the enterprise edition is interoperable. So we're doing a lot of testing In our own environment testing across all the data stores and across all the distributions Which is something that isn't done in the community for this particular project and we're providing support So what enterprises expect which would be 7 by 24 SLA type level support? Okay, so here's a kind of your block diagram of what the offering is so starting at the The bottom left. I didn't realize I'm standing in front of the slide Sorry about that. So We start, you know, we talked about open stacks So everything's sitting on top of open stack on the bottom Then there's the trove database as a service open stack project right here. So we're basically wrapping that entirely In the first offering we have is our community edition So basically the community edition tracks the the stable releases of open stack, so We just released Community edition 1.2, which would be basically Juno trove Juno And we basically provide some extra things like the installation and configuration has been simplified Making it, you know easy obviously to install and configure for enterprises And we provide some extra management and it's and the community edition has it benefits from all the testing that we're doing as I've talked About and we will provide maintenance and bug fixes against the community edition as things are rolled into the stable branches On top of that is our enterprise edition So here what we're looking to do is over time at enterprise features And one of the things that we've done is actually accelerate some features into early release. So in Early September we released Version 1.1 of our enterprise edition it included some Juno features that we tested and accelerated into the release such as replication So people could have Enterprise access to that feature before it actually got released in in Juno, which was end of October We and then as I said the offering also includes the 7x24 support and SLAs Over time we're expecting to roll other features into enterprise edition that that could with that We would generally speaking upstream, but if the if the feature doesn't make sense to the community then it may not upstream It depends what it is. So we're evaluating those kinds of things Then on the right hand side another big part of our offering is These certified guest images. So as I mentioned the The trove Component is based one of the core things about it is there's a guest a guest agent and a guest agent gets rolled into an image and so when you Tell trove to provision an instance It basically spawns a nova instance and puts a guest image on it That's kind of pre-configured for for what you're provisioning. So for example If you say I want to my SQL database it would go pull the image that's associated with my SQL and Spark up nova against that. So This has been particularly challenging for people that have been trying to use trove over the time that we've been involved in the project Because the community provides tooling for creating these images, but you know It's just like a lot of the things people have trouble using the tooling and they're asking questions and then you know It's very challenging. So we decided to actually productize that So these images are tested certified by us and available for download as part of the platform So when you run the enterprise or community edition After you install it and it's configured You basically run this command and it'll pull whatever images you want off our site and install them into your Database to service component and we have images for All the databases that are currently supported. So like my SQL for Kona Mongoka, Sandra couch base Redis, I believe And as I said, we we were doing extensive testing on these images in the context of various distributions of OpenStack Okay, I want to talk a little bit about the Replication feature that we worked with the community to provide in the Juno release And specifically it was around read replica provisioning for my SQL So what did that include so in This is the first version of replication that was put into the trove project and we scoped it to include these Features so from a master my SQL instance that's been provisioned you can launch You can launch a replica. You can launch more than one replica The replica gets bootstrapped from a snapshot taken of the master at the time the provisioning occurs Currently it's based off my SQL native async replication and It uses the bin log position so it starts from a snapshot and then snapshot and then rolls forward based on the bin log position in my SQL master database as I said master can support many replicas and There's a concept of replica can be promoted or demoted so you could basically take a replica and make it the new master and knock the master So provides some the target of the feature was actually to provide read scale, but obviously if you have many slaves you could ultimately Promote one of them to be the new master at any point in time that you wanted to so Let's get into this demo Which If you've seen me do this before I like doing Video demos because they're significantly more predictable than relying on the vagaries of networking here So let's just go into this so One of the other things that we bundle with community and horizon community and enterprise edition of our product is a skin horizon that For the most part is is horizon over time. We've provided Various fixes to it that may that go upstream but may not be available in the open stack Say in in heist house. We put we pulled some things back from Juno and ice house for our versions Let's just fix some bugs in horizon. So So here we go. We'll sign in Okay, so here we go to the database panel Don't know if everybody's let me roll it up here, okay If you're not really familiar with trove, you would have never seen this panel probably if you don't have To sort debas or trove installed in your open stack. You'd you'd never get this Set of panels, but basically that pops up when you have a database service installed So in it has an instances panel. So one of the things you can do on the right side there you can launch and then the launch dialogue will come up here, so These are the things basically you provide when you want to provision a database in the so You name it You pick a flavor now one of the things you can do is you can actually establish flavors that are specific to Databases of service and the reason you'd want to do this is because different these different guest images and different databases may have different requirements from the other flavors that you have for Nova like they need more memory or more System disc or whatever So the other thing you can do I'll stop it there You can also provide a volume. So what that'll actually do is spin up a cinder volume and put the actual data directory for whatever the databases that you're provisioning onto that cinder volume You can imagine why that would be important Then you pick which data store inversion you want In other variations of this demo, we you know, there'd be more This will this would represent whatever listed data stores that you have installed and they all pop up and then you pick the version man The other thing you can do is You can have it create an initial database So in the context of my sequel it would that would be a database that shows up when you do like use database and You can create an administrative user. So we'll just go ahead and do that test DB test user password And I'm just gonna go ahead here click launch So now it shows up in here And it should launch relatively rapidly So what it's now active you can see that on the right I'm just gonna click on it Which is basically the show command and it's gonna list out this so this is my master and you can see all the way down here is the Basically the connection information. How do you get to it from whatever your application or client is? You can see that my user has been created and the database I made there the test DB Now what I'm gonna do is I'm going to I'm just gonna go into PHP admin kind of as like a canonical client And I'm gonna jam some data into the database so that I can actually prove that replication worked So I'm just gonna quickly Load some data a schema and data that I have created previously created So here we go customer demo schema I'll just go ahead and populate that and then query it So there we have some data Okay, so now I'm gonna flip back to to horizon here And I'm gonna I'm gonna launch another instance and it's gonna come up as a read replica So we'll just go through here quickly So name it pick flavor I'll pick the same flavor I used for the other one my sequel now Under this advanced tab now you have a choice you can restore from backup or you can now replicate from instance So I'm gonna pick my master So this is going to launch this instance as a slave or a read replica from that master So what is doing right now as you can see it's backing up the master and Then it's gonna send that backup over to so the backup gets streamed to Swift then it's gonna pull the backup off the Swift and Launch this new instance and restore that backup to it and then set up You know set up to my sequel replication Configure my sequel replication So here we are doing a show now on the slave. So a couple things here's its locator and then you can see down here It's now attached its slave of of that master And then master now shows that it has a slave And You can also see that and again this makes sense because it replicated it But it's it's now has the user and the database information that I put on a master and now I'm gonna go back into PHP my admin and I'm gonna connect to the slave which I've preconfigured with the address of that no instance and I'm gonna take a look at it and see if my data showed up there So there it is. Oh, and well, there's a schema. There's the data Now that's all well and good But the point actually the point of replication isn't to get the starting point It's actually be able to you know change data on the master as you go and have it show up on the slave So I'm just gonna prove that it got configured properly and that the data will make it across So I reconnect to my master and I'm gonna just go change a piece of data Here we go. I'm gonna jack up my credit limit. I think is what this table is for There we go. It's gonna change that to some number 5,000 and So now I've just updated my mat did an update SQL statement on my master I'm now going to just go over to my slave and Hopefully that change will have made it. What do you think do you think it made it? I Should make a version of the demo where that doesn't work then people would believe that it's real There we go 5,000, okay So what I'm doing here is I'm Forced my way under the instance. I'm gonna kill my sequel to show what happens if the master goes down so when the master goes down to chosen this detached state and the slave replication gets shut down on it because The rep that's kind of What happens when replication when my master goes away the replication stops now What I'm gonna do is start the master back up and you can see that this basically He'll come back to active and the replication will start again and the last thing I'm gonna Demonstrate is basically the detach operation so you can hit this detach command on the Slave and it basically will well It's hard to see it's turned off the replication which I'm gonna show but it stays as an instance It's now just independent of the master So if you go into the show you'll notice that the replica the slave of information is gone I think I think that's the demo. Oh, I'm gonna go into the master and show that the It doesn't have any slaves anymore Okay, oh It's starting again. Let me just go back here. Okay, so that was my demo Okay, so that's kind of the what I had today. We have a booth right over there, which is I 36 Please come and visit us lots of people there to answer any questions you have We have a cricketer artist who will draw a really nice cricketer over and give it to you And we have some swag. Everybody wants some swag. We have some swag. So So thank you for a question. I got one and a half minutes. Go ahead right, so Very good question. He's asking about what about high availability in the context of this feature So as I said, we scoped the initial my sequel replication kind of tightly so we could get it done And it was scoped to include only read replicas We are now scoping version 2 of that feature and it's gonna include failover features and that's being worked in fact There's a design summit session where we're gonna be talking about that on Thursday. So the intention is that'll be in kilo So we have 50 seconds anybody got another question Okay, as I said, feel free to come by and talk to us over the week. Thank you very much