Introduction to NoSQL Databases

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] do [Music] i'm ready hello everyone and welcome to today's workshop we are talking about introduction to nosql databases and i'm joined by artem chabotko hello artem how are you hi ryan hi everyone very excited to be here this is going to be a great way workshop yes it will if you can hear and see us okay give us a thumbs up in the chat just so we know that everything is working uh as we expect uh cedric says we both sound good awesome thank you cedric and hello uh as i said i'm joined by uh artem he's a developer advocate and author data professional um and uh extremely intelligent man so want to give you a little introduction artem yeah um uh i'm a former solution architect and now developer advocate at datastax i worked on different problems my interests include data modeling data analytics data management in general i use a number of different databases and we're going to talk about several of them today and hopefully it's going to be very useful for you to to learn about no sql databases i think it will i think it will uh as for myself my name is ryan welford i am a developer advocate as well um as well as a front end developer and uh cassandra expert so i'm glad to be hosting this uh for you today it's not just us though we have a whole team of advocates and um and assistant uh people here that we've got you know all around the world and they're they're in the chat and they're ready to answer your questions um as well so give a shout out to them when you see them pop up in the chat uh to get through a little bit of housekeeping uh today about the workshop and the the organization um first off uh we are streaming on both youtube and twitch though we only monitor the the chat on youtube um twitch is kind of a backup in case youtube craps out on us and we need to switch providers but most of the questions and answers will be on the youtube chat so join us there you can also go to our discord if you uh type in the command in the chat exclamation point discord you can get a link um to join there you can also ask ask questions there there will be people waiting to answer questions and that's also a really good place to ask questions outside of workshop times to get more information about cassandra or any other development advice we are going to be playing a couple games today we're going to be using mentee.com this is a site that's completely free to use and uh allows us to do some some quizzes some fun games um to to learn a little bit more more about you and to to see uh what your knowledge is uh and at the end of the workshop we'll also be playing a a game for prizes so stick around for that and we'll be starting with that mentee here in just a little bit for some of the tools that we'll be using today we will be using github it is the repository where all the instructions for the exercises that we'll be doing on the hands-on portions today will be stored and you can get a link to that in the chat using exclamation point github and we will be using data stack studio uh in a docker container if you want to to to try that out for some um more deeper hands-on learning as well for our uh database that we're going to be using to showcase all of these different nosql styles we'll be using datastax astradb it is a very flexible database as a service built on the apache cassandra project and it provides a lot of tools and a lot of ways to kind of showcase all these different paradigms if you will for attending today's workshop and completing the homework that we will assign towards the end you can earn yourself a badge a participation badge that you can use on social media on linkedin just to show that you are continuing your learning and it's a really cool cool way to show that off we have a lot of different badges for all of our workshops that we do and you can go to datastax.com workshops to see what all those are and and if we're doing any uh live workshops coming up um you can complete the the uh the homework at any time and earn yourself a badge if if you uh want to do that all right with that let's go ahead and do our first mentee quiz this is a an opportunity for us to get to know you a little bit more to kind of understand kind of where you're at um in your development experience and we can cater our our content better to you so if you go to mentee.com and uh enter in the code that you see on the screen there on the top of the screen it's 7468-3208 uh and give us a thumbs up when you are are there in in mentee and you can see it pop up in the bottom right corner yeah there we go um and we'll get we'll give it some time for for people to join and we'll get this uh this quiz started all right looks like we got 18 19 people in there 20. awesome let's see how many people are watching right now all right quite a few we'll give it a little bit more time uh mentee.com christine the the website is mentee.com and the code you should be able to see at the top of the screen and also in the chat should just come up um all right i'll wait until there's about half half the people at the viewers don't want to take up too much of our valuable time i'll go ahead and get started you can feel free to join at any time um you can you can join in the middle um just be sure to be here at the beginning at the end of the workshop where we'll do a game and you can win prizes all right i can press i can't i there we go oh it's kind of covered up in any case let's uh let's get started first question is where are you from uh we are a global company we have people from all over the world and we'd like to see where our viewers are from as well it's really cool to see where people pop up all right so we're from india lots from the u.s some europe i think i see cedric in there there's someone from south africa that's a new one at least for me i haven't seen one yet all right i'm from the philippines that's awesome it's really cool to see uh everyone uh from all over the country or all the country all over the world joining us um it really uh makes us feel like we're uh reaching out to the wide audience so i appreciate it awesome all right so moving on have you been to any of our workshops before like i said we do lots of different workshops we run them every week sometimes multiple times a week looks like most of you are are new here which is great hopefully you uh you like what you see and you can check out some of our other workshops we record all of our workshops as well so if you are interested in seeing any of the content uh you can certainly find a recorded version or even a standalone on-demand version that's a little bit more streamlined but warm welcome to everyone who's new and welcome back to everyone who has been with us before yeah thank you for joining next question is what is your experience with nosql databases so far have you never used them less than a year one to three years and so on looks like most people uh have never used them pretty expected it is an introduction uh workshop so that it's expected what's up you have a couple of people who are have have used it more than five years maybe you can help us answer questions fantastic awesome all right have you ever used apache cassandra or astrodb if you've been to our workshops before you are most likely have used uh both of those astrodb specifically um but astra or apache cassandra is a nosql database that's a um a certain flavor of it and actually db is a database as a service built on top of it so awesome so if you've used astrodb then you've definitely used cassandra right all right so i assume it looks like the same breakout as whether you've been to our workshops before so that's yep expected there is a strong correlation there yes strong correlation you are the data scientist aren't you all right well thank you so much uh for answering those questions it really helps us kind of understand our audience a little bit better keep menti open because we'll be using the same um the same room for our game later where we'll be able to win some prizes so you want to be able to get to that quickly so that you don't miss the first question or you'll be at a disadvantage all right with that uh go back with that i am going to hand it back over to artem for our main content he's going to talk about nosql databases so take it away artem yes thank you ryan great introduction so we only spent 10 minutes on that organizational part and we have all the time we need to focus on the meat of this presentation what is no sql and four types of nosql databases tabular document key value or graph so the exciting part here will be that you will be actually you will be able to try those databases you will be able to create a tabular database insert some data and retrieve some data similar for document and key value and i will do a demo along with you so if you prefer to watch a demo that's fine i will be helping you to get started but you will see it's going to be quite easy in five minutes you will be able to load a few uh insert a few rows in in a table or a lot of few documents and and be able to create them okay so the first things first introduction to nosql so in general since uh most of you new to nosql and probably to relational databases and other types of databases i'm gonna give you an idea what those are so in general a database is just an organized collection of related data items they are related because they belong to specific enterprise specific domain specific application and sometimes also by database we when we say database we refer to database management system which is just a software that is able to manage our data collection it knows how to write data how to read data how to index data and things like that so it does some operations for us okay databases may have different data models and and by data model these are some of the types of different databases that we know of uh historically so in in 1960s long time ago we had navigational databases that that were of two kinds hierarchical and network databases and you can think about those as really like a hierarchy right like a tree or network is more like like like a more like a graph so that was the beginning of databases so there were no good creative languages each time you have to retrieve data you would have to write a program so they were kind of difficult to use work on large mainframes and things like that so um not many people had access to those now in uh 70s there was a burst of relational databases and that the relational databases are still here they are very popular and and one one of the reasons why is because they were standardized there was relational algebra there is a structured queer language and things like that so that's probably still the most popular type of of databases and there are a couple of uh for um uh online transaction processing there are role oriented relational databases for analytical processing there are there are column oriented relational databases but we're not gonna need to go into details there then in uh 80s i believe there were object databases they they were trying to resolve the problem that relational databases had they had the mismatch of data structures in the database versus the application and they didn't become very uh popular so the next one the the truly popular one we we have no sql databases or no sql databases that we're gonna introduce today and talk about them and we'll try them out so there are four different types uh tabular a white column document key bailor and graph and finally many databases right now support multiple models so we this is classification of databases by by data model so many of them actually support multiple models like the one we will use actually supports three different data models and they're called multi-modal databases now databases by deployment model we have single machine databases we have databases that work on clusters of machines so these are distributed databases we also have databases that are deployed on premises so they are basically working on in some data center that belongs to an enterprise but there are also cloud databases that that are deployed to public clouds and those can be deployed on virtual machines or they can be actually databases as a service so essentially the um the the database is provided to you as a service you just using it you may not even need to operate it and manage it so there are fully managed services and the best you can get is a serverless or auto-scalable database in that case why it's the best is because you don't you basically don't need to worry about any operations there and if you need more capacity it will be automatically scaled for you if you need less you're using less you have less number of writes and reads then it's going to be scaled down automatically for you so you're actually saving money by using serverless database okay so why not relational relational still the most popular database and but they have pros and they have cons one of the biggest pros for relational they they have been here for a long time and they are well standardized they have a great foundation that is helpful to create powerful optimizers and things like that so they have they are based on relational model they have relay like formal relational algebra and calculus that is used in query optimization they have minimization theory and then finally the most important thing probably is structured query language so it's a standard language it has multiple standards that are being revised and features being added to it uh besides that it has acid transactions if you need the databases maybe you never heard the acid it stands for atomicity consistency isolation and durability so these are transactions that is exhibit those properties which are important but we will not have time to discuss them here today also relational databases are frequently referred to as integration databases that are shared by many uh applications so that's that's somewhat different than nosql database we'll talk about that soon disadvantages of relational databases they were designed to run on a single machine and scale vertically and normalization c relational algebra very powerful tools sql very powerful language but it was designed to have all the data together so you can quickly uh join or union or intersect the data and get an answer so this is not the so they they will be harder to scale horizontally on a distributed cluster another problem with relational databases is so-called impedance mismatch between the relational data model and app application in memory data structure so essentially we have tables versus we may have objects classes in applications so that that another um issue that we have is relational uh so why no no sql why these databases actually came to existence primarily because of the uh the sound performance and scalability challenges that when that relational databases were not able to address they were too slow to deal with large volume of data high velocity of data and different kinds of data so which is variety of data so we we have this big data and cv as one of the reasons why it was there were new kinds of databases invented to deal with those challenges and we needed to go from single machine to a cluster okay so the data volume in zettabytes shown on this graph the data grows grows pay quickly these days um just to give you an idea one zettabyte is gonna be a billion um terabytes okay and we can see the it's it's not a linear growth based on this chart so the the amount of data grows quickly and we need technology to be able to support that growth to be able to store the data and feed it so the nosql term the regions of this term so it came to existence in uh 2009 when there was a meet up as a meet up name and and hashtag to denote or to refer to databases that at that time didn't were not relational model based and didn't support sql so that they were non-relational databases and they they were big table dynamodb that that still exists today and and in use and cassandra mongodb and others okay sometimes nowadays uh the we refer to no one interpretation you can find is that no sql stands for not only sql because many nosql databases now support sql and this but not only sql uh also may kind of mean that that even relational databases can support uh sql and some other query languages they frequently support some some kind of uh graph language or possibly even even some api to deal with json documents and so on so what is really no sql the term maybe not the best term but think about no sql databases as databases that can meet high growth challenges and these are the common characteristics that you can find about them non-relational data model run on clusters they globally geographically distribute it so meaning that you may have a data center uh in in indian data center in united states and that data center to two of those data centers they constitute one cluster that runs that that database so the data is distributed across geographically globally and and so on highest throughput they can handle large number of transactions okay also horizontal scalability so you can basically add more nodes to your cluster and you will have a better performance you are able to handle larger amount of transactions or store a large amount of data so they are also frequently based on open source or open source systems and they are bound by the cap serum that we will mention soon okay we'll briefly talk about what it is so relational versus nosql relational has a standard relational data model and and language sql nosql has variety of data models so we're going to talk about tabular document key value and graph and there will be different languages and apis we can use for those then relation has asset reductions no scale usually has lower guaranteed transactions like like sometimes you can find them they're called lightweight transactions or other types of transactions now relational is is an integration database multiple applications will use that database will store their data in that database and they're not necessarily intersecting but no sql is usually application database so it means that for each new application you may create a new database instance and it will handle data for that application only okay so relational design for single machine no sql design for a cluster relational hard to scale they scale vertically so you you create create you have a larger machine each time you add more memory more cpu more disk uh no sql easier to scale because you simply add more machines into your cluster okay and finally nosql is usually better in terms of database application compatibility now uh a few brief words about the cap cap serum so we said that no sql usually bound no sequel database is usually bound by the cap serum what is this capsule so kept syrians state that there are these three properties consistency availability partition tolerance and a distributed database can only have two of them so it can pick two of them it cannot guarantee all three of them uh and because so because the uh we're talking about about distributed data is working on the clusters they usually all choose partition tolerance as one property partition tolerance means that okay you have 10 nodes in your cluster and and one of them is not available or maybe several of them due to maybe network failure or even just not failure so in that case will your database continue operate if you lose some notes or they become in responsive or they they the connection to them is lost will will your database still operate or not so because we are talking about databases working on clusters partition tolerance usually something that that database chooses and then the second property databases choose either availability or consistency so availability refers to database will always respond but may sometimes give you a previous bailor or stale bailor for for your data so why would why would it do that for example if you write in your data you insert in your row and the node that you inserted it to maybe something went wrong it was it got disconnected it's no longer response so you cannot retrieve that latest data from that node so you will be able to data from another replica node so that's kind of the trade-off of using availability trading consistency for availability so you may not always get consistent data they sometimes we say they eventually consistent data and the other consistency the other property so you will choose uh that one if you want to make sure that you always get the most recent data or an error so if you get an error means your database is not available so you're trading availability for consistency so given this um these are some examples of nosql databases that work in in uh that peak for example they're called pa they they choose partition tolerance and availability like the one we will use today as 3db and cassandra and dynamodb and and others versus there are some that use cp consistency and partition tolerance like mongodb and radius and big table and so on okay so this is maybe a little bit more than topic for it for the intro but now you know that there is a cap serum that is important in in the nosql world so today we're going to use this database called astradb it's it's going to be a database as a service service in the cloud uh and it's serverless it's out of scalable it's state-of-the-art database uh so essentially there are no operations for you besides maybe being an administrator doing like security operations but you don't need to create a cluster you don't need to worry about adding nodes maintaining those nodes in the cluster maybe decommissioning nodes and things like that all of that is taken care for you and behind these things today you will get three note cluster if you're gonna exceed the the if you're gonna use it uh a lot and and will exceed certain thresholds then automatically nodes will be added to that cluster uh and and once you once you uh once your workload uh becomes smaller the nodes may be automatically moved to your cluster so it's a great database which does everything for you in terms of the operations but you still have to worry about how you're gonna model your data are you gonna what api you're gonna use for your to to uh for your application to interact with database and all of that so it's it's multimodal uh it works in multiple clouds it can work in in google cloud in in amazon and also uh azure clouds and and others then it's supports tabular document and key failure data models that we're going to use and it's based on open source apache cassandra so today it's so the database is going to be free for you to use as long as you are not using 20 million operations per month so you get the each month you get 25 uh credit and that's enough for you to basically do around 20 million writes and reads into that database so we are not going to going to exceed that in this workshop and you're not going to probably exit unless you really deploy some application that does a lot of rights and reads so we're going to use cql console which is one tool that uses cql to work with our database and the other tool will be sweger ui which we will use to work with json documents okay there are other interfaces and for the sake of the time i'm not going to talk about them yeah but if you want to learn more you can always go to so done with introduction now it's time to try this database and to do that you can go to this link and follow the instructions on how you're going to create an empty database first okay and i'm gonna and currently show you how this can be done okay okay so that link will bring you to this document read me on github okay and this is the first hands-on that you will be doing okay and i can i can do that with you as well so the first thing you need to create an aster db instance okay an answer db instance so i'm going to open it in the new tab what am i getting here so i can either sign up or sign in okay sign up or sign in in my case so you can you can sign up with your google account or github account or you can register using your email okay so in my case i already have an account and i will sign in with google and this is what kind of ui you will see you will have the current plan free so there is no need to use credit card you will not be charged or anything you're gonna just use it for free and the next step you need to do you can create serverless database okay give it a name based on our instructions we want to use workshops as a name and the key space we want to use will be no no sql one okay the second step you can select the public cloud that you want to use for and uh to where you're going to deploy your database so i'm going to select google cloud i'm in north america so i'm going to select probably closest to me will be virginia us is 4 and i'm gonna create database so what happens next i actually do have two of them workshops databases one i created before but they have different ids same name different ids so you will have your database will be pending and at some point it will become active okay so i'm gonna wait for you to let me know if you have any questions or if you were able to complete this simple hand zone so we we're just creating an empty database and we will be able to add data to it later so the question i have what does serverless data really mean so the data is stored in a database a database software runs on a server right so the when we say serverless database we're saying that that server is hidden from you so the the server is fully managed by the system and you don't know whether you have two servers three servers where your data is is stored and serverless also refers to also comes frequently with automatic scalability so if you if you need to um have one million transactions per second you may need to have four servers but if the workload increase increases to 2 million you will need to double amount of servers so that is done for you automatically behind the scenes that that's what all the scalability means you're not managing the service those servers so it's not really serverless data it's serverless database okay there are also serverless compute also serverless compute that uh allows you to deploy an application deploy code without managing the server you don't know what what kind of server is used for that and and it also can other escape now uh my database is active hey artem yes we're having a question a request to go over the database creation steps again okay so once you sign up you have this create serverless database button here so just click it and then select the database names in our case this will be workshops and the key space we want to use and you should use the same one because uh our instructions the code we will provide we will assume that you're using this key space so key space is just like a like the collection of database schema we give it a name that collection will create tables inside we will create document collections inside and things like that and then you need second step select the cloud provider so you can pick whatever you like and probably google cloud seems to have more three again these are three regions that you can use uh but the the for the paid version there are more regions so i in my case the this one is the closest i select it and do the create database and that's it okay that's it so now i have three workshops but they have actually unique ids i will only use one of them for this exercise um for this workshop so you will have pending it will turn to active soon again the instructions are here you can always do it after the workshop for your homework so this is pretty simple okay so in this workshop we're gonna use four different types of nosql databases one of them is tabular the other one document keybailer and grab database see firstly we will use astraydb the one which we just created empty database there and we're gonna use it for tabular data and keyboard data and so on okay and for the graph database we will use data stacks graph so it's it's not part of aster tp it may become in the future but uh i will probably show you a demo which will be an easier because the the this is not the database as a service okay so also for all these four different types of databases i'm going to use um the uh the same example so imagine we have users that have each user can have multiple accounts an account each account belongs to exactly one user user is uniquely identified identified by id has name and email account uniquely identified by id has type and balance so three different different attributes very very easy three different attributes four user and three attributes for account and user can have many accounts account can belong to each account plus the one user so this is like our schema actually it's it's the model that's a data model con called entity relationship model so it's very generic now how are we going to store this right in in different types of databases we will also use these data we have alice with this email and bob with with bob example.org so we have two users alice and bob ali alice has checking and savings accounts with balance as 2500 and 1500 and bob has one check and an account with balance one night so we have three accounts two of them belong to alice one belongs to bob so this is the data we are thinking about to use and how we're gonna uh store it in a database if you're familiar with relational databases then you know that you will probably create two tables to store the data one table for users okay where you will store user id username and and user email we have alice and bob and you will store three accounts in a different table called accounts so we have uh three two checking accounts one saving accounts but there will be also reference to the user that these accounts belong so this is called foreign key in relational database if you're familiar with that so essentially this user id connects to this user id and that's that's what allows us to join data so this is how you will do in relational database okay but what we're interested in today how you're going to do it with tabular database how you're going to do it with document database how you're going to do it with key value and graph so the same example we're going to use to model that data in four different types of databases and we are gonna use hands-on we're gonna use exactly the same data in our hands-on so let's start with tabular databases okay let's start with tabular databases so the data in tabular databases is modeled and stored as tables there will be columns and rows however these are a little bit these tables are different from relations or tables in relational database because these are usually denormalized tables so they nest data based on how the data is related so that we can retrieve that data together with one single request and that's going to make it more efficient we don't need to join data from multiple tables we're going to store it together and we will retrieve it very quickly and efficiently so that's why they can scale and perform so there are primary keys partition clustering keys there we will see an example in hands-on there there may be indexes and materialized views and all of that and the queries that we get we're going to use uh will be sql-like queries but we we they will look like sql language structured query language but they don't have joints they don't have uh for example the they buy the i wasn't one right no union no there's no difference and things like that no nested nested queries okay so the efficient access pattern there is to retrieve one row one partition subset of rows from one partitions and things like that the use cases uh for these databases they are general purpose databases just like relational even so the data is modeled differently um so there are many similarities in terms of use cases where use relational database usually can easily replace it with with tabular database some examples would be just transaction processing real-time transaction processing iot time series content management e-commerce we have we had just recently three different workshops on e-commerce that you used these type of features so here in this example we store in all information that we have about users accounts in one table okay so we have user id name of that user okay and and well email is not here just uh uh we didn't retrieve it just but then uh there is also account id account balance and and an account type so all these information stored in one table this is how we can retrieve information for just one specific user id so select account type account balance from accounts by users where user id equals something so given user id we can retrieve all information about all accounts for that user we are not doing join between users and accounts there is only one table to manage this data okay so this is how this table will look like okay we have the all of the now email is present here as well what you can notice that this user id and in the previous example too so there is a strange combination of digits and letters there so this is so-called uuid so this is universal identifier that is frequently uh used in distributed systems to guarantee uniqueness so it's generated automatically uh and and it guarantees uniqueness there are different types of uad you can read about them if you interested similar the account id is also another uad what we can see here this user has one it's not stored twice actually it's stored one one time and has email is stored months as well but then so it's basically the user id defines a partition with multiple rows okay and in this case we have two rows one row for each account of this user okay so we have the monroe for each account of this user so a savings account checking account and uh basically we we nested our accounts in into the user partition so how is it done in practice okay again we will go back to our hands-on okay let's go back to our hands-on here and we'll do this second hands-on for tabular databases okay so so the first part here we will simply so we just create an empty database with key space no sql1 and the first part will be to describe that describe the key spaces and find that that key space that we have so so how are you going to start okay i'm going to go back to astra db okay and we'll select my workshops database okay and we'll click on the secure console so that you can see there are multiple tabs here we will use connect tab today we will use the cql console today as well so in at this point we're going to use cql console which is basically the shell web-based shell that allows us to interact with our database and the first interaction again the first interaction we want to do here is this describe key space so i'm gonna copy it and execute so you can see there are multiple key spaces already in our empty database the one that we created is no sql one all other key spaces are essentially uh needed for the system to function properly okay simple enough right simple enough so we're gonna use this key space that we created okay so let's go back to the instructions and we are going to create our first table but notice before we create this stable accounts by user okay before we create this table we also have the use no sql once statement which basically we will select our key space as a default key space that we will be working with so copy this insert so what are we creating here what are we creating we're creating table called accounts by user with these columns user id with uuid data type account id uid account type balance type account balance username user email so these are data types text decimal text tags but also there is this special keyword static which tells that these two columns username and user email they are shared by all rows in this partition so essentially we have the partition a primary key defined as a partition key user id and account id so partition key allows us to tell the system that the data should be distributed based on this partition key it should be partitioned based on the failure of user id but then rows within the partition should be identified by the clustering key which is account id okay so looks very similar to relational table but it's different because it's distributed it's partitioned table essentially so what what's next okay at this point we can describe key space and make sure that the table we just created exists and indeed we have the information about our key space and replication factor and and and uh strategy uh which we're not gonna go into it and this is our table and you can see there are a bunch of other things added to it these are all different settings that we don't need to know about today but this is our table just the way we created this table okay so what's next we're going to insert some data in essentially we're going to insert three different rows and these are our users and and accounts we we're going to insert account for savings account for alice checking account for alice and checking account for bob okay so i'm gonna copy this okay insert the data and of course i want to retrieve that data and see how it looks like now okay so just like in the slides we have these three different rows and two partitions so there is partition for two accounts for alice partition for alice this this failure alice and email is north is not stored two times actually shared by all rows in paris so it actually stored once that's why when we were inserting the second time we did not specify we specified the account information but we didn't specify email and name for alice okay so but of course this query will retrieve everything from the table is not the most efficient period in fact in production you should not use this feeling the queries that you should prefer are the queries that retrieve either single row based on primary key like this one so we selecting information about email account type account balance from our table where user id is known and account id is known so we essentially retain information about one specific account and this is very efficient pretty now okay it's very efficient key it just goes to one specific row another type of efficient quiz will be retrieving one uh particular one specific partition like in this case we're going to achieve partition for user with this id i believe so this should give us two accounts for alice essential okay so again two rows from that one partition for user alice okay and yes so this is where we created a table that stores both users and accounts in the same table instead of creating two tables and we inserted three rows and we are able to create that data very simple if you know relational databases you kind of see that the syntax is familiar you deal with tables there are also indexes here um there are there are materialized views actually no no not in this version but there are indexes that you can use to index your data to create based on index as well right now the query the major differences that you can only create based on primary key columns but you cannot for example create a base and user email or username or or account balance but if you index those columns you will be able to do that okay but this is an intro we're not going to the complex stuff right so i'm going back to my slides okay so the language that we just used for the with tabular databases is called cql cassandra query language so that's one of the questions i see in the chat so the next type is document databases what are those document databases well document databases they store semi-structured documents uh usually json documents uh and uh the they are frequently referred to as schema-less databases but it's more of a marketing term uh because schema of the document is embedded in the document itself that's why it's called semi-structured it's still structured schema is a structure so it's a it has schema but it's more flexible it's semi flexible right semi-structured and sometimes basically the schema is embedded into the document the json document will have the attribute names will have data types like arrays uh so uh the you you will read that data you will read the data along with schema so it's sometimes called uh called referred to as schema on read okay but indeed you will see uh there is some flexibility with the schema and there is some advantage that you don't need to think about rigid schema with data types in advance you can simply insert something that you have in terms of json document and it's going to work but of course how you structure your json document will be important for the final product of course you still have to deal with schema and and data model so the the queries that i use there you will either create a document by id or you will create it based on the fields or attributes that are part of that document okay so the the use cases it's also kind of general purpose database with flexible schema it provides excellent mapping between database and application data model object json document and there are many libraries that lets you do the serialization and deserialization things like that um so content management catalogs mobile apps and and applications like this okay so what we're going to do so here's an example we have the users as a collection of documents and there are two documents json with id a json with id b and um we're gonna create them based on we want to find a document where there is a name attribute with a field with a with a name name and the failure this so this is how it may look like uh in mongodb master db and we're going to try astr db just now okay so you will be able to execute that specific query so these are this is for our running example the that document data model will look like this okay so we have the id of a user name of the user bob email and then accounts will be array with in this case with just one um one element where we have the id of an account type of an account and balance in case of alice we have an array with two elements we have the checking account and we have savings account so quite easy but also what's common between these and our tabular example okay the the common part here is that we still nested our accounts into user documents and remember we had the table accounts by user so we nested our account rows into user partition it so there are similarities and and when you decide how you're going to necessarily you still want to think about how you're going to retrieve that data what types of queries you will use and so on but anyway for the introduction we're gonna work with those two documents in the slides and we're going to insert them into our database and uh retrieve them okay i'm going back to part three of the hands-on okay okay so if somebody having an issue with the uh creating database maybe try a different region just create a new database okay so somehow i just i just created in front of you two of them i didn't have any issues so any case anyway so let's uh look at our document databases look at our document database section and so there is an optional part here so the cassandra and astrodb does support the json queries so you can i'm gonna you can insert your json directly so we can insert into our table accounts by user as json and we will be able to achieve as as json as well so this is one approach but i'm gonna i'm not gonna talk about this approach i'm gonna skip it as optional and instead we will use uh swagger which is a tool that supports document api for for our aster db uh database as a service okay but to be able to use swagger you will need to have you will basically need to be able to authenticate into astra db using a token okay so this is something that you so you will first need to create a token and use it to be able to connect to astra db using the swagger application and swagger application is a web-based application so it has web ui you don't need to install anything and all of that so so the first thing we will have to create a token so let me show you you can follow this link how to create the token and token again is just basically for security for authentication uh reasons so this is i'm gonna show you how to create a token really quickly it's not gonna be so in um i mean i'm gonna go back to dashboard so it's gonna be a simple procedure and it will hopefully save you a few minutes of reading the document if you just follow carefully this simple procedure i'm gonna go back to dashboard find my database here and click on this three dots and click generate a token okay to generate a token okay so here i'm going to select role for that token and i'm going to use database administrator and click generate token okay now this information is a secret information so you should not share it with anybody else and and i unfortunately have to show you but i'm gonna copy this and i'm not going to and i need to download it and be able to reuse it later as well so you we will use it in multiple requests so i need to have it handy so one way i can probably um just open another tab okay so i still have my token available here i can copy it multiple times but what i will do next is still follow these instructions i'm gonna go to the go to the connect section and find swag swagger ui so i'm going to my workshops database and go into this connect tab okay document api is the first one and this is the link to launch swagger ui okay so um i'm getting the message that we're maybe going too fast so i'm going to do it again okay for this hands-on okay for this hands-on so let me go back to astra db okay so for this hands-on we're going to create a document database using the same database as a service we're going to use document api to insert documents and retrieve documents so the first thing i need to do because i'm gonna we're going to use the um swagger ui which is just the web-based tool that allows us to send requests to our database so it's our client that base client that's gonna interact with database but we need to authenticate to that client basically we need to log in with that client right so the um the thing here is i need to first create a token security token authentication token to be able to authenticate and the the process is very simple right once you on this dashboard page dashboard page okay you can find your workshops database and click on three dots next to it and then choose generate a token okay so i'm gonna give you a few seconds to find that generate a token link then you click on generate a token you select so this is this is called application token okay and you will select the role that will be used for authorization so essentially what what what kind of privileges will that token come with in our case database administrator that's a lot of privileges okay you can see the these permissions for the permissions for this role okay and i have a bunch of those tokens some of them are used with services applications and some of them are just for were created to do demos like this so i'm going to click generate token and this is the the token itself okay so i'm gonna copy it at this point i'm just gonna copy it and i'm not gonna either you can download this token or you can just keep this tab open okay keep this tab opened but don't share it with anybody i have no choice i'm sharing the screen but don't share this information with anybody this is this is a secret that you that like like a password think about it as a password but generate it for automatically so now we're gonna so now what you can do is you can so one thing i will not close this so i can go back and copy it again so i will open another tab and close the previous one another tab with astradb and now i want to find my swagger application client so i will first select my database go to connect tab in the connect tab the document api is the first one and the launch and swagger ui is right here okay so this is a link for you to launch that ui you can click on it it opens in a separate window so essentially this is a web-based client that will interact with your database now okay let's go back to instructions and the first thing we want to do is a create create a new empty collection okay and that collection will have this name it has will have name users okay so what we need we need to find the the endpoint api endpoint that looks like this in in swagger so it's b2 namespace create a new empty collection and we will specify namespace which is equivalent to key space it's no sql one and then in the body we'll say this is the collection we want to have so in swagger i'm gonna look where where this empty collection is and here here it is create a new empty okay create a new empty collection in a namespace okay now remember the token each time we send a request it that request needs to prove that it has permission to do something in the database that's that's the role of our talking so i will click try it out first to be able to edit these fields this is my token namespace id is no sql1 should be the same for you and then then here we will need to say that the it's going to be the name of this collection that the collection of documents is going to be users okay so after it after you have these three values again this is the this is the second endpoint in the swagger ui so at this point you can just execute execute so now request is being sent from this client to to your database okay and you can see the response for this request it has code 201 what does it mean you can look below it and you have all basically the map the the legend for all the responses 201 means it was created so there were no issues if you didn't have the correct token you would get unauthorized or you didn't have the permissions um and oh and there are other responses where you would get errors if you get 201 then you created your collection successfully okay so this was the first one and we need to execute a few more so let me wait a few seconds for you to catch up because i'm gonna go a little bit faster after that uh it might be helpful to uh zoom in on the the web page especially on swagger ui the font is somewhat small i'll make sure that people can can read it yeah just command command plus circuit yeah perfect that's good okay thank you of course so the question i got all data of a user on the same partition indeed that's the case for our tabular example it's going to be the case for our [Music] document example on the same partition okay so anyone having issues with the swagger anyone is successful okay okay so i got responses done yes successful success great so we can continue with the next one the next we will create new document and this is the end point we need to find create a new document in specific collection we will specify again namespace no sql1 users as a collection and this is the body of the document okay so let's look for this again in swagger i'm gonna create a new document okay so this is the fourth one st so try it out is the first thing i will copy my token i will use no sql1 as as namespace collection we just created users and now i need to add json documents so at this point i will have to go back to instructions copy my document this is for bob okay and i will insert it here okay again this is the force endpoint token key space namespace collection we just created and this is the sample document that is the same document we used in the slides the order may be different but the data is the same okay let's execute the the response we got is 201 what is 201 201 means created good and the response body has the document id okay so this is the document id we may be we need me we may need to use to retrieve the document so we may download it we may do something with it okay at this point we don't need to do anything let's look at the next one the next one we will create the second document so i'm gonna copy this second document for alice go back to swagger ui and i will simply replace so replace my previous document with the new one and execute again so second request collection namespace token is the same different documents execute and we got the response to a one and different document id okay very easy okay very very easy similarly when you develop your own application right now we're using web ui a client with web ui but when you develop your own application you will simply you will have similar types of requests that you will be sending and you will be getting response okay so let's retrieve document by its id we're gonna use get end point which looks like get a document by document id okay so i will need this document id okay i will copy this the document id i got for ali's document i will just copy it here so i can reuse it okay i will look for the get so it's gonna be somewhere towards the end i believe oh no okay get a document so it's somewhere in the middle it's a hard to see once i zoom zoom in no it's actually towards the end um get a document by document id so i will i just copy the document id i will click try it out document id i need the collection which is users i need the name space which is no sql one and i need the token so i can either find it in my previous requests like the uh this one is the the second one we used so there is still my token preserved here and i can use it or maybe i can go and copy it again from here which i'm doing right now okay so still using token okay and that's it we don't need anything else at this point we just retrieving based on the document id okay so let's execute so response we got is 200 which is okay means okay and the response body is our document for for alice for user alice so we have both accounts with all the information okay and that internally was retrieved from one single partition okay so retrieving by document id is very very efficient access pattern but we also want to be able to find document based on maybe some field so first what we're going to do we will retrieve all documents in the collection which is not super efficient access pattern but we will just showcase to make sure we we have both documents inserted into our database search documents in a collection that's what we need to find let me minimize this so this is actually the third one search documents in a collection okay try it out still same token namespace id is nosql1 collection users and execute okay so response is okay and these are two documents in the response body two documents that we inserted one for bob another one for alice hey artem can you point out where the document id can be found um some folks are having trouble finding funding so once yes so once you insert so document id for example this latest request i executed this is the document id and this is the second document id okay but also once you after you inserted the document okay let me close this one after you insert the document in the in the force endpoint here api call after you inserted the document if you look at the response this is a document id for that document okay this is document id but your document id will be different than mine documented so you need to look at your specific response body yeah so so this one is most uh longest hands-on but we are getting close to the end so the the final one i believe yeah so we retrieved all the documents and the final one we are going to still retrieve all the documents where there is this condition name equals so we are searching based on the name field and it should be equal to alice we need to retrieve one document for alice so we're not using document id here we're going to use the specific field so if we go to the swagger again the previous one we search document all documents in the collection relative all documents from the the collection so i already have the my token no sql one namespace user's collection and now for the where i'm going to insert this name equals alice okay execute and the response is okay 200 and i'm only getting this document where name equals alice okay so we were able to create a collection empty collection insert two documents and create those documents by document id or retrieve all of them or if all of them were name equals alice in our case that's just one document document okay okay so we finished the hands-on and we still still have a couple more to go so um i'm gonna i have to continue at this point so key value databases keyblade databases um probably the simplest type of databases and and they essentially they store key value pairs and and uh the values can be just simple literals they can be collections like sets or lists or maps they can be just blobs they can be json documents so you usually don't look inside of the the evaluator but unity based just based on the key okay so you look your lookups are based on the key and and you may even have a sql like language but it's it's it's going to have a limited capabilities how you can do that so the use cases are uh the where you gonna retrieve have very simple and efficient queries just based on the lookups based on the key and and and uh most likely nothing else so maybe you cashing something and you retrieve it based on the key maybe having user session maybe having the documents for users and you're not going to create a base on name in field in the document but you're just going to create it based on the key and nothing else okay so they are much simpler and essentially in our example you may have the users as a users were where you table or users underscore kv table and you will be able to store key failure pairs for information you have about users and accounts you may actually store for alice you may have a blob with all the information but bob you may have the blob with all information but there are other ways to do it as well i'm going to show we are actually going to use a little bit different way to do that so here's an example how you made a tip data for react which is one key value nosql database this is how you're going to retrieve for key with name alice from bucket users underscore kv for astr db and cassandra is going to be example will be look like sql query select value from users underscore kv where key equals alice so this is one example how you going to um be able to model the same data for our alice and bob users and their accounts okay so we basically went to the lowest level of granularity we could have modeled is as key being alice id or user id and everything else is stored in a blob but here we actually broke down to uh individual failures so we we can retrieve for user with this name with this id we can retrieve name it will be alice we can retrieve email it will be alice at example.org we can we can retrieve accounts in this this is a set of two account ids okay and so on and then we you also have the accounts stored here account with this id this type so this is the whole literal is a key and this is the value checking and this is the value of for balance and so on and so on okay okay so [Music] i'm gonna we should be able to complete this hands-on really quickly because this is the simplest one you can so what i will do i will go back to my actually the token and because i exposed it i'm going to delete it right away okay i'm going to delete the the previous one too because i exposed it as well okay so and now we can go back to dashboards actually yeah select your database again for this exercise and let's go to cql console and we will create in our nosql one key space we're going to create table users underscore kv with key and valor columns so i'm going to copy insert we have the table i'm going to insert all those values you saw in this slide remember user id name and then developer is alice so exactly the same data you saw in the slides and now i will be able to create for example i can retrieve the information for specific key in this case it's account with id and we are interested in balance okay so i'm getting these value and there are other but uh we don't need to go through all of them but essentially yeah let's let's actually execute let's say keep everything from the table so you see that it looks just the same way we showed in the slides so all our keys all our values okay and basically you will retrieve and you will update and you will insert based on the key so there should be it should be very straightforward so we can i think move forward without finishing the rest of the there are a few more statements you can try on your own but essentially each time you're gonna deal with a particular key and you will either update the failure or you will insert or you will delete or you will select okay so quite straightforward okay that's good and so the last type of nosql databases we'll talk about is grab databases and this is probably the most complex a complex type because the it involves a lot of uh the data structure is the most flexible but also kind of uh most uh complex uh in terms of how you can use it how you can quickly traverse it and all of that so the graph is is is very very flexible versatile generic data structure can you can model anything with graph basically there are vertices there edges and properties so the properties are attached can be attached to vertices and and to edges and they basically describe those vertices and edges right and there are different types of graphs property graph is the one we will be using today but there are also so-called rdf graphs sometimes called knowledge graphs um or subtype of them so that's uh the data model is still quite similar that there will be nodes and edges there and different types of properties as well okay there are also different languages so gremlin is the one we're going to use today there is cipher graph language that is g sql there is sparkle used with with rdf graphs we're going to use gremlin it's a graph traversal language this is how it may it looks like okay this is how it looks like the graph use cases for this database they usually when you use them they are more versatile more complex type of computation usually when you focus on those connections edges links relationships so you usually traverse traversing the pass of traversing a neighborhood in the graph like this movie alice in wonderland has a neighboring vertices that you may be interested in some of them are about genres some of them about actors or directors uh some of them about users who rated um those uh uh that movie and you may be interested how this movie is connected or how one user is connected to another user maybe through a third user and so on so on so there may be a shortest path that you're looking looking oh may there may be some kind of graph-based algorithms that you are interested in computing so the more complex use cases customer 360 personalization fraud detection recommendations um internet of things and and and so on and so on okay so different data model we're gonna still model our example uh and uh this is one example gremlin query what it does it retrieves the vertex with named alice vertex for user with name alice and it's going to traverse edges in any direction for 800 milliseconds at most in the hope to find a user with name bulb okay so that's kind of simple way to explain so it tries to find whether alice and bob are connected in our graph and it doesn't care how they connect as long as there exists a path between them and that path is simple so no cycles for example so we're not gonna we're gonna try simpler queries than this okay but this is how our data model can be represented as a graph we have user with this id with name alice and email this user has account so this edge represents a relationship has between user and account and user has another account so different age different vertex for the second account which is savings account with this balance and there is another user bob who has another account with this id type and balance and it happens in our simple data model the user users are not connected accounts are not connected but this is because our example is very simple right because uh in real life there will be usually a lot of connections right and the the distance between like in social networks if these are two actual people they will be somehow connected through other people and usually it's just like just through five six edges at the most anyway for the hands-on uh i'm going to show you just the demo because this hands-on requires you to install things and we don't have time for you to install but you can follow the instructions to do it for the homework even so it is optional but what i'm going to use okay i'm gonna use the okay interesting all of them okay so i'm gonna need to log in just give me a second okay so this is the this is essentially a client called data stack studio that works with a graph database called datastax graph okay so it's not asterdb anymore it's datastax graph so i have an instance running in the cloud and i i have this client running in the cloud and it has web interface so i'm able to use it so first thing i will draw any schema that may exist in that graph database and i will recreate schema for my graph the name of the graph i created before it was user it's called users and accounts that's the name of the graph but it's empty how do i know it's empty if i look at the schema tab there is nothing here right nice and here now i'm going to click on the the schema creation code and i got this account and users and there is an edge between them so what did i do to create this type of schema uh well i created verdicts label user with this properties id name and email and i partitioned i'm partitioning my data my users based on id again you still see the uuid like we used before text text i created accounts account uh vertex label and these are id type and balance and also edge label has which is going to go from user to account so it's directed so it's a directed graph property graph is a directed graph it's direct this edge is directed from user to account but now you will you will see and say well user.com but why do you have an error it's a bi-directional edge why do you have an error well because i created an index that will also be inverse index okay so it's gonna also allow me to jump from account to users if i want to and i created other indexes which um i'm not gonna discuss for the sake of simplicity i'm gonna insert my data so schema no longer interested in it it's very simple schema inserted my data say success okay how did i insert my data i'm using one of several methods ways to insert data so this is called traversal api you can see it's gremlin language and i'm adding vertex user with this id and i'm i'm generating id from uuid from the string name alice email familiar right and i also created a label like temporary label for me to use in this particular traversal alice i do the same for the bob i do the same for accounts so i'm inserting vertices at vertex account with this id type and balance and once i'm done with add v inserted vertices i'm adding edges all of them are has edges and they go from alice to the first alice account from alice to the second alice account from bob to the so this is one way there are of course you don't you can in bulk load from a file for example instead of just writing something like this manually so if you have csv file you can load data from that file as well okay nice so let's see what i have okay so this first vertex this first traversal acquity rambling query gremlin traversal retrieves my graph so i have all the data all the vertices so i have alice and accounts and you can see see information about those accounts and i can even customize the names for example i already customized for the user i'm using name but what about account maybe i can use balance as a balance in and maybe type of the account let's see what happens okay so bob has thousand dollars in checking alice has 1500 and 2500 in savings and checking and so on but this is the visualization the response you will get may actually look like this or tabular view may look like this okay so the id of those vertices will look like this and so on and so on so some more interesting piece i can just based on this id i can retrieve a particular one for example i can retrieve the only one vertex essentially for alice based on this id or i can search for l is based on the property name okay so i'm getting this alice still vertex or i can once i find alice i can traverse outgoing uh edges with label has and i will end up on accounts to account i found two accounts for alice what about i want to only see the failures in those accounts i'm gonna say bailor's balance okay so it didn't work because i selected once you select something it's gonna only execute the selected part so that part is not gonna work so okay so i'm gonna visualize numbers for me but this is what i got two values so i'm gonna add them up with some it's so-called step gremlin traversal step i'm gonna add them up so this is a total balance for alice now i'm gonna find accounts for alice okay so i'm gonna go find the vertex with label user name alice we'll go traverse has ages will find accounts and we'll see that the values for the balance is greater than 2000. i will only keep those accounts where the balance is greater than 2 000. so it will give me just one account just one account and the final query here i'm gonna show is so there is an error there uh the final query i'm gonna uh find uh all the accounts so i'm gonna find ld's first ls vertex and go to the accounts reverse has edges go to the accounts and group count those accounts by type so essentially i want to know how many checking accounts how many savings accounts does a user have so these are different types of traversals that i just showed you and these are some of the simplest one of course you can do much more complex things but and we even we didn't even touch any shortest paths because our graph is simple any branching any repetition and things like that okay and that's gonna be the the the end of the four different data types so now we covered them so which one should you use for different use cases we will use different ones okay there is no one solution that that fits all uh even so graph looks like the one it can model everything right so so flexibles are versatile but graph does suffer from uh it from certain things like in in this case they it's it's the bet it's it's the most uh powerful in terms of handling those relations relationships but it will suffer in terms of scalability as it's going to have lower scalability and performance than other types so more complex data model but it's going to affect the uh scalability on the other hand this the simplest one the simplest data model for key valuer is going to have the fastest performance it's going to have the greatest scalability right and then for tabular and document it will also they they are pretty much very similar in terms of their ability to handle relationships and and we saw that very easily with the way how they nest data in the document or in the partition of a table but in terms of scalability usually tabular databases are have better scalability but again it all depends on how you model and what queries you take into account while you model the data and how you're gonna index data and all of that okay and all of those things so there are motivated of course i can create a graph database that will be more performant than than uh your tabular database if you are not gonna model your data correctly okay if you're not gonna uh take into account all the excess patterns that you're gonna use in your application okay and graph is gonna be very flexible on how you can uh traverse your graph traverse your data basically you can you can compute anything you like okay so what is next and the next part i think ryan is gonna have a quiz on mendy my pleasure oh no i was muted the whole time okay um i was just going over what we're going to do next uh we are going to do the quiz uh where you can uh win some prizes so stick around for that if you continue to have any questions uh about the content that we just went over feel free to continue asking them i know cedric is hard at work answering those questions as well so uh so feel free to continue with that uh so with that i will go ahead and move us back over to mentee.com hopefully you still have this window open uh if it will respond for me all right yeah just make sure you can go to mente.com i'll put the link back in the chat and you can see the code up at the top as well and we will get this going make sure we have everyone who wants to join awesome okay apologies about the muted muted audio it's always something right uh all right so we'll uh get everyone in here and we'll get started i think we have about half half of everyone give it a couple more seconds if you do have a just a reminder if you have questions later outside of the workshop you can join our discord and you can ask questions there as well oh i will wait for you siraj connection lost refresh okay all right i'll go ahead and get started looks like we've uh we've settled out at a number so question one what database should you choose for high growth applications relational database nosql database hierarchical database that's hard to say or object database no sql database is correct we are talking about the nosql databases after all that is the correct answer for high growth applications all right let's see what our scoreboard looks like uh just a note it is uh you get more points the faster you answer so make sure that you are quick on the draw as as quickly as you can all right centric questions guru is the fastest cedric all right let's move on to the question two we have a seven questions so it'll take a little bit important benefits of many nosql databases are faster joins no need to design a database schema simpler to operate or better performance and scalability that would be a tough question can be a tough question yes so better performance and scalability the uh i suppose the other options vary depending on what type of nosql database you're using um so not even necessarily universal but more universals better performance and scalability tabular for key failure we designed schema graph we designed schema as well if you remember and and for document we we didn't we kind of skipped this step but we still structured documents to retrieve them properly right you remember that we nested accounts into user documents things like that so you have to deal with schema anyway yeah that's a good point looks like murder was the the fastest our top three yanga millie in room uh remember that the top three i guess i didn't mention this the top three are eligible for prizes so you want to get up in the top three for sure all right it's question three what is astrodb it is a local in-memory version of cassandra it is a cassandra as a service in the cloud it's an album by radiohead it is a development tool all right yes it is a database as a service based on cassandra in the cloud let's check our leaderboard all right milly was the fastest this time maintained second place yanga and murdel is first and third is it actually an album of radiohead i'm not familiar astro maybe all right question four which nosql database organizes data into tables with rows and columns relational tabular document key value graph or microsoft excel remember which nosql database relational is not a nosql so that's incorrect but yes tabular is the nosql uh database with rows and columns all right see what that puts us really he's the fastest again janga main maintains first place the mirador is still in third it's still anyone's game though we have just a few more questions so anything can change nosql database is better suited for finding the shortest path between entities in a network traversal database document database graph database key value or tabular all right yes most people got that correctly it's the graph database i guess the keywords would be entities and that's that question all right just a couple questions left i think two more noodle was the fastest with that one takes second place millie is still in the in the running though with with third place all right a key value database supports complex relations and joins is perfect for simple key based data retrieval is perfect for doing complex analytics or always stores valuable cryptographic keys i think this one should be pretty easy it's perfect for simple key based data retrieval is correct all right myrtle takes first place but we still have the consistent top three see if it all changes the last question what format does astrid be used to store and retrieve documents xml json html binary or tabular yes json is the correct answer and let's see where that puts us if you are in the top three make sure you take a screenshot of your uh of your final screen uh so that you can email it to uh to gary harvey congratulations beardo for the for first place and yanga and milly are second and third make sure you take a screenshot and then you can email it to gary harvey there will be a message on screen and in the chat in just a bit uh yeah so a final question this is outside the game um if you want to answer this quick little survey what did you like the most what should we improve we're always looking to make these workshops better um so i'll leave this up while we continue on uh with the closing thoughts so if you were uh one of the winners congratulations um send an email to gary.harvey datastax.com include the screenshot of your uh of your minty screen if you need me to go back to get that screenshot let me know um and we'll we'll send you this the swag and we deliver uh worldwide so doesn't matter where you are we'll get it to you all right so if you are interested in earning the badge for today's workshop you can do the homework if you type in exclamation point homework you'll get a link it is also included in the github repo and it should be fairly simple it's just kind of proving that you have have gone through the the content and understand it um and we will issue a badge for you uh oh that flies a little bit most formatted but yes the homework uh is on github and uh and you'll you'll be prompted for a form you'll submit the result or submit the form with your results and then you'll get the badge we also offer a certification for uh for cassandra and we are offering vouchers uh for attending this workshop so if you go to that link uh dtsx.io workshop voucher which i think we can get a link in the chat as well you can redeem four vouchers that are valid for three months two attempts and they're usually around 445 us dollars each normally so if you want to get certified in cassandra that is a great opportunity we have several different tracks for certifications the administrator developer or the kate sandra kubernetes tracks and we also have a lot of resources on datasacks.comdev and you can you can take different courses that will you know help help you with with your learning on that on those topics uh you can also go to academy.datastacks.com for more courses uh ds201 uh is is really comprehensive and then we have some more specifics for each of those certification tracks as well so check that out uh and once again our discord channel if you have more questions um about either today's workshop or if you're going through other workshops pre-recorded ones or even if you just have regular uh development questions this is a great community we have more than 18 000 users already and we're ready and waiting to answer your questions and finally if you want to subscribe to our youtube channel you can be notified of any new workshops that come out or you can take a look at all of the past workshops and astrodb specific videos that we make about different features and how to do things it's a it's a great resource and we and we would love to to share that with you so take a look at that and consider subscribing if you if you find it interesting with that thank you so much for joining us today i hope you learned a lot and uh we had a lot of a lot of fun uh sharing that with you thank you i hope you come back bye-bye and as always don't forget to click that subscribe button and ring that bell to get notifications for all of our future upcoming workshops imagine a being gifted with powers from the goddess of cassandra who grew those powers until she can multiply it will move with limitless speed and unmask hidden knowledge with those powers she was able to fully understand the connectedness of the world what she saw was a world in need of understanding from that day forward she sought to bestow her powers on all who came into contact with her empowering them to achieve wondrous feats
Info
Channel: DataStax Developers
Views: 128,998
Rating: undefined out of 5
Keywords:
Id: rhzUrejsA4A
Channel Id: undefined
Length: 129min 8sec (7748 seconds)
Published: Wed May 18 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.