 using MySQL more than 10 years. So the rest of you less than 10 years, really? More than five years? How many of you have been using MySQL more than 10 years? More than 15 years? More than 20 years? No, in your present life even. 20 years is not hard. MySQL has been going on for a lot longer. OK, how many of you have, in recent times, maybe would like to use some other database, be it Postgres, MongoDB, or something? Did you think about it because you didn't like the ecosystem? Or you thought Oracle was going to kill MySQL? No? OK. Anyway, now that is true. Oh, it's auto-playing. No, I'm just saying. It's not auto-playing. OK, I was like, oh, we have a screen problem. So I will continue dancing till the technical difficulties are fixed. OK. Yes, let's start with the Q&A. I will repeat your questions. Since you already MySQL uses, anybody have a question about MySQL? No? What would be the next MySQL version? That's a very good question, right? It is currently eight, and they ship very interesting new features in every point release. What would be the next major release? Would it be nine, 10? Like MariaDB jumped to 11. In fact, it went from five, five to 10. And then 11. So there's lots of jumping. So what would be the next one? Who knows? Maybe they'll call it 2023. I don't know. Oh, we're here. Yes. All right, let's get started because we're going to run out of time. OK, I just want to thank everyone coming in today. And it's my first time in Singapore, first time in Asia, so thank you for inviting and hosting our session today with Colin and with his previous talks over here. This talk, I just want to remind we've been actually handling this talk for almost 10 years with Colin and switching and sharing our experiences. So we'll start from the beginning, inception of MySQL. So some people know about where the MySQL came from, but I actually always try to remind or have where this all started. So basically, Monty actually had an idea of writing this code and actually started a long time ago. Now it's 28 years. And there's a little bit of a history about that. But when it came, it ended up in Oracle. And that's the background of the MySQL. Yeah, and to be clear, InnoDB is still very much the storage engine of choice. Even though back then, we called that InnoDB Friday. It was a very dark day for us at MySQL. We subsequently went out to acquire this storage engine called Falcon, which is now dead. And BDB was also part of Sleepycat. BDB as an engine doesn't exist any longer, but it was. So actually, MySQL has evolved a lot in the last basically three decades. Yes. So there are some stakeholders that we should know about MySQL. After the Monty's inception, there's in 2008, Paracola actually took the fork of MySQL. As of today, it's still a live database and supported database that's based on MySQL. And there were some other distribution that didn't last long. But Oracle actually holds both versions of community and the enterprise editions of MySQL as of today. Oh, yeah. So in theory, the Maria engine was always being developed. It was called Maria. Now it's called Aria. It was renamed, actually. So yeah, before acquisition, there was an idea that maybe the Maria engine needs to continue development. But the company actually only got started much later, like actually in the summer in Mallorca of 2009 was when a bunch of us decided to go and set up a new company. Unfortunately, I didn't make the first meeting because I got the chicken pox. Oh, something happens. OK, so we want to fast forward because we haven't been doing this type of talk for the last three years. And we recently came back on the live events. And Colin actually presented in the last fours them in February. So I'll let him actually run this one. Yeah, so MySQL sold to Oracle for, sorry, to Sun for a billion dollars. Sun sold to Oracle for, I don't know, seven maybe. And MariaDB actually went public last December 19. It's trading as MariaDB. I'm sure if you go look for the stock price now, you probably laugh. It's a sad situation for whoever's still holding the bags, as they say in crypto. But this is actually on the stock exchange. A lot of rapid releases now is the plan with long-term support releases. So my advice to you is to actually use a long-term support release if you're going to deploy. Not actually deploy with rapid releases that you have to upgrade every year because I don't think anyone in production does that. Prokoma is also rebranded. I think they're beyond just a logo. They're rebranded in general as a company and what they offer, so that's also very exciting. Oracle makes so many amazing changes into small releases of MySQL. You consider them minor releases, but they're actually all major. They include nice new bugs and nice new features. So it's a huge bonus. I highly recommend you read the release notes carefully. Amazon RDS ditched DRBD for semi-synchronous replication. So it's actually much faster if you use multi-AZ. Anybody here use Amazon RDS? Okay, so if you're using RDS, you'll actually notice much more speed improvements for inserts, for example. While Amazon finally migrated to a semi-synchronous replication, Facebook decided we'll go one step further. We'll actually do something called RAF-based replication and they've actually got RAF protocol built inside as a replication layer. So actually now there are four types of replication in the MySQL world. Semi-synchronous, semi-synchronous, virtually fully synchronous, and RAF-based. Except if you wanna try the RAF stuff, you have to compile software from the Facebook tree, which I'm sure many of you here at FossAsia can do. So after that, fast forwarding the three years, the latest news started coming out. And this is the latest update from the MySQL versioning which was announced in the MySQL summit like in Japan, maybe a month ago. And they started getting into long-term release support. The reason is they are going to be staying in VirginAid for a while. And VirginAid, as Colin mentioned, and minor versions are actually happening as like major feature changes. And we'll talk about that a little bit later, but this is the latest long-term support that will allow MySQL to continue on this version. Anything on this? Okay. It's really important to support lifecycle. Yes, support lifecycle. Okay, this is a nice graph that we like to share that Daniel actually put together. It's in GitHub, there's a link over here. And actually this poses of where the MySQL came from. There's also a little earlier graph that we removed, version three and et cetera. So that's the branching three, how it's being actually handled until today. So we are actually going through that cycle of events. And as you can see MariaDB is going through the minor versions of 10 and right now it's in 1.6. Anything on MariaDB? Yeah, like rapid releases, right? So you're actually getting several a year. So pick the LTSS, being play with the short term releases because they've got nice new features, but pick the LTSS. Okay, so this actually is a good sign that both MariaDB and MySQL versions are being deployed in new versions and the features being added that actually adds to the community having new features. So important update over here in 5.7, if anyone is actually using 5.7 to anyone in 5.7, some customers, there'll be some customers always. End of 5 is in October this year, so there will be my official support unless there is a special case. As of today, this is the date that MySQL Oracle will know when they'll be supporting. So there's a lot of things going on, but maybe you want to look up some of the other presentations we've done in the past. There's one for me, I've done a bunch of runs in 2019 for the upgrade in MySQL to get everyone prepared for the next three years, but apparently there are still people using 5.7, but it is time to upgrade. So anything on the new features? Okay, I can just run the MySQL 8. It covers both database administration and the development features. From the database side, there are major changes in 8 compared to 5.7, including security and the native data dictionary. Some of the performance improvements were bound to the original structure of MySQL, so those are being basically changed and rewritten to get more optimization in the database. There's also the software development side with a bunch of things, which highlights of getting the developers more embedded in the MySQL. The MySQL shell is one of them and the JSON support is the other one. And let's switch to that, and MariaDB. Yeah, and MariaDB has actually got lots of those features that MySQL has, but also can maybe delve out of what MySQL can support, right? So an Oracle PL SQL layer, so you can migrate most Oracle apps to MariaDB. It's of course something that you'd never see MySQL do, probably. Things like DML only, flashback, many interesting things. So dynamic columns is also, I'd say, unique. Actually, I try to keep this slide to only unique things that you'd find in MariaDB. Proxy protocols support is maybe not so unique, because Percona server has it, but standard MySQL doesn't, so slides will be available, of course, so do check them out. It's just, we will upload this slide, so we'll have all that. Fast-forwarding to MySQL 8.0 release, so we actually talked about the 5.7 to 8, and the bug fixes and all that. All the minor versions of MySQL actually now includes new features, and it's actually like a new version. And the latest one, as of March, included these two big changes with the MariaDB replica set, cluster and cluster sets, that was presented in recently by Oracle, and I'm sure there's some talks about that. Also, the other feature that's important, instant add drop. This is an important production operational issue that if you have large keys to, or columns to add or drop, that might be operationally difficult to handle in some cases on active systems. So check this out. Right now, it was introduced in 31, but in 32, it is recommended that they found some issues. It is recommended to only run on 32, so you have to run the latest and the greatest release of MySQL. Anything on 8.0? Yeah, so you'll find the bugs even in point releases, and this is maybe one of the biggest changes you'd see in MySQL 8.0 is to actually pay attention to point releases, release notes. Important update on that. So Percona is also following this trend of getting these updates. Percona server is actually following the minor versions slightly later than the Oracle. This is one of the major reasons if column agrees is the backup, extra backup on new works on the latest version of MySQL that Percona releases. So if you're on open source and using extra backup as the backup utility, you actually need to be following the Percona server to be releasing the latest support for that version. And that's how the... Yeah, it's because extra backup is tied to the InuDB version, which is why actually Maria backup exists now as well because MariaDB fought extra backup for that sole purpose. Okay, that's a good highlight. And so there's a bunch of updates on the Percona server that's also coming out and following, which is in addition to Oracle MySQL community edition. So we got some of these features. Some of them includes the storage engines and loads and stuff like that. So you can check those out. And there's an advantage of using Percona's open source version versus the community edition that Oracle provides. I think one thing that we haven't mentioned over here is these minor versions of MySQL is one way. So there's no rolling back to the previous version. And Colin will say something about that. No, it's true, it's actually a problem. So if you're planning your upgrades, know that downgrades are hard, so take backups. Yeah, this is a little bit different in the MariaDB world where forward and backward compatibility is actually still kind of primed. Yeah, so this is important, do you mind if anyone is thinking of upgrading? You need to plan how you actually circle back into the old version or failover. If your dataset is large, if your transactions are high, this is a difficult task that you need to handle properly. Okay, so there's something that we've compiled in the past, comparing the enterprise edition versus Percona server versus the community edition. So these are the updates that the Percona server provides. You don't need to pay for the enterprise edition, but you can actually still use the Percona server to get some of the features if you're using, and there are some things to check out. Okay, all right. So MyRox is a nice little storage engine built on the type of RocksDB, basically developed by Facebook. In fact, Facebook is mostly running on MyRox now. They've migrated nearly the entire fleet to MySQL 8 with MyRox and this Raft replication layer. So the reason for them is it's because it's much better from a compression standpoint. So compressed in ODB is not as efficient, space efficient, and they also want right efficiency. So in terms of translation, this is hardware savings for you, right? And it turns out that if you are in the cloud for already fairly long time, MyRox has been enabled in the MariaDB distribution of Amazon RDS. So maybe it's a bit of an underrated feature of MariaDB, but it's an engine that probably could use a lot more marketing besides the fact that, oh yeah, Facebook's migrated to it and nearly it's a dire fleet. So I think both Percona and MariaDB probably need to spend a bit more time on it. Next slide, I guess. And then this is how the MyRox actually handles like Colin said, it's mostly hardware and storage savings. It helps in the compaction and the compression of the data and that's where, what from our friends at Facebook saying that they were running out of space because of the data that's being used and this helped them save storage and the storage needs that needs planning in advance. Okay, so popularity on MySQL is going very high, still strong in the community. We're still number two and considering Oracle, I don't know if it's like Oracle, MySQL is not just Oracle, Oracle, so that's the ranking, okay. And this jump is the Snowflake, by the way. So that's an interesting highlight. That's how the Snowflake actually made that jump over there. Okay, some talks about the proxy and proxies. Yeah, I expect that if you run at scale, you probably will end up needing to use some kind of proxy, be it HA proxy, proxy SQL router. MySQL router is actually default configuration, literally for your UDB clusters. Proxy SQL or HA proxy for your proxies DB clusters or your gallery clusters. And then of course, MariaDB also shipped something called MaxScale, but that's under a business source license. So not very, not as popular as you'd expect as you got to pay for the servers behind it. But it's a good proxy, just badly licensed. So the long story short, use a proxy if you're using MaxScale, that's basically the best practice to put a proxy in front of a MaxScale source. And there's a lot of talks and a lot of content blogs about this. If you haven't used, heard about any proxy, check those out. And we talked about the proxy SQL is the most popular and common proxy for mySQL and the MariaDB's MaxScale is computing product, which the later version is actually more licensed. And so the proxy vision is basically put proxy in front of your database server, it take advantage of the read write splitting and query routing and some other features that it has. Oracle has a similar proxy vision in a version of this. Yeah, so Oracle's router similar vision. And the reason you get router proxy SQL and versus HHA proxy is the fact that one's a level seven proxy, understands SQL protocol, one's like level four, just TCP IP. So a little different from that standpoint. Plenty of HHA solutions out there today. We've already talked about the group application and Ruby cluster. You've got Galera, of course. Go to Galera talk. Clouds, plenty, plenty in the cloud. Maybe Vitas here. Yes, it is the support, Sharon. So we'll just go through the tooling. There's a bunch of tools available, open source tools that you can actually orchestrate your proxy in mySQL ecosystem. And some of those are highly used in the day-to-day operations of, and one of that stands out as a Paracono toolkit. If you haven't heard about it, please check it out. The trending topics will run very fast on this one. There's operators, of course, in the communities world, we got a lot of operators. And the MySQL is leading. And there's a Vitas for shouting framework for MySQL. Group application Galera for HHA solutions. And there's a bunch of tools and utilities that allows this ecosystem to be run. And I will go through real quick in the operators. There's known operators as Paracono Kubernetes operators that's for the extra DB cluster. So it allows to run database in data on communities for state for workloads. Press Labs has its own and Vitas actually runs an operator. And also MySQL, Oracle MySQL operator came out. Within the realm of group application to handle data on communities. And we can skip those. And we have a bunch of books available in the MySQL. And one of them is the one that I co-authored with Smetha. Tomorrow we will have a session about this. And hopefully have a book signing also. Thank you. And speak to us as to why Paracono is ditching Proxy SQL for HHA proxy in their Kubernetes operator. If you have any questions, it does say end, but we will be outside. So everyone for the short delay, we face some technical difficulties and who are joining here from YouTube or in live stream from China or friends from China and all sorry about that. So our next session, we have an extinguisher speaker. It is Hanando Vicacino. He works in Oracle. He will be talking about MySQL in your DB cluster set, concepts and architecture for disaster recovery solution. Over to you sir. Thank you. Good morning everyone. And I apologize for technical issue that I encountered just now. I hope that I can finish this talk on time. So I wanted to introduce myself. My name is Hanando. And you know, as you say, and my logo is a Oracle employee. So I'm Oracle MySQL Principal Soliciting Leader. And today I would like to share with you a little bit details about InnoDB cluster set. As the name indicates, the InnoDB cluster set is set of InnoDB clusters. So the expectation here is you have a couple of InnoDB clusters, more than one InnoDB cluster is running on multiple site. And cluster set basically is standardized technology in how we can do that as in conversations between InnoDB clusters that's running on multiple site. And this is for disaster recovery solutions. Why we do this? Because we realize that organization face the big challenge especially if there is a major outage on primary data center. And it can cost them a lot. Okay, based on survey, it is more than half same that the experience now it's costing more than 100,000 US dollars. And most of the time, they say that on site power failures is the biggest cause of significant outage. And you know it in data center there are a lot of important stuff over there. We have servers, we have firewalls, we have database applications, everything is mission criticals. And power is just one of it. Power is not everything in that case, but those everything is nothing without powers. If you lost powers in data center, that's it. So to mitigate this, then we need to have, business need to have alternate sites and running duplicate of the system. Yeah, on the alternate site and use database as in conversations. And as you see, we have a mass class in Conos applications. It's very simple. Okay, it's has been around a long time back. We have source replicas every time we make transaction and committed on the source, then the lucky one will be sent over to the replicas and the replicas threats will actually capture the data and then commit the same data to the storage engine. So that the expectation is we have source and replicas running in data will be consistent, but it's not always true. And then the pass, okay, DBA have a lot of job, especially if they want to deploy replicas, okay. Primary and secondary here, source is where the transactions happenings and replicas is where the transaction is getting replicated. And we have a new terms called primary and secondary. Okay, primary is with words, secondary is with only. And a lot of jobs that DBA need to be done by the DBA in the past. They need to do backup of the database and then they need to transfer the backup from the primary site to the alternate site. They need to restore the backup to create a secondary database and then our study up and with primary mode and then to create replication users on primary database and assign replication slave privilege to the replication users. And they need to go to the secondary database, connect to the secondary database and create the replication channels. All this need to be done manually and it's not a complete solution if you are talking about disaster recovery solutions because disaster recovery means that we need to orchestrate as well, right. If the outage happens, then we need to make sure that human interventions will be minimum. Okay, everything should be standardized. Okay, then there are a lot of workarounds I need to be done in the past, let's say, doing a custom script for example, for DR orchestrations or incorporate party tools. Okay, just in case if DR activation is happening, then they can use this third party tool to orchestrate the disaster recovery procedures. But now we have in ADB clusters, okay. In ADB clusters is based on group replications, as you see. It's still using asynchronous replication underneath. Okay, however we use group replications, protocols basically to make sure that this asynchronous replication become really synchronous, yeah. That that would be consistent across the ADB clusters members. Okay, we have primary and multiple scanners. Okay, it is read scalables, yeah. Primary will run on read month and scanners will run on read only. And we have master routers as explained by the previous presenter. Okay, master routers is our default I mean component in the ADB clusters to provide connection transparency to the application. So that the applications to connect to ADB cluster does not need to change. Okay, of course this is a layer for routers here. It's based on port number, yeah. There are two kind of port numbers. First is read write port and second is read only port. So applications will see master routers as that are based endpoint. So they can connect to the master routers. If application connect to read write port, then master routers will redirect the connections to the primary. If the application connected to read only port, then it will redirect the connections to the secondary nodes. And we have integration as well with master shell. Okay, master shell has admin API that enable DBA to deploy this in the DBA cluster easily. Okay, you don't have to take quite long time actually to pick up how to deploy in ADB clusters. It's very easy. You can deploy three nodes in the DBA cluster within less than five minutes if you talk about standard default in the DBA cluster installations, okay. Okay, this one is the differences between synchronous replication, normal asynchronous replication and synchronization that happening in the group replication that used by in ADB clusters. Every time there is a new transactions getting committed, then it needs a consensus. It needs a quorum. Consensus happening when more than half or majority of the nodes within the group replication itself, okay, certify the transactions. Then the transaction will get committed on all nodes. The result is in ADB clusters can provide maximum data protections. Okay, whenever there is new transactions going into the routers, read write on a read write pops, then the routers will redirect that connections to prime remotes. And if there is any commit, then the block defend will be sent over to all the scanderies and certification process will happen. And upon quorum, okay, each members will commit the transaction to the in ADB storage engine. There are a lot of models or types to control the consistency in the ADB clusters. If you take a look over here, right, the time when the transaction is really getting committed on each node cannot be the same on the same time, okay? Because we are using consistency, eventual consistency as the default consistency in the ADB cluster. However, if your application connected to this primary node and require new data, then we can set the consistency to before. Okay, therefore consistency before, after, eventual, and before and after. So this is pretty much application requirements. So the in ADB clusters also will fight automatic failures whenever a primary node is failing. Then group applications will promote one of the nodes to become a new primary and application does not need to change the connections because my score routers, yeah? So because of my score routers. So my score routers will redirect the network connections to the new in ADB cluster primary node. How about if the phone node comes back? Once the phone nodes comes back, then it will try to join back to the clusters. So we have auto-filling capability, yeah? So once the nodes comes back, then it will try to catch up the transactions, catch up the state by doing recovery. Okay, it can be used, it can use clone or it can use incremental recovery and the group replication framework will automatically select which distributed recovery method that they suitable for recovering the phone nodes. And once it is completed, then the phone will join, fully join to the new ADB clusters as primary node. And at that point in time, okay, the routers will stop to see this as primary node. Yeah, so the failure will be joined back as primary node. How about my score routers? We advise my score routers to be installed on the same host as the application so that the application can connect to the local my score routers. Or optionally, we can run my score routers outside the application servers, but you need to provide high-coffinability of the my score routers, yeah? And it will have more than one my score routers and load balance will be or high-coffinability of the my score routers will be. We need to be provided by third party, let's say pacemakers or keep alive. And in 2020, we release the new ADB replica set, okay? It's basically a my score asynchronous replications with add-on integrations with my score shell, okay, admin API. So creating the asynchronous replications is no longer completely manual process, but it is more automated and orchestrated using admin API. And secondly is integrations with my score routers. Okay, so using my score ADB replica set, we don't need to have like an OPIP failover in it when master is failing or something like that, but we can use my score routers basically to redirect the connections from the applications if application connected to the red-white part of the routers. If the primary node fail, then the primary node is available on the other nodes, then my score routers will redirect the new connections to the new primary node. But bear in mind, this I know that the replica set does not have automatic failovers, yeah? So we need to failover the primary node manually. So in order to make this even more suitable for disaster recovery solution, we have disaster tolerance solutions with my score in ADB replica set. So what is a replica set? We have two or more in ADB clusters with asynchronous replications to replicate data between primary of the primary clusters and second cluster we call it as replica clusters because it is only clusters, okay, replicate into the primary node of the replica clusters. Bear in mind that in this architecture, only one node, which is primary, node of the primary cluster will be running on the red-white. The rest of the node will be running on the red-only. The rest of the node will be running on the red-only. Upon commit on the primary, okay, once the certification done, the transaction is committed, on the primary, the data will be as replicated using asynchronous replication to the primary node of the replica cluster. And again, it has my score shell admin API so that you can install and configure in very, very easy way, yeah, easy way. So if you have a three-data center, then you can actually extend each of the data center to have its own in ADB clusters, but only one become primary cluster and two are replica clusters. We don't have automatic failovers of the primary cluster to replica cluster, but I will tell you why later on. Okay, not every cluster has to be on three nodes. Okay, we can have one of the clusters, okay, have different topology. Let's say you only need to have read replicas on disaster recovery, but you don't want to have a high availability. Okay, that's fine. You can have replica cluster only consists of one node, which is primary node that running on read only on your disaster recovery side. How about my score routers? My score routers can run on every data center, okay? And the application can transparently connect to my score routers, okay? If my score routers, I mean, if application connect to the my score routers in read web ports, since my score router aware about the cluster set topology, the my score routers will connect the connections to the primary node of the primary cluster. So in underlying, even though in the database infrastructures we have a single clusters become a, it's a read web clusters and then the rest are read only clusters, but if you have requirement that require each side to be active, active, then you can use my score routers as database endpoint. Yeah, because my score routers can run on everywhere. Okay, so as you see over here, even though my score routers by default always looking for the primary clusters, okay, my score routers running on standard set and also connect to the primary clusters, but we can have additionally, optionally, we can have my score routers running to connect only to the specific cluster within the inodb cluster set. So this is the my score inodb cluster set configuration. First of all, we need to create inodb cluster as you see, it's very simple. Okay, db.create cluster, then you will have one inodb clusters with one node and then you can just add instance, okay, to add the second node and to add the third node. You don't need to do a backup and recovery because it will do cloned, very simple. And then once done, you can issue command cluster.status, okay, then you will see that you have a three node of inodb clusters. Okay, then we need to create cluster set. We need to define a cluster set for this cluster. Then the command is very simple, clear cluster set. That's it, then you will have one cluster set with one inodb clusters, okay? As you see, one cluster set, one inodb clusters. The name of inodb cluster is bru, okay? Then we can add the replica clusters, okay? And then how to add is very simple, cluster set.createreplicacluster, then you will have two inodb clusters, okay? Additional inodb cluster has been added into the cluster set, yeah? With one node, which is primary node, yeah? On the replica cluster. After that, we can add instance to that primary node so that we will have second and third instance running on replica cluster. And you will have three node inodb clusters on primary cluster and three node inodb cluster on replica clusters. As you see over here, you can check with cluster set.status, cluster set.status, and you can see, okay, you will have, that you have the two clusters, inodb clusters, one primary, one replica, and then, yeah, that's it. Then if you need more informations, then you can add extended column one, then you can have more informations in the output. Okay, this is the hack of a little disk in a real. I hope I still have time. Yes, I still have time about seven minutes. And we can change primary members in a primary cluster. Let's say you have node one, node two, node three, in primary clusters, node one become a primary node, and you want to run primary node on second node. You want to switch, then, yeah, easy. The same as inodb cluster, you can just issue command set primary instance. The same thing with replica clusters, okay? You can just connect to the primary node, connect to the replica clusters, one of the nodes, and then you can run set primary instance, okay, to switch over primary node from node one to node two, for example. How about the replication? The replication will follow. If you set the primary instance to second node, then on the primary clusters, then the replica cluster will follow. The replications, okay, replication will change, not from the node one of the primary clusters, but from the node two, yeah? If the primary node of the primary cluster fail is the same, right? It's the same like you switch the primary from node one to node two. It will be automatically available to the second node, and asynchronous replication will automatically adapt with the new changes. The same thing with the replica clusters, okay, if the primary node of the replica cluster is done, okay, the file overs to the memory nodes, then the replication will still be happening, starting on the new primary nodes of the replica cluster from the primary node of the primary clusters. And then we can switch roles, okay? Let's say you have requirements, let's run our application on the other side, okay? Then we can just do set primary clusters, then it will flip the cluster roles, primary cluster become replicas, replica clusters become primary clusters, as you see over here. So how about routers? Routers will always follow the primary clusters, so we don't need to change anything from the application side, okay? This is the process. Basically once we run set primary clusters, then the cluster roles will be flipped, primary cluster becomes primary, I mean primary clusters become replica cluster, then replica cluster become primary clusters. If we have a data center crash or any work partitions, then we have a command called force primary clusters, okay? To force the primary clusters, sorry, force the replica clusters on ultimate side to become a primary clusters. But okay, we don't, okay, since there are a lot of circumstances happening, okay, in this kind of scenario, so we are not, you know, we are thinking to not have like, you know, but it's up to you actually, if you want to develop like custom so-called witness on the tip side, let's say on the cloud, just to monitor primary cluster and replica clusters and do some sort of automatic followers from primary to replicas, I think it's more towards really situational, how much data loss that, you know, you can take because anyway, if primary cluster is unavailable, okay, we don't know what is the status, maybe some applications through writing into it, so potential data loss will still be there. Okay, so this is the process of emergency followers to another clusters. As you see, we can use a force primary clusters to set primary, I mean, replica cluster to be a primary cluster and set the primary, the existing primary cluster become invalidated status and so on. So this is the status as you see over here, okay, only when the cluster status is not okay, invalidated and unknown, okay, the rest of the status we can do a switchover and emergency followers. So this is the restrictions that we have, okay, on inodb cluster set, it must be master versions 8.0.27 and higher and only works with single primary nodes, one primary and multiple secondary and as in conus replication is supported and submissing is not supported. Okay, thank you so much for listening to my presentations and thanks for the time, yep, yes, please, thank you. Okay, if I'm not mistaken, okay, let me give you the mic, is that okay? Okay, yeah, I'll win here. Okay, so what is the most difficult change management issue you can think of and how would you execute that? Okay, so for example, an upgrade from one release to another or maybe even a secondary node, you have a secondary node that is in this geographic location and we move to another country for example, all right. So that kind of scenario. Thank you so much for the questions, okay, very good questions, change management, it's more towards operational kind of things, how the user or customers actually using inodb cluster set. I mean, I give you a scenario, for example, if the customer is using, let's say, standalone instance, how to convert this standalone instance into inodb cluster set, okay, cost geographical locations and then how to upgrade, how to do patching and so on, right? Is that your questions? Yeah, yeah, scenario, okay. Well, let's say for example, we have three node inodb clusters on the, let's say Singapore and we have disaster recovery on Kuala Lumpur, let's say, and we want to create the inodb cluster set to link up this inodb cluster in Singapore and replicate to inodb cluster set on KL, for example, right? And then we want to do upgrade, let's say. I'm sorry. Singapore to KL, the primary cluster in Singapore, the replica cluster in KL, is that what you want? Okay, so let's say you want to do the upgrade, right? Okay, let's say I give you an example. If we have, you know, data center movement, let's say, okay, for secondary data center, I don't want to use KL data center anymore. I want to use Middle East, for example, right? Then it's pretty much a simple process, basically. We need to create the replica cluster on Middle East first. So we need to run three inodb clusters within the inodb cluster set, okay? After this, that less, because just the commission's inodb cluster on KL, yeah. The same thing with upgrade, you need to upgrade the replicas clusters first and then follow by the primary clusters. Thank you. Hope you had good tea. So for the next session, we'll be talking about running in memory databases on Kubernetes using NDB operator. We have our speaker, Hanando Ocasmo, who works as a master principle solution engineer in MySQL at Oracle. Over to you, sir. Thank you so much. Okay, thanks for the time. Okay, in this topic, we will explain about the NDB operators to deploy NDB clusters on the Kubernetes. As we know that the NDB clusters is clustering a shared nothing architecture. It is based in memory. Means that data will be stored in memory in distributed, okay, in memory data set. And then it is always on with 99.99% system high availability, super highly available and also always consistent because all nodes in NDB clusters are read-write different with the inodb clusters that we just explained just now. In NDB clusters, every node are read-write and always consistent. And it's massive linear scales with in-memory extreme performance. And what you get by running your database in NDB clusters? First is performance, read-write scalables. Okay, because all nodes are read-write, then you can get more throughput by adding more nodes. Read-write throughputs by adding more nodes. And then it is real time in memory. Okay, as we know that memory can give better response times than I owe to the disk. And super low-granted latency. So this NDB cluster is designed for super low-latencies applications, mission-criticals in terms of performance. And data will be automatically shut across the inodb clusters, NDB clusters nodes, okay? And it makes partitions available by default in NDB clusters. And this elastic, you can change. You can add nodes easily in NDB clusters. Secondly, you will have a consistency. It is always on, read-write scalables. Okay, there is more like, you know, data to be like in a waiting stage. Okay, the moment data is committed and the data will be available on all nodes. And always consistent. In fact, this is asset compliance. Okay, durability is provided by a checkpoint. Yeah, there is a local checkpoint and global checkpoint to make sure that the data that reside in memory will be back up to the disk. Third is NDB cluster support SQR and non-SQR. And it is highly available. Completely super highly available. Yeah, with 99.99% system high availability and I will show it to you later on. Okay, this is the NDB cluster architectures. We have NDB clusters consists of multiple data nodes over here, but to store data in memory and completely consistent. And on top of that, we will, you know, NDB cluster has, you know, various options to connect to the NDB clusters data nodes below. So you can write your own code using Java or using C++ and execute NDB API to query, read and write data on the NDB clusters. Or if you have, I mean, majority of the application is using SQL interface to communicate with database. So NDB cluster have SQL nodes, yeah, has SQL nodes. Okay, where the application, SQL-based applications can connect to the SQL nodes as if it is connected to, you know, normal my SQL. When I say normal my SQL is that, you know, normally my SQL is, you know, application just connected to my SQL and then do a SQL query and so on. So NDB clusters are a general architecture consists of three different types of nodes. The first is management node. Okay, management node, you know, actually start the configuration data of all nodes, basically. And it's controlling the cluster membership as well as acting as arbitrators, acting as arbitrator if there is any network partitions that's, you know, potentially causing split brains. So management node will have to mitigate that issue. So second type is data nodes. Okay, data node is the, running the NDB engines okay to store data completely in memory unless you define one or two columns in the table to store data to the disk. But that's not something that usually people do. Okay, usually they store everything in data memory. And third is my SQL servers, so that the applications, okay, can connect to the SQL nodes, yeah, the SQL node. And if the application commit data, transactions on the SQL nodes, then the data is actually stored in the data nodes. If the table objects, yeah, but the tables itself use, you know, the, sorry, NDB started changing, so. Okay, so this is the architectures, okay, the architecture, in this example, we have four my SQL servers, okay, all are read write. There is no fellow verse all those things, right? Like an, you know, DB clusters, there is no fellow verse because all is read write. And application can use my score values or any other that answer that you like, okay, to spark a lot of cost of my SQL servers over here. But this SQL servers does not store data locally, but it is storing the data to data nodes behind. And the data will be stored as a memory. And we have four data nodes over here that split into multiple data node groups, which is node group zero and node group one, okay? So meaningly, we can have one node groups, yeah, which is node group zero. But if we have a data size more than data memory, then we need to distribute the data, okay, to the second node groups. If data growth, then we can have another data groups and data will be shattered across. And within the node groups, we can have one to four replicas, yeah? And they are fully consistent. And we have two management nodes, yeah? We can have two management nodes, one primary and one standby management nodes, okay? How about if we have major outage on the NDB clusters? Since NDB clusters is fully redundant, then if we have a lot of nodes within the NDB clusters having problems or outage, then NDB clusters will keep up and running as long as the data is still complete. The full set of data will still be there. Let's say for example, data nodes two and data node three having a problem that the data node one and data node four still have a full set of data, then this installation, this architecture, NDB cluster is still up and running. Even though the management node is down completely, it's still up and running because the management node only use for, in this case, only use for starting up the NDB clusters nodes, yeah? Once it is starting up, it will look for the management node to get parameters, okay? For these nodes to starting up. Otherwise, it will still up and running, okay? So if our data is growing and one node group is not sufficient, then we can have another node group, yeah? And that will be shattered across. Okay, back to the topics. Okay, today's topic is about running the NDB clusters on Kubernetes, okay? Now modern application is developed using microservices, okay, running on cognitive, where the monolithic applications is, you know, we break the, I mean monolithic application, we chop the monolithic application to become smaller and run this smaller applications, okay? As microservices running on top of cognitive platforms like Kubernetes and this API become norms used by the modern applications for microservices to communicate and interact with each other. So based on survey connected by JetBrainz, it is evident that microservice and REST gain popularity is nowadays. And based on survey connected by CNCF, okay? It shows that majority of the companies that know at least think or have, you know, cognitive environments in their organization itself, in their organizations, okay? So this CNCF survey, 82% of organizations deploy a massive cognitive environments running microservice on top of Kubernetes. So this is like, you know, high levels Kubernetes architecture. So basically Kubernetes has Kubernetes working nodes and Kubernetes control planes, basically control plane consists of multiple Kubernetes working nodes. The work, sorry, master node, not working node, I'm sorry. Yeah, so control plane consists of multiple Kubernetes master nodes. So in Kubernetes working nodes, we can spin containers, okay, containers cannot run by itself on top of Kubernetes, but it needs to run inside a pods, yeah? Pods will give networks identity, yeah? It will give identity to the running container inside. Then, my SQL itself, okay, can run as a containers within a pods. We can run single minus SQL instance within a pod or we can run multiple minus SQL container in a single pod, yeah? And each of the container will run only one minus SQL instance. And we can run minus SQL instance side by side with side or side containers inside the pods. So our minus SQL operators for Kubernetes is using set car containers specifically to maintain the clusters inside the pods, inside the Kubernetes. So NDP cluster is very suitable for running in Kubernetes because resiliency, because NDP cluster is also shed nothing architecture. It can operate without centralized management or any single point of errors. It's not available in NDP clusters. It is completely high, high-cap valuables, yeah? And scaling is very easy and data is shed across the NDP data nodes. And it provides consistency as well and standard, yeah? It should support query standard. So SQL node is basically like normal minus SQL instance, yeah? Normal minus SQL instance with NDP storage engine support. So how to deploy NDP clusters on Kubernetes? So typically we have, in Kubernetes we know that they have deployments, they have replica set, diamond set, stateful set, and so on. But, you know, database is a stateful applications, yeah? You need to store database data on persistent storage. So the persistent storage is really critical in database. Therefore, the models to deploy database on Kubernetes is using a stateful set. So stateful set here in our minus SQL operators is used to deploy NDB, MTD, is a multirated data nodes, yeah? And then NDB, NGN, okay? This is management of the NDP clusters and minus SQL D, okay? This is the SQL node of the NDP clusters. As you see over here, okay? We can create a stateful set consists of three nodes or four or more, okay? And then we can attach a storage into it. How we attach the storage? It requires P3 and PPC. P3 means persistent volume, P3 means persistent volume claim. P3 is like Kubernetes resource. It's a Kubernetes resource to define the underlying storage so that it can be mounted, it can be seen from the resources within the Kubernetes clusters. And PPC, a persistent volume claim is like, is a definitions, okay? The size from the PPC to be mounted inside the stateful set container, stateful set ports. In the minus-scale context, we know the minus-scale database has my.cnf and inside my.cnf there is a parameter called datadir. And datadir is always pointing to the directory where datadir.fl is stored, yeah, are stored. So normally, the database datadir is pointing to slash far, slash slip, slash minus square. The file we need to mount this PPC into this slash far, slash slip, slash minus square inside the container, okay? That running within a port. So this is the basic to run my.cnf database on Kubernetes. So in the context of NDB, okay, we have management node, we have data node, and we have SQL node. Pardon me about the wrong diagram over here. It is not deployment, it is stateful set. So three of them are stateful set, okay? Management node is deployed using stateful set, data node is deployed using stateful set, and deployment, all right, nice kernel is also using stateful set. And we have CRD, okay, once you have my NDB operators running on your Kubernetes, then you have additional custom resource, right? Which is my SQL controllers, NDB controllers, and pickup restore controllers. And here it goes. And we have NDB management nodes, okay? Running within a port, management node container within a port. And we also have set car containers that are running on the same port. And the set car container is to manage the management nodes as well as to protect the ports getting filling if the management will fill. So set car container is like protecting the ports for not, you know, it's not filling, yeah? So that the management will, I mean, management will ports will always be up and running. And management will need to have a config map. So config map will be mapped into the management node container. We also have a pop for data nodes container, okay? It has persistent volume claim and persistent volume because data nodes is component in NDB clusters where data is stored. Okay, although it's stored in Maria, but in the end of the day, we need to store those data onto this. Okay, this is how to install NDB operators. Okay, if you have, I mean, Kubernetes clusters running, either using Minikube or Kubernetes Ranchers or whatever it is, okay? And then you can easily install NDB operators using two ways. Okay, we support home installations and we support Coup CTL and YAML installations. I show you here is using, you know, Coup CTL and YAMLs. Okay, very much. The solution is pretty much simple. So once the YAML is executed using Coup CTL, then we will have, you know, the NDB operators running, yeah? Two parts are running. First is the NDB operator itself and secondly is the webhook servers. Okay, to deal with various NDB cluster containers. Okay, this is a NDB cluster YAML with minimal configurations, okay? How to deploy NDB clusters in quick way, yeah? In Kubernetes using very minimal configurations. Okay, so I created a sample that YAMLs, okay? And we can run NDB clusters on custom namespace. Okay, in this demo that I show you, I create a new namespace called NDB clusters, okay? And then on my sample that YAMLs, I mentioned that namespace that I use is NDB clusters. Then I can have spec something like redundancy level equal to two, okay? And the number count is two. That means there will be one node group, two divided by two equal to one. So one data node group consists of two data nodes and my score node is also two, all right? And since redundancy level is equal to two, then management node is also two. Using Qubectl, we can deploy the NDB clusters, okay? Using these YAMLs. Okay, once it's executed, then Kubernetes will spin the NDB clusters as you see over here. Okay, once then, then we will have two pods running management nodes, two pods running data nodes, and two pods running SQL nodes. And all are deployed as stateful set as you see over here, okay? Three of them, management nodes, SQL nodes, and data nodes. Okay, then NDB operators is also create three kind of services for management nodes, my SQL nodes, and data nodes, automatically. And we can check the status, okay, once done, we can check the status by login to any nodes, okay? In this example, I'm login to management nodes, okay? Using Qubectl minus N, NDB clusters is my namespace, and then minus exit minus IT, and then the pod, yeah, which is management nodes, and then the command that I execute, which is NDB underscore NGM minus C connect to itself, yeah? And then minus E show. Then it will show all the NDB cluster node status over there, okay? As you see over here, we have two NDB, sorry, okay, we have two NDB data nodes, okay? With ID three and four, we have two NDB management nodes with ID one and two, and two SQL nodes with ID one, four, eight, and one, four, nine. So adding SQL nodes, quite simple. So we can just edit the ammo files from two to four and execute. Okay, the next moment we will have additional SQL nodes running, yeah? Very simple. So we can show the status after adding nodes using the same way. As you see over here, we have four SQL nodes, so additional two nodes, SQL nodes. So now, how to access the SQL nodes? First, we don't need the password. Actually, the NDB operator will create two secret and save the password inside the secret, okay? Then we need to use base64 minus D to decode, okay, since the secret, the password is safe into secret as base64 encoding. So we need to decode that, and that one is the password. So I can log in to the one of the SQL node and then, you know, using the password and I can log in to the SQL nodes. Okay, from there, I can do a query, I can get the parameter, all those things using, you know, a few tables that reside on NDB info. And this one is, you know, a slide that I want to show to you that this is really active, active solutions as you see over there. Okay, I can, you know, I log in to my SQL node one and I create database, I create table, test the test with engine NDB, don't forget, engine is always NDB in order to make the table itself reside on the data nodes. And then I insert three records, yeah, using my SQL D zero. Then I query, okay, my SQL D zero and my SQL D one would are showing three records. Now I'm inserting, okay, record number four and record number five using my SQL D one, okay? Then I query from my SQL D zero as you see over here. Okay, my SQL D zero also shows five records. I mean, this is really active, active. You can connect your application to N, my SQL node. And this is the best practice, okay? We need to make sure, I need to reduce of POT affinity and anti-affinity, okay? So keep database nodes apart, cause, racks and then about collocation of instance, sharing the same data and so on. Okay, that's it. Short descriptions about the NDB clusters. Deployment on Kubernetes, I hope that you enjoyed that. Thank you so much for the time. I hope you are, can you hear me? Yes, okay. Hello everyone, I hope you all are enjoying our sessions here at Database Track. For our next session, we have Ivan Tu who is joining us live from Taiwan. He's here remotely as well. He works as a MySQL Senior Solution Engineering Manager at Oracle. He will be talking about building space-aware applications with MySQL GIS. So over to our next speaker. We share MySQL GIS and of course Azure. MySQL GIS might not window everyone. GIS, the full name of GIS, is Geographic Information System. Which is a set of conditions and systems with longitude and latitude to deal with information of the Earth's service. Actually, GIS is not new to MySQL. We have been supported when we still at 4.1. GIS uses its home-built developed code, home-developed code, a MySQL engine to support GIS. But for the limitation of MySQL and the sum of the stability issue created by the home-grown code, it was not that popular. While we are before 5.6. In the version of 5.7, GIS is implemented by a doc-boost geometry. And we support a group of standards like OGC, C4, MF, R3, but with 5.7, we can only support traditional coordination systems which are just only for S-Service. It is not related to not 100% matching with the sphere-ship of the Earth. And with 8.0, we can support the geographic coordination system that can deal with the elites of the Earth and we can precisely, we can do some questions precisely, much precisely than we used to be. And we also support geologists and data format. In addition to that, we also support the 5,000 S-S-R-S. The full name is the Special Reference System. And the GIS features are built in by D4. We don't need to install extra parties by creating information, schema, SP Special Reference System, which is a table. Actually, it is a dedication review. You will know what S-S-System are supported by the specific major instance. And the most important is that we also can customize S-S-S. For example, if you want to create your own S-S-S from a standard coordination system, and you want to change its longitudinal and the latitude position to accommodate the imported data, external imported data. The only thing you need to do is to create your own S-S-S from the standard S-S-S-S-S-System and import it into the S-S-S-S-System. So, what objects are come with GIS? First, we have many special data to support GIS, like polygon, thin line, home, geometric, et cetera. We can use them to represent variable various shapes, objects of the map. The type can be used as a color type of the table. Only in order to operate against the special data, we also add a various special function, which includes functions that convert between special data and the various data format, like a text, D-Log, for example, SD, geo-pronged text can convert where no text into a geometric data, you know, special data. Where no text is a kind of syntax to specify the shape of the object, like a line, point, polygon, or multiple polygon. And we can use S-S-S-S-S text to convert the geometric data to a text. So, let us be able to understand the context of the data. All interacted with the rest of the season, with the rest of the database. So, it will allow you to import and export outside data between the database and outside data for the special data. And there are also functions to get the special data properties such as an ST lens to know the length of a line string, and the ST SID to figure out what SID is the special data using. And then we also have a function to operate against two special data, such as ST distance to know the distance of the point ST overlap to know if two polygon overlap with each other, something like that. Then S-S, which is used to the special data. And the different S-S will come up different result with the, when we execute the same special function. For example, ST distance, we return different distance value with a condition S-S and the geometric S-S, which is considered the run shape of the service, of Earth service. And the condition S-S only take all the map of the kind of the threat service. Of course, same as the rest of the object, we can use index to accelerate the special operation for special, to create a special index. Actually, when you create a special index, actually it is create a beat, it is not create a beatry structure, it will create a archery structure. The archery structure is composed by the, which is a minimum boundary, and by what's through the archery structure, it will help us to get from us in the footer scale. And some of the special function, there are special index automatically, like ST index at the ST overlaps, ST within or even ST distance. With this example, it shows how to deal with the special data between the outside of the, between the outside of the special data, with the special data. First, if you need to store the special data, you need to create a table with a special data type. Like this one, I created a table called CT, and they use a location, ROC column. Column type is the point, which is one of the special data to store the location of the city. And it's SID is a standard one, which is the 4326. And then I use the data in the table, called here or San Francisco. And for the location column, I need to convert the window X into, so I use ST geometric form from X, the order specified SID. If you didn't specify SID, like E4 integrated with the D4 one, which is same as this one, 4326. We might not need to manually use the special data one by one. There are many ready to use GIS data sets and also programs to import special data into the database. They include a data set not created by government agencies, agencies such as the homes of various transportation department, or some of the GIS community also offers special data set. Like the street map of each country can be downloaded from OSM. The full name is Open Street Map. In my demo, I also downloaded the stream map of the Singapore from OSM, and they use OCR to OCR, which is a freeware, a GIS full name that your special data is attached in library. And it can be, it is available in a condom. So as this example shows, I can specify this to import. This example I specified the region census year 2010 of SHP, which is a shift one. And the target database is the load holster, by people, the program is the social six state. And the username, and I use a root as a username, as a user account to do the import. And the target database, that is for a target schema is GISSC. And the engine is, okay, let's do something real. So I show you the demo. I'm using MySocialShare to let you, no, I'm using MySocialShare, yeah, to show that what I have before the importing. SG schema, or SG database, and use OCR to OCR import the shift file into the SG database. The target database is at the local holster, use a root account password, and the shift file is SG and a score at mean one.shp was downloaded from OSM, and it shows the integration, the first level at region district of Singapore. After I did the loading, let's check what I get. So in the SG database, I can see, you can see that I have a new table called the map, and let's check what the table of map has. It contains five rows. Each row represent a region district of Singapore, like a western central nose, and let's check the structure of the map table. It shows that there's a one geometric column called shift. It's SID is 46, 83, which is a standard one. Sometimes it causes a problem for me. And there's also one special data, special index at top of the special column. Now, let's check what the transci can see. Let's first, I use the visor workbench to check the content of the map. So I select the content from SG map table. It shows five columns there, and when I move to editor, it shows the data of the row, the shift column that would display the map of the shift. I think this map should be for central district of Singapore. And there's a text with a shape. It is a well-known text. It shows the content is a polygam, and the longitude and the attitude of each point, which compose the area. When I move to GIS view panel, it shows a map of Singapore. Actually, it was composed by those five SG map table. It was an adjustment to map the map. Now, let's look the data graph with a different truth, which is a QGIS. QGIS is quite a popular GIS truth. Data from QGIS data, I need to create a layer that is specified as the data source, the data source database, and assigned to my secure. The table, now I pick the SG at mean one, GIS table, which is great. And the data layer, digest some information from the database and go to what kind of full Singapore map, which was composed by those five column, which another thing are from Singapore and Malaysia. Now, I also specified the shows the location of each building, actually the building table, five million. Next, I will do some kind of operation, less than one kilometers away the position, you know, the location of the line of the center. So I create a column called the data type, the point shows the side position is, use the function called the point one, location of the line from, and also at one time should be commercial. So it shows the entrance away from this place. So the result shows that there are four units at one meters away, and it's there. The last part is the key text away. This is my show, my show, it provides so many GIS features, so comprehensive with GIS features, and it follows standards, SQL, MMP3, or OTC. And it also supports multiple SIS, and you can also customize your own SIS. And with the index, with a special index, it will perceive the great performance or the operation, special operation of the special data. Because it is a follow-up standard, so most of the GIS is true support by SQL. It could somebody to or own to let the master work bench. And so GIS is totally be able to support most of the GIS information system or GIS applications. So you are free to use the GIS feature from MySQL, because it is included in the library by before, you don't need to pay extra use the answer GIS. And on the other side, it also let us be able to extend our existing MySQL application to add some location-based feature to those applications. So please feel free to try the GIS feature of MySQL, and let us know your comments or your suggestions against those features. And either contact us directly, send an email to Ryan or to Hamilton, or you can look a reporting system. Actually, it's not the middle back. If there's a feature enhancement request provided, you can also use that report to show your requirements. That's all from me. Thank you very much. Everyone, I hope you are doing a good job. So like we have our last track in our, before our afternoon break, for that in our database track, we have Oleg from Russia. He's going to talk about YDB, which is an open source distributed SQL database already used. Thank you. Thank you for having us here and for working with us here. Let me introduce you to yet another database because why stands exactly for yet another? Please give us just a minute. Thank you for patience and just minor technical issues, but we overcome it. YDB is an open source distributed SQL database and its main characteristics include that it's, first of all, it's relational database. So we provide AC transactions support. SQL Direct, our own extension for unsee SQL. We call it YQL, yet another query language. It's strong consistent database. So from CAHPS theorem point of view, it's CP in case of partitioning query tend to be consistent database. And we provide serializable transaction isolation level. Can a scale up and scale down from few servers up to thousands of servers and in production our main clusters consists of thousands of servers. Our biggest installation consists of more than three thousands of servers. This is highly available database. So we created it in order to run in multiple data centers or you can call this available zones. It's fully automatic. So under one of availability zone or data center downtime, it survives and it continue be available for both rates and rights without any intervention. And after your data center is up, everything's still working and your programmers don't see any problems on their side. So the system is fully automatic. Okay, it's mission critical database. So it works in projects with 24 seven uptime requirements and we provide running restarts and earn upgrades, changing of hardware or everything result in downtime. And we created this not only as a relational database but as a data platform provided ability to create stable, super-stistant queries and we also created a data platform to create stable, super-stistant queue topics, distributed queries and even analytics. It's 100% open source software built from scratch almost 10 years ago built on C++. And one year ago, we published our source code under the Apache 2.0 license. The whole platform SDKs documentation, everything is available under Apache 2.0. Please join us on GitHub. You can see URL on the screen or you can use the QR code. From physical architecture point of view, it's child nothing architecture and we tend to use only commodity hardware. So no vendor working on any storages or any computers, you can buy any available server, and now CPU memory, et cetera, and build your own cluster. Computant storage layers are separated into two parts so you can easily grow and shrink every of them independently. For example, let's say you have millions of transactions per second and only megabytes of data or you can have petabytes of data and single transactions per second and you can grow each layer for your workout. Main primitive of the system, one of the main primitives of the table. Tables have primary case and data within this primary case ordered. So you can easily make O-cups to this table and the main point is that you can grow up your data in the table almost infinitely from kilobytes to petabytes without any intervention from programmers or from your DBA, et cetera. Tables are automatically partitioned by primary case range. So we gather statistics about your workout, about your reads and writes and depending on if we can split it automatically. Based on statistics collected, we can split table by route, by your data amount or by your read or writes throughput. And system itself tends to put all those table charts through the whole notes, even by the whole cluster. We, our dialect, it has some extensions to unsee its song typing with main subquers. So we have a lot of built-in functions for any cases like for daytime, math, JSON, unique, et cetera. And we can find very familiar constructions in the mail and the day-all. So everything will be very familiar for anyone. Main features of the system is secondary indexes. We have synchronous, asynchronous, covering indexes. We have special time-to-leave indexes, automatically it deletes your data updates. Expert, we have table compressions and backup and restore from S3. I will continue with the features. It's encryption, at rest, and then transit. We have read replicas in case you want to increase your read throughput. Special change of the texture and how they want to keep track of your data changes or within the tables. Special JSON API with text JSON and binary JSON representation and functions to work with it. And special analyticals concurrence in case you want to do with your data result any problem with your OOTP workload, similar to Muslim. From programmers point of view, our application team creates, as far as we have public JPC API, our application team creates SDK for many, for most popular languages. We can see them on the screen. In case you want to do with your database in a convenient way, we provide user interface and call it a lot of useful features, like Debinator, like an execution, explain plans, diagnostics, et cetera. And in case you want to do with database through CLI or use it in, I don't know, any scripting language, we can use our CLI that completely colors all our API functions. We provide a lot of functionality for observability of your database. And we support mostly proper premises from out. We provide in our GitHub repository the final delboards for database. And with every cluster, with every binary we have embedded user interface and special system tables for representation of statistics and analytics of your workloads here. So you can observe your tables, your tables, partitions, your queries, like saw queries, hay queries, et cetera. You can easily deploy IDB with our Kubernetes operator or, for example, use our mini-cube for development and testing purposes. You can use it in virtual machines or just run it in bare-matter using binaries or compile it yourself. Or at least use Docker container for development and testing purposes. And I'm almost done. Yeah. And I just wanted to say that it's still working purpose. So it's quite a major product. We started our development almost 10 years ago, but we are on the way of continuous improvements. And as we saw, a lot of our clients request to be more compatible with most popular databases. We work on podcast core compatibility. So now currently we almost completed support of podcast core or dialect syntaxes. We completed support of a podcast core data types, almost all embedded functions via protocol, and we tend to be compatible with podcast core. Now, we tend to be, and our aim is to be so-called HTEP system. So both system for simultaneously for HTEP workloads and analytical workloads without any intervention between them. So we are working on our core new store. When I talked about tables, I talked about world-based store. So now we are in progress with core new store for analytical tables. We work on data tuning. So we can code down your data to most cheapest disks like spinning ones, or you can code down your data you're mostly like I use this data to street for example. So it's one of the cheapest ways to store your data. And all the stuff will be invisible for end users. So you can have one table and the table will store based on the tuning. It will stores all the data on different storages, but you can, I was in one query, just make a core like select asterisk on table with any filters, et cetera. Now we work on streaming analytics on those analytical tables. And that's it. Thank you again. Please join us on GitHub, visit our website. You can find the documentation or our materials. So we'll be very grateful if you join our community. Thanks again. Thank you for having us. So do any of you have any questions? Hi, so I just want to ask, right? So you have your own query language, YQL. So I understand the most other databases when they have their own query language is because they can't fully support SQL natively like all types of queries. So is there anything that SQL can do, but YQL cannot? We tend to be compatible with, as I mentioned before, we tend to be compatible with Postgres SQL. So we tend to cover almost all the SQL features. And we created it because it's dialect both for ROTP system and moreover for MapReduce system. So we try to cover the many stuff not only for ROTP records, but for analytics from MapReduce, et cetera. I think, okay, you have one more question. Right, hello everyone. Thanks for joining our, the Korea's Open Community Session. We are from four different communities. Can you see me? Yeah, so including CloudBank River, we want to go south, C++ Korea and Google's Korea Community. And we have only 20 minutes and we are going to talk about all our communities. So time is running out, so let's hurry. So first of all, I'm Justin from CloudBank River. So I'm going to talk about what we are doing and why we started this community on behalf of the Cloud community. So let's think about this number. Can you guess what this number is about? 52 million. Right, so I will add another number, 96 million. So can you guess this time? That's correct. So this is the total population in South Korea and surprisingly, the half of this population live in Seoul metropolitan area. I don't think this is a good idea because the rest of the land utilized in efficiency. So this is an infography has become, which has become the popular last year and which is about nine ways to see South Korea. And I got my eyes caught in the sixth one, which is this one. So this is how Seoul people see the whole country. And as you can see, at the bottom, this is the Jeju Island, which is known as Tangerine. And that's the blue one, this is Busan, which is known as beach. And can you see the red one? This is an Incheon, which is known as airport. And the yellow one is Aran province, which is known as potato. And the other place is just simply as now. That's how South people see the whole country. And I live in the area of now. So what does this mean? It actually has a sort of serious issue in terms of the information flow. So it has results in the information only stays in Seoul. So as a result, we've seen these kind of social phenomenon called digital divide or digital extremaization. So it's not the level. So all the information should be transparent and accessible from everybody. Therefore, we started this cloud bandwagon committee to let the information flow out of Seoul. But how can we do this? We cannot do this by ourselves solely. So we need to make a relationship with developer communities in the regional area, as well as student communities, right? And we have these six people for within this cloud bandwagon communities. And three of us are working as a developer which is a developer relations. And the other three is industry experts specializing in like cloud infrastructure or program language or AI or machine learning. So as the cloud bandwagon activities, we focus on these three categories because these are demand from the local or regional developer communities. First is development of cloud technologies. And second is open source technologies. And the last one is career development. So what we have done so far, we have a few, several of these sessions. And this is the first one, which was in May last year and we got the 20 people. This is the beginning. And we ran another one in July in Daegu. And this time we collaborated with GDG Daegu. And this is another one in Jinju last year. This time we work with Gyeongsang National University. And this is the latest one. And this time again in Daegu, but this time we work with local council. And as a result, we got a lot of potential from the local communities. So we just started this community. And we got, it seems to be, we are growing. But I think this is illusionary because we need to think about, we need to think about how we can make sustainability. And we still need to long wait for. So how can you do this? Please keep an eye on it. And we need your support, we need your attention. So please stay tuned at Defender of the Cloud. And we will be able to share a lot of information. Also we can open to expanding to across the whole Asian region. Thanks for listening. I will hand over to Yeonjung from Monaco South. Thank you, Justin for an amazing introduction. Hello everyone, I'm Yeonjung, AI lead from the Women's Coastal. Yeah, before I get started, I would like to introduce about Women's Cloud, which is the largest and most active community for technical women in the world. So Women's Cloud is an international non-frumped organization founded in 2011 to inspire and empower women in technologies. So our mission is empowering diverse women to excel in their technology careers. And we aim to make a tech industry where diverse women and excluded people thrive at every level. Women's Cloud started as a small community group in the San Francisco and quickly expanding around the world. As a result, we now have a strong and expanding global network with 320,000 members across 147 countries around the world. And in South Korea, we have a sole network which is the one of the most active. So I'm going to introduce about Women's Coastal. We launched it in May 2019 and currently we are one of the fast growing and leading women tech community in South Korea. Now I'm going to share what we did for the last few months. So first of all, First Asia. We collaborate as a community partner with First Asia and deliver five-minute talk and online gathering in the last year. And NAID-IT, we are providing information about different tech users by interviewing with women from a range of positions. And that's content productions. We have been creating inside first contents such as DEI, which is diversity, equality, and inclusion, and some other technical information such as screen framework, NFT, and more. So next, translations. We translated Women's Coast official blog from English to Korean so that in order to provide Korean tech papers with easy access to value of our content. And Women's Coastal on big events. We had a variety of interactive workshop and networking sessions that enables women in tech to connect, learn, and grow together. And next, collaboration with Samsung. Our leaders share insights stories such as career journey, community stories, or deep tech. And we had a networking session together with the different community in South Korea. Last but not least, mentoring session. Our leaders share their experience on front end and AI to support and empower next generations of tech professionals. So yeah, still we are trying our best to inspire more women in tech in South Korea. And in this year, 2023, we plan to organize more Assasiners programs to support more women in tech and focus on the global movements to empower leaders across the industry. So please stay connected if you are interested in me, collaborating with us or reaching out to us to support more women in tech together. So you can connect us to our official email, womenacolls.com, so yeah, keep turning your eyes on and yeah, support us. Thank you for listening and I'm gonna turn our work to Dongha. Greetings, folks. I am Park Dong-ha from C++ Korea. Let's start my part. Okay, here is it. There is a very common question we are seeing. Why you started this community? Honestly, C++ program language is quite hard to study and it has multiple standards from ISO comedy, literally, or it has two chance in one time environments. And each has some type of system and you realize, for instance, in Apple platform, you have to run the Xcode in Windows, you can run Visual Studio and in Linux, you can sort of combine multiple two changes. Most of all, the language is one of the all of this, which means the sector of C++ users is really a problem, really a problem. You may heard about the book series, Teach Yourself Something in 21 Days. This humorous cartoon describes how it actually works. Beginner will learn this language in 21 days and start the person's career for two years. And professional developer will use this language for about 10 years, multiple projects, and learn from their colleagues. At some point, you sort of start to learn physics and quantum gravity for another 10 years. And next, spend another 20 years to learn biochemistry, genetics for another two, genetics. Finally, you go back to 21st day and replace yourself. What a story, isn't it? Therefore, we are maintaining a place for people who want to make detailed questions and discussions in their mother tongue, I mean, a Korean language. We started in Facebook in 2013 because it was an easy platform to create community for years. We posted questions, discussed them in comments. Of course, Korean C++ users will stable call or there's a simple instructional. After the foundation, we focused on archiving some useful learning materials, especially for beginners, seminar, translation, and readings together. After the pandemic, we wrote our code of conduct for online activity. Sometimes open a study group in video call. Currently, we are moving back to offline, organizing some small meetups every two months, planning to open one day technical seminar, and sometimes YouTube video creation. Okay, finally, this is our recent concerns. Our first goal is to found a non-profit corporation. We need to gather some sponsors and we have to have a duty to provide some clear financial reports about it. The second reason is making it easy of compliance with companies. There are some long stories about this. If you are curious about it, you can visit our booth and share some knowledge with me. Okay, and the next one is for better communication. We are trying this board to support more instant chat-based discussions or questions rather than Facebook. Okay, this is expert listening. This is the end. Next is Ubuntu Coreality. I forward this remote control to Yongbin. Thank you. Thank you, Dongbao, for the introduction. So, my name is Yongbin, and I'm going to talk about the Ubuntu Coreality that I'm involved in, sort of, in organizations. So, there are many local Ubuntu communities around the world, and we are one of them based in South Korea, and we started our community in 2005, and we usually organize some local Ubuntu videos and activities to promote Ubuntu alternatives and radiant options in South Korea. So, we're usually active on both online and in-person. For online, we have our online forum where people can ask some Ubuntu questions like, for example, Ubuntu is not comparable with other data or someone delivers some answers need to, sort of, and we're also available. We have IOC and metrics, and we also have our public key for documenting some specific case studies for the Korean users. For the person activities, we organize seminars where people can share their experience around Ubuntu and workshop to have some newcomers to get used to Ubuntu. Since Ubuntu itself is a platform inspired by wide range of users, we also frequently collaborate with other most communities in South Korea for some joint events. So, in Euclid Asia and Ubuntu Summit, we also exchange with other local Ubuntu communities such as to Japan, Taiwan, Malaysia and much more to share and learn how they use or contribute to Ubuntu. We are mostly people of Ubuntu users but we also encourage people to contribute to good projects by participating local agencies or recording boards which is important to visibility for the Korean users. For the past few years, we've been putting many efforts in Euclid Asia, which is started in 2021 to make a place for gathering Ubuntu users and contributors from many countries in Asia. Ubuntu local community in Asia is actually not much active compared to other regions, even if it will be active because it's quite difficult to reach out. This is a success from our first two events when we are seeing many local communities back slowly. I think Indonesia government will be a good example as they are trying to reserve their community by urbanizing Ubuntu on Asia in South Korea and Asia There are many large gathering for Ubuntu folks such as Ubuntu Summit, which is formerly Ubuntu development company and there are also other many Ubucons in the other continent like Ubucon Scale, Ubucon Europe, Latin America and Korean communities also thinking about urbanizing in Korea this year. While we have been focusing on global activities by this year, we have put more focus on local communities here. Starting from representing our online forum using this course supporting regular development day, just organized by Colt Bandwagon already this year. We plan to start organizing our periodic standards and traditional workshop to gather people in person. We also continue to represent our online services like our Wiki and our online chat which is updated a bit or some new approach. As I mentioned, Ubucon Korea is also planned and also if you have any details on Ubucon Asia or Ubucon Summit this year, we also plan to participate and exchange with other Ubucon folks. So that's for the Ubucon Korea and if you would like to learn more about us you can feel free to visit our website or contact us at their email. So that's all for the Korean Open Competition if you would like to know more about us, you can schedule your call right here or we have our booth right there at your back kind of would you like to raise your hand? Yeah, you can see that. We're going to visit our booth and ask some questions about us then we can know more about us. So, thanks for joining our session. See you around or see you at the booth. Thank you for joining. Thank you for your talk and everyone enjoy the talk and also enjoy the lunch as well. So very soon in about 10 minutes we're going to have some learning talks so please thank you. Thank you. Wow, what? Here or here? Here. Here. Here. Here. Plugs into you know hundreds of different community and corporate provided plugins to let you query on basically anything we have dozens of different visualization panels available plugins where end users can create their own and Grafana Loki is an open-source logging database that can run from very small deployments to very, very large ones, ingesting terabytes of data a second. It's got a great simple query language that we'll show off in a minute, and it's got really efficient data management. You don't end up with indexes twice the size of your ingested data, so the storage costs can be very, very reasonable with a database like this. So we see a lot of open source deployments of both of these together, and I thought I'd show that off a little bit. This is one of our public dashboards that are available at play.grafana.com, which is a way of showing off what the tool's capable of, and this is a dashboard that's entirely built out of Nginx access logs. We take the sort of standard Nginx access log format and produce paneled out request rates and their various statuses, all things you might expect. We can produce global visualizations. We have a great global map panel that's available based on OpenStreetMap tiles and a bunch of other different sort of request statistics. So I thought I would show a couple of queries and how those are built. So, you know, all of your logs look like this. Just a giant string of text, time stamps, whatever random thing that your end user puts in and then all sort of in the standard, you know, Nginx log output format. And we can do some really great simple queries inside Loki to turn that into useful numbers. This just says, as I stand in front of it, sum by the host name, counted over the time interval that I'm graphing. Like you write that short simple query, just give me everything by host. You can write a query that's a little bit more complicated, filters out everything that's a Googlebot, divides it by everything that's not a Googlebot and gives you a percentage of requests that are coming from Google. Again, it's really small one-liner query that can run efficiently over the last 24 hours. Let's see how long we can go. Let's go over this last year, that fast, right? We can run a pretty big query over months and weeks of data that quick. And then we can do some cool visualization stuff based on this. We can specify what our log pattern looks like. This is that pretty standard nginx log pattern, give everything names like a method and then count it and sum it by the country code. And then our map visualization tool gets a look at that table, right? It's like country code number. It can draw these nice circles in each country based on those codes. And it can do ranking based on that same query. Well, rank me the top 10 paths. You can get all of this in a pretty full-featured nice open source tool connected right directly to another open source tool. We love to see complex deployments of that. And I thought I'd show off one more thing about how powerful Grafana is while we're here. This is all a Grafana dashboard, little doomed data source running at a very respectable five frames per second. So that's all just sort of running locally in our browser. All of those data sources are hooked up together in this sort of in-memory thing in the back end. Cool. Thanks for your time. We're right over here. If you want to talk about any of our other open source observability databases too. Thank you, Joe. And please welcome Arjun from the IO Foundation. Thank you. All right. So my name is Rohansar. You can call me John. I'm here on behalf of an organization called the IO Foundation. We are a tech NGO advocating for data-centric digital rights. And that's something that I wanted to discuss with you. There's probably one over there. There you go. So I want to talk to you about this framework we've been designing in the past years, a couple of years more or less. Can it be a little bit different or you may have seen on this kind of talks? So the idea is try to follow up this, okay? This is probably one of the nicest nerd jokes I've ever seen in my life. And the idea is that you guys are building and implementing and architecting all the software, all the technology that everyone is so much concerned about. And so the question is how these have this conversation with someone not too long ago. Well, you would like to have a career building software that is gonna be nice to people and that's gonna be not humming them, correct? Show of hands, who's the developer here? Okay, so for the most part, you would like not to build, not to deploy packages that are gonna be humming people. Correct? Show of hands? Okay, cool. So the idea is how the hell do you measure that? Not in a conceptual term, but how we actually can have a systematic way of assessing that. And that's really the problem. There's no algorithmic approach to try to answer that question. And that's what we've been trying to work into. Because among other things where it gives us a sense of purpose and how you're gonna be deploying, how you're gonna be designing, how you're gonna be architecting. In other words, in our organization, we regard developers as the next generation of rice defenders. You would want and you would love that if a piece of software is deployed in a specific jurisdiction, and that jurisdiction has a number of protections to the citizens, that those regulations are embedded into the technology itself. In other words, you leave the complexities to the experts and you just allow people to just be users. A good example of it would be, say, GDPR, for instance. It does provide a number of protections in terms of data protection for the user. But as things stands right now, everything is very reactive. What I have is the right as a French citizen. If I discovered that Meta did not delete my data on my request, then I have the opportunity to go and sue them. That takes way too many presuppositions about me knowing that they have actually not deleted the piece of data or they haven't complied with my request. And then it also presumes that I'm gonna have the money and the time, the resources to go and sue them, which is absolutely stupid. It's not gonna happen. In a properly regulated industry, any single company only competes at value preposition level because compliance is the bare minimum for you to be in the market. In the software industry, that doesn't happen. You compete at both value preposition but also at compliance level. That's a huge hindrance. So if you want to be able to have programmers who are gonna be the ones designing and implementing software that is gonna be protected by design, you first have to give them a sense of purpose. And the only way to actually achieve that is to provide them with an algorithmic approach on how they have to do that. So we've been trying to find a gap in how to explain things such as human rights and so forth from a tech perspective. So we do have an narrative. I cannot get into details right now. We also find a way to explain what's the difference between human rights and data-centric digital rights. Again, too long to explain in a very five-minute short lightning talk but we do have a way to explain this. And so we came with a concept of a data-centric digital rights framework that has a number of components upon which we are working. One of the most notable ones is those three principles to guide what is the design of the framework and the first one is I am my data. Think about it as treat somebody else's data the way you would like to be treated. It's a very simple way to think about it. There are already changes the way you are perceiving everybody else's data. Principle number two is end remedy. We tend to have regulations right now that are very remedial in the way they are done. So again, I can go into meta if they don't delete my data. The idea would be that that never happens. You want to call so that the situation of the problem never happens to begin with. That's actually a change of mentality. And the third one is rise by design. If you have a specific regulation that provides certain very specifically defined rights to a user, they should be implemented in the technology directly transparently for the user. I don't concern myself as to how the ABS or the airbag system functions in a car. That's not my business. The car goes through a number of verifications as a prototype before it gets into the market. And my responsibility is not to be an idiot when I'm driving the car as a user. So, you know, it's not my problem how WhatsApp protects or not protect my data. The idea is that I shouldn't be spreading idiots to get things around WhatsApp. That's my responsibility as a user of the platform. And why not all of that is very blur. There's no distinction between the two of them. Part of the main work is what we are doing on establishing a very specific taxonomy on digital harms and digital rights. And this is from the data perspective and something that is still very, very surprising to me. There's no international consensus on data use cases. And that creates all sorts of problems. And we're also trying to work on this. So we've been having working groups on this topic. We are currently having research on two of the areas. And we hope to be able to release some type of MVP by the end of the year. If anyone is interested, you can find us a booth over there on the corner or send me an email. Thank you so much. Thank you very much Ron and please welcome Benny. Ooh, there we go. So I am here, my name is Benny. I am here representing in the organization called the Amonix OS Foundation. If you are familiar with the Red Hat ecosystem at all, then you have heard that Red Hat has decided to discontinue the downstream version of CentOS. If you have ever used CentOS, specifically eight or seven in the last five or six years, you're going to end up having to migrate somewhere else. As users of CentOS, we love the Red Hat ecosystem and we still needed downstream Red Hat for free. So we decided to start producing it. We set up a foundation, a nonprofit that is incorporated in the U.S. And that foundation owns all of the intellectual property. It's controlled by the community. It's staffed by the community. We are all involved in the Red Hat ecosystem because we care about it. And we are working very hard to provide Red Hat for free to replace all of the people who are, to offer a replacement for people who have historically used CentOS but that want to stay with Red Hat in the ecosystem. But we also are fixing the pain that we had as CentOS users. So if you ever experienced the delay and releases for CentOS, we're now releasing one day after Red Hat. We are, we have worked with the Red Hat ecosystem community to create a project called Elevate that allows you to upgrade and migrate between Red Hat flavors in place. If you've ever had to migrate your CentOS system, you have had that pain point and we work to fix that. You are, individuals can join the foundation for free because we want people to have a voice in the future of Amonix if you care about the future of Amonix. I'm over against the wall over there next to Debian. If you want to come say hi, I'll be here all the rest of the week. And I have a talk tomorrow about open source that you can come see at 2.30. Thanks so much. Thank you, Wendy. And please welcome Brendan for who's going to talk about Y-Way Express VPN. Thank you, Brendan. Thank you. Hello, everyone. I'm Brendan from Express VPN. And I want to talk to you about two things today. First one being trusted server. You might have heard of it on the internet. I helped co-create that and it's a privacy centric operating system developed at Express VPN. And it heavily respects users' privacy and helps us ensure that we can prove to our users that we're keeping you safe online through verification and audits that have been done by third party companies. It's been extensively audited multiple times and we know it's secure and cryptographically proven through things like reproducibility and immutable builds. The second thing I'd like to talk to you about to try and link these two concepts back together is Lightway. Lightway is our internal VPN protocol. It's complete open source. It's trying to respect people's privacies and freedoms for the internet. But more so, it's a way of Express VPN starting to give back to the community. Starting to think about how we can offer new technologies to help individuals, other firms and other organizations, even nonprofits, that need to secure their communications on the internet at all times. Lightway has been also audited extensively, I think twice, and we're quite confident of its capabilities and what it's going to provide in the future. There'll also be a talk tomorrow by Peter Mambury about Lightway and why we developed it. I'm guessing most of you will have questions around, well, why didn't we just use WireGuard or what's wrong with open VPN and things like that. That talk will address that, but more so, it's just an interesting concept of how we developed it and why we developed it. So I'd encourage you to come along and have a bit of a chat with Pete afterwards or have a bit of a listen about what we got to say and how we're trying to be better community members in the open source environment and promote transparency, promote sharing this information with you guys and proving to us and you guys and everyone else here that we actually are respecting privacy, not logging things, doing the right thing and trying to be good open source community members. If you wanna know more about Trusted Server, please come find me, I do stand out a little bit, but our booth is just over here and we can talk about Trusted Server all day, I can talk about how that's secured. There's no open source component for that yet, but it's based on Debian and we use all upstream tooling so I can freely talk about that and of course, Peter Mambury can talk about Lightway. Any questions, please come and find us. Anything you wanna know about why we're trying to be better community members and what we're trying to prove and show? Again, please come find us. We've got nothing that we don't wanna talk to you about here. We wanna be more open and transparent with everyone in the community. Thank you. Thank you so much Brendan and please welcome Shahan on stage. He's going to talk about the art of image procession. Here's the image lab, thank you very much. Hello everyone, I am Shahan from Amanita at the Scolabs. So I just want to give a shout out for one of our major products in Scolabs which is Image Lab. One of the main tools, even a child can learn about image processing. So I just want to give you the intuition and what the current features and the future work of our product. So about Image Lab, it's kind of an image processing tool which is a standalone and it's an active open source project at our company's house cinema, computer and research lab at Scolabs. So it's licensed under Apache 2.0 and it's currently appeared in Google Summer of Code, started from 2020 and currently in DCI as well. So what is Image Lab? It's a similar tool as I said, motivates anyone to get started with image processing, present it in an interactive and very less code way. So it's a rapid and real-time environment before you're doing actual implementation, even coming to image processing, anything you are doing with image processing. So why Image Lab? There are currently available concept applications and other products when you come to image processing. So it's the existing methods are not beginner-friendly actually, even for the child and undergraduates for all the students. And it's a scripting I use as you know by using Python. It's kind of a headache situation for the students and there is no flow of learning. So that's basically what happens next. So how to use Image Lab? So can you imagine it's just two steps. As a first step, you just have a rough of sketch about your work kind of an pipeline. So as an example, I did it here, just you want to read an image and scale it kind of a pre-processing steps and do what just want to do finding contours in your image. So basically, this is kind of an abstract view where you have to drag and drop all of the things and you just want to do some sort of image processing or pre-processing steps. And yeah, there you go. You can do anything by using Image Lab. And it's support various kind of image processing tasks starting from image IEO and conversations, smoothing, filtering, drawing, thresholding, geometric transformation. Even image processing object detection. As you saw in the last image, it's kind of a messy UI and we improve it by using Scratch, which inspired by MIT research and more interactive and bigger and friendly way. So basically, now the current progress is on here with open CVJS and electron JS. Yep, we also provided fully documentation for all the developer guide with the application type, all for the users. And this is the technologies. And yeah, about the future work, we are hoping to integrate deep neural networks by using CAFE and TensorFlow, DNM models and also multiple image processing and parallel processing as well and with the integration and video analysis as well. Yep, yeah, this is kind of our vision to transform Image Lab to do must have image processing tool to every educational interseed. Yeah, please enjoy. This is kind of our current state of application. Implement based on blocky, JS and so. Thanks a lot. Sorry, our session is over. Okay, so I'm sorry. So let's get the two microphones together. Hope you guys can still hear me. Can you? Yes, yeah, thumbs up. Okay, so you survived this, yeah. Okay, excellent. So thank you Bella for doing this, yeah. And it's a nighting talk. So we do it tomorrow, yeah, at lunchtime? Or a little bit later, because now the people are already heading out and I see like a lot of people already heading out. The sessions are starting and we will short break here on the stage. So again, sorry for this loud noise here, right? We still all have to get used to the post-corona crowds and noise, right? Yeah, and I had a good time. So now what we have is the hardware track. For example, other people wanted to go to the hardware track. We have the database track continuance with a lot of cool talks about my S3L and Postgres. There's also like somebody talking about MongoDB. I mean, they chose another license, right? So maybe we can discuss about that. And yeah, what else is going on? What other tracks do we have today? Okay.