 Good evening fellow Collegiants and maybe Collegiants2b. My name is Slautier and come from Flyboard company and for those who has difficult to Remember the Chinese name. You can call me Robert That's a tip for you and tonight. I'm going to share you some own story of searching solution for our own problem so basically you maybe already read The introduction that's it's it's about pure class but at first I want to Maybe first introduce my problem because we as programmers we Looking for some new technology is basically we want to solve our problems so our Problem is is that we are We providing we are providing online gaming services and We have lots of gamers most of them are in China and We got tons of gaming events Maybe a few millings just maybe maybe several hundred millions every day so It's from the early days that we we just store these events as log files, but we everybody knows that there are deep knowledge inside and Sometimes we want to use the data inside So it's that's our problem is trying to figure out How to dig the value from that data Maybe for some data analysis or sometimes we even want to generate some new events from that kind of data For example We are events including like from the when a new user registering We got to events and said saying that the type of user register And when every time whenever a gamer the log on to our Gaming services and look off and maybe even the disconnected from the network. We got another event Maybe you can you can know with sometimes we we want to know how long Gamers stayed on our platform We sometimes we want to to figure out or guess what's the main reason they leave or if they sometimes they have problem on their network or something like that and I'm or because our gaming is most mostly is about cards and a mahjong So that's another big category of gaming events. That's gaming for for game itself Maybe we want to know What what what kind of cards? You the gamer played and why do they play that and maybe we we are sometimes We are just curious about what is the best strategy for a game. Maybe if we are kind of to want to develop some some system like AlphaGo, yes, for example But This problem is I think it's not so unique, but it's very important for us. We are we cannot have Run our system we without using the value of this this kind of events, but we we want to explore it so we keep on searching solutions for that and we are The first take We we want to tackle this this problem as we we tried ELK stack that's elastic with log stash and with Kibana We feed our log data most of them are just logged by some log4j Adapters and we feed them to log stash then we store them into the Elasticsearch backend Then we are using the Kibana as a dashboard to show the result result it's It's working and it's still working now The this kind of solutions Just like I just said we For the log stash we because our logging data is just plain Lines playing text. So we need to pass it into some real meaningful Event so are we we use we write some scripts on log stash end to to pass the data and basically Elasticsearch is trying to search some specific events in the huge events database and but for Maybe if you can remember that last last page that I said we sometimes we need aggregate the data Most of time actually we want to find the patterns of the user behavior then We need to aggregate the data And we did it to we wrote many many programs Most of it most of them also in that enclosure to to trying to to aggregate that data and We were using the the Kibana to to present the result They set up Has some pros of course Because the first thing that we will like it and actually the first reason we chose it It's it's a Kibana itself the dashboard we can easily create many new dashboards It's especially for the decision-makers They like it. You can you can say I just ask somebody To to add some new dashboard onto that then I can have more you know new insight of our data But of course behind the scenes it's not so simple and We like the the documents documentation of Okay, it's very good. And also they have a very good Check record. So that that's another reason for that and We are it's already widely used That's why we we chose it And we still I just like I said we are still using it But we cannot stop the search because That's solution has so many cons The first thing is the performance. It's I cannot say the performance is Bonding to that solution, but it's bound to our whole framework Sorry Sorry Maybe I think us a few hundred of a hundred meanings every day Roughly in the in-state size roughly 30 or 40 gigabytes every day And if the issue with the speed concerning log-stache engine or just keep on Actually is in the backhand the log-stache was Maybe we have some some issues the first thing is Because we like I just said we do not want to rewrite our software and and our gaming services Already written and they we do not to rewrite them all So they just log their event into files files. That's then then we pass it and shape to log-stache the first pain point for us is is a pass itself because It's data is so so so huge and we we cannot Distribute it very well. So the the the path of data itself sometimes need maybe one or one or sometimes need four hours to One one or at least one hour to sense the data into the the backhand there's that's that's one one of our pain point and also the major Problem is is an aggregation Because I think the electric search basically it's a search engine It's not something designed for for aggregation so we will actually we must Keep on Going going and going there's the index has no use for for aggregation, right? so he's that's that that's that's something really hurt us and In the previous I think maybe a last year The system is so unstable most of time we we need to restart it maybe maybe twice in every week That's that's That's our problem and Another problem is it's very quite difficult to to set up at the maintain I think the documentation helps a lot, but because like I said the company itself. It's not a technical Company we don't do not want to Use most of programmers time on such huge deep Techno tech technical things want to use their time on our business values so to set up and maintain this system also is a pain and And the last thing is this solution is not inflexible We are we need to know Every kind every Piece of the shape of every piece of data If we happen to to change something inside then we have to have to in re-index the whole DB that's Actually, perhaps it asked to do some exploration nation That's that's this This solution is problem so we keep on searching and then I Found something as earnings. So maybe most some of you you also heard it from maybe Lucas and Onyx itself its It is rated in closure. So that's why we found it and The first reason we will like it. It's it's but it's written by closure and it's primary first concern is audience is is to clearance and That's that's why we will like it at first and we know it's in the Basic designing it's real stream processing. It's not like some K-Banner It's it's like Electric search. It's a search engine. We will try to use misuse it actually and we know it's can be very performant, but this solution also has some deeply cons that It's we still need to maintain it by ourselves and because it's Relative so young compares to Okay stack then we tried it, but we do not use it in our production and Most mostly use because this kind of things and we do not have many experts on this This to set up The whole cluster to maintain its its works. It's quite quite difficult for us That's why We are after we heard that from Lucas and Michael that's the set up a new startup to try to provide the stream processing in services and they call it para-class That's why we we are so interested and we became their first users And Okay, so the question was why do we Compare us from so different solutions one is search engine and one is Stream processing that's a very good question. Actually our major concern is processing the data itself sometimes we need to search But as I maybe I didn't make it very clear before that we Actually, we know the ELK system is not designed for our problems So that's why we keep on searching that with our major concern is is to process the data and we Wanted to be a real time Doesn't mean that Okay, so the question was do we need to use that the back-end Database as a database that we we need to to search some specific data on there on it Maybe to provide to our end users the answer is no we got some Relational database Just just like other systems. So we just Duplicate all these kind of facts You know the the data in our Relational database is just snapshot shot of the current time. It's Likewise if I am a gamer I Register in into that into the service and we I played several games each day That that means I generate many events on every game around I I played But the there's just one record in our in our database That's the base basic design We got the database. So that's why we we want want to know what happened before and pair pair cluster is Right now it's it's just stream processing as a service. So It's still in in beta So we got some first-hand experience on that like I just said we are their first user and We do not fully committed into into that yet we are doing some really Real things and production production on to that, but we are still and using our Okay system and at the same time right now what we what do we like it? the first thing of course is Somebody else are maintaining that system for us and we know they're experts. That's that's the first Reason that we we chose it and so is our burden to for that the second thing is it's really fast and because it's real I Think it's scared scale really horizontally so compares to our before our solutions most of There are many bottlenecks that we we cannot distribute the maybe the parse or some aggregate into into several Systems as in parallel, but by a pair cluster. It's really fast Later I maybe I can show you that some some number and it's very scalable of Of course, that's not our concern because we have somebody else to to maintain for us I think maybe I if it's a performance not not so good. It's there their Responsibility to to buy some new hardware or something and Of course at last Because we are so loving in loving closure. So we like it to return in closure and the primary audiences for closure and of course It's because it's it's a commercial version actually commercial problem Platform based on audience and if you are read the audience documentation, you know that it's I think it's a very good example of Cluster's design That is it's wholly based on data so there's Almost very little API So you know that's that kind of if you can't keep your data in that in the shape And they can keep the API quite stable and of course there are some more and I Maybe I can show you in some small demo to show some What what I mean? Do I mean some more? Okay this is this is a pair of class at this time and Basically, it's quite simple just like you use you see it's basically they have just two Concepts one is topic and one is service Topic is Just just something we we send and with something we we want to consume Both of them are topics in the pair of class. There's no difference between that between them I can show you maybe like this. I Just click the this this this topic Okay, this are is our source topic. That means We will pull push all our events Onto this topic not not all actually we just push one kind of our topic event into under that this one is A scores In on our gaming platform whenever the gamer finished a game there are these the system trying to Calculate the score this score event. So we fit our score event onto this topic right and push itself onto the to push the The data and onto this is very very simple At this this web page is self Expendamentary that they have all kinds of way Not not every not everything is it's really like the pet python version Just fake but for a good JavaScript for closure, of course and for Curse like that HPV IE I can it's already there and you can of course you can use this common line things to try your topic and For us we are using this fire plume Actually, we are not it's this fire plume. It's it's just a Very thin wrapper of file meter. It's it's just a log stash tool to ship your your events to other and and it's very very simple. So we use the file meter to ship to send our Logs just like I said we our events is just in as in log Actually, we save it in in the log file and the file meter the monitor the every log file and then there's the fit all the new data onto this this one and the little tool file meter is Smart enough that they know where there their current location and if some something go wrong or because like a network Interrupted they can continue once it's the problem go gone That's that's the thing we we want to send it. So It's nothing special of this incoming things and you can if you use this interface, you can just use a configuration file that already Rotate for you like for for instance in these closures You can just copy and paste this kind of code into your own file and Of course this this In this topic we I already got Some data here. All right that that's our data Because this data is is fit or using file meter file meter already What wraps our event? I just like I said our events is just pure text This file meter already wraps of this into Jason But it's it's it's just a illusion It's the real real data is here It's something quite ugly All right, and you can see that the time that's actually it's it's now so the data is still keep on sending to this topic and To make it clear, I will click this new topic Button that's that's very easy that you can create a new topic on pure class like if I Can choose how many the size of this this one and How many days you want to retaining and That's it very easy for a source topic All right, so I can you can let this check up our real data now We got Here's some data numbers here. We got two hundred and thirty two meetings of events here in the from April 28, so that's one one of our Kind of data we will consider and the topic itself is not so interesting. So it's Service to make it useful The first six first thing we want to do to do for this kind of data But this kind of data is which find we try to pass them off of self of course to pass it Like I said, it's it's it's a it's text text, but it's not Very useful So I'm trying to show you here. How can I make a service to to pass this data? Okay, it's quite I Think in a data warehouse Terminology, it's it's called ETL We want to extract data from from the event. Okay, so let me Maybe I named this news service demo pass score, okay, it's a data pipeline and Quite simple and I chose my my topic I'm my topic is Zero data and why maybe I need some sample data to Make it easier. I already prepared some sample data on my desktop There are open tickets on a pair pair of class that they can sample the real topic But this is not click this ticket is not implemented yet So I just using this this Sample data just have five Five records All right, then I chose a task maybe for this kind of data I need just Maybe using a rig X. All right. I need to Sorry the data is not not not for this row data maybe I need I need to To copy that from Okay, I Maybe I need to copy this From from real one All right. All right. Maybe I just copy copy this one single event Okay, it's a I think I hope it's clear so basically our Interested data in seen messages message so I input message here in source key and You can see Once I Get this information to pair a class. It it shows this step The result of this step instantly Maybe I want to extract the data into groups then what I need is Is to write some regex To do that Then the first first thing about These messages you can you can see it's it's a data. It's date Okay, I just do do it stupid Naively, okay so as I type you can see the the results Showing instantly so as a I'm not the expert of a regex. I don't like it actually I always tend to remember everything but this this is really neat for So some someone like me so I if I did something wrong I can know it's right now Okay, right now. I already got the date and maybe the time it's Okay You can see the groups already contains the time but I need multiple groups inside this this information, so I I just using a group to to Then I need to extract this debug and the name of service I have no interest maybe I just interest the return Return value. It's a Returns Maybe I just one Something wrong. Okay, not should shouldn't be. Oh, sorry I should provide something. All right returns okay quite simple, right and now I Get to two things interesting here one is Time itself and one is the data All right, then maybe I need another step. I Don't do not want this this kind of information just inside groups so I maybe I just move the the first group into something meaningful okay, I Just just like I said this name is this step names move actually is a copy copy the This one into event time and for if you check this this results gaming results You will see it's it's not just one event actually because this kind of game is very involved between three players, so This is the first player. This is a second player and this is the third player so I maybe I need to Do another step to to make his Let me just Reg X another reg X maybe This this time I need the reg X sorry Just deletes this step. I need to match And I need source case should be groups to And I need to be maybe I name it score groups and The user name itself. It should be just just this and it's The next number is How many virtue coins do you have? All right? It's a I hope you can already Understand this is kind of and then I don't do not To let you go through all the old kind of things The the major point here is is something real Maddox thing is is is simulator That's that's I think it's the most cool thing about the pair class Sorry You can I'm sorry Why do you use the matching on the plain text with the reg X is Instead of making some kind of Jason representation? That's because we we do not want to to modify our Yes, yes We have a running systems right right legs systems already. Everyone had this kind of problems I know your mean so the problem is the question was that that we should should have made this kind of events Organized at the first place not to pass it. It's just a waste of Combination power. I agree with you with you, but we do not have the luxury to do that Yes, but you just told that you can when you stream the events from the log Then you can add some kind of preprocessing ETL that will automatically split this text into All right Right, I actually you have a similar system and we use the other approach and I wonder why would you not do it? so the question was we Why why would we not using a Processor professor before sending these kind of events to to the data and do it actually inside log stash or inside Yes, because you've shown us that you can do right dynamic joints and Streaming it here. So I suppose this is the same mechanics. We we use the lock stuff for this. Okay. Yes, I suppose that Okay, the question was why whether we not pass it in the on the front end before sending to that kind of platform and we and Look look like log stash already has that functionality. Yeah, I Actually, we we did it in our Yelki stack actually where you will already wrote many little script to to x to pass this kind of information, but I we want to do that this because pay your class because pass it's itself Sorry No way, I'm sorry. Sorry. Sorry. It's a lot of power. I Still got enough power. So We want to to to do that because the pass itself require many Computing power and like I just said we This kind of pass require many dedicated system to do that and So we want to treat it we we think the The network with says bandwidth is more cheap is cheaper and we want we Want to send it here and here we can use the pair cluster power to pass it very quickly I Previously I mentioned a number that so we sometimes we need to if we pass it batch batch Lee for one day's Data we need maybe one or two hour to pass it and if we pass it in the real time We think is we still have some Performance problem here, and we we cannot do it on our gaming server. It's too risky for us Because our gaming server is already very busy So I think we think easier to just send all this row data to peer class And we got many power here to do all the passing there That didn't make sense We choose different solutions. I think because of different kind of data and the standard You have here your priority is to Generate these data as quickly as possible and leave the generation of the data untouched and possibly that there the reason for the difference Because we were concentrated on analytics. Okay, of course our data may be a little bit more complex Oh, of course Okay, I that's I like I just said I want to just share My our story here because we are we are not expert of data analysis That's that's something we think is easier to do here and also because because of one reason to we why we do do Here because of this so neatly Simulator ice we feel very productive here likes for something Well, there's no complex logic there. We just want to to push the step-by-step So that's why we think it's very easy to do here Then I can show you the Maybe my real service definition Okay, this this one is my it's a real real thing. It's Just several steps after I just showed We got messages Rick's match and we Do something like something move like like I just described and Another Rick X match and now many moves and This talk to to make make it disappear. Maybe I can also Okay, I just paste this that that's events until this real one then I can can see Is at real time there's a result of every step So that's quite easy and actually it's not no need for debugger and You can see we we we make it the larger every events larger By extract some piece of the data in from it then we At last we desock Desocks unused the data from the to make Make the data smaller and we are then now we Turn it's the daytime from string to to Epoch time and the past values for For some like this text it's a should be number number something like that and and And the last thing is we are we want to output because it Etl we want to send it to other other place So I send to another topic. That's a past score log Topic I think it's quite simple if I have any questions please ask So the spark plus only supports linear floor or does it support something like graph so can you actually change? services together to form like, you know Separate flows and things like that. Okay, so the question was this this looks just a linear Process model is there any concepts that can support main More complex like graph or something like conditioning to to to to branch The answer is no actually as the first version pre pre beta version of pair class This platform got a quite complex graph editor for constructing this kind of pipeline, but later they decided to remove it and Use a simple one because the reason I think is of course the first reason is try to make it really easy for any user and The second reason because I think because this this thing is so you can reuse this topic Because it's a topic so you if you need another say another kind of processing Model you can you can you can just use it as a middle topic Okay, you can just send some some data there and you can do different things onto another things of course this kind of things means that you need Maybe a better interface to show the the relationship of the different services different Pipelines, I think the pair class guys is still working on that Right now. I think this is is easy enough at least for us and I must admit that our job for this kind of thing is so simple All right, but then I I store this past the school log on to on that topic Then actually we got another Just I like to say we got other services Actually, we make it like something like a graph Like we have another thing says make player book and These services service read from past the school log the output of previous one It's not very convenient sometimes and But now we feel it's just doable and it's okay for us and That that's another so at least actually they are chained together actually Maybe you just Already noticed that these services are not running right now The topic is is there But the service is not running So that that means these Look past service. They are not image any Records now So I actually but to make it really work. It's very very easy. I I can just click this deploy deployments button and I can Just click this upgrade button and I can update it. That means we are I request the pair class online system they put my services into work and You can see after I Click that button Something really work here This is the deployment The real thing and you can see the some number here. It's How many records it's processed every second and you got Every at every step You can you can check it stand us and here this triangle here means if there's exception there and if There are we can we can see it instantly That's it and for this this kind of simple pass it's quite quite useful useful for us because more than 13 13 so enough recalls every second and As far as I know Platform has more potential to do that because we we do not require More computation power for this is because it's enough for us That's it. So that's the base basic ETL flow of pair classed. All right the actually Before I don't do do not know there's there are something means like simulator in the pair class Maybe as our before like the other solutions we we need to write program I think Traditional workflow is trying to to write some programs on your own Computer, then you try to test it then you pack it into a maybe a jar or something You upload to to your cluster, then it's running there I tried tried one or two times before but it's if I sometimes I found problems after I deploy my My work it's that kind of workflow is very slow. I was very slow for for me I don't know if there's a more advanced workflow for that, but for a pair class the simulator is really nice and I Asked Michael to goddess for how do you do that? They said because thanks for closure and closure scripts actually they are The simulator it's you said it's it's a real Onyx engine inside because they are using COJC To to write the engine itself So it's it's a real engine inside your brother So that's why we can see the results so so quickly And I think that also means maybe we can do it offline if we chose to and the Also, they said they there's sometimes there's some difficulty to to make sure the the two different systems works Identically identically for example the rig X actually on JavaScript and in Java is not Identical what so as I we We encountered some some problems about that But it's solvable and most of them are already solved. I think in this this kind of things I I think the idea of stabilization is is very nice and It's boost boosted our production. That's why we That's why we want to do everything here Because if we find something something wrong, we can easily to change their You already have something for doing visualizations. Okay, so the question was we are how do we visualize our data right now? compares to previous solution of Kavana Okay We are actually in Closure West's Michael Chagalli's presentation He Showed some really nice charts I maybe I can show you who says this this little video clip Okay, okay, so this is power glass Okay, I can see one and what's nice is that I can He's also he was also showing the simulator and Showed hands at how many people are familiar. We don't actually get access to this you Okay, okay, then that's make me lady I can let's Michael to show that But They have a particular number of points each and so it's shown me what the actual backing data is is a visualization That's a lot easier understand just the raw text So still that's that's not terribly okay, let's let him to explain that for several minutes Sorry, let's grab another bottle of water You need a measurement for time that's gonna Sort of tumble forward to my say I'm in the range of three minutes What's actually gonna happen is that I'll get a timeline here with box You'll notice that these boxes are Exactly three minutes long. So every piece of data will fit into a three-minute interval and this is very different from a single way We're just gonna group by a certain of minutes This is actually able to backfill at one time which three minutes slot is filled in either forwards or backwards So it's able to check that with constant time Which will also notice There's two things this white space means no data has occurred So zoom in my bar charts just totally empty as I'm doing out these bars are actually changing So it's only showing what's within my particular range of views. So again, if I zoom in I'll see that That's terrible These Time-bound are exactly three minutes apart. So it's saying within this three-minute interval this number of points are supported Okay, I I hope this part of the question we uh, yeah, I think that the pericles still not have a Real answer for that Yes, it's experimental eyes, I think the Later, I think there should be something like that, but right now. I do not think it's a priority of pair class So for us, that's that's one of reason that we still not using it for Indian production yet because we we also Want something like that and we are in our flyboard company. We are developing something for that dashboard right now all right, so I think the So just like I just showed show that it's it's secret of Paraclass is Closure and clear script Interaction, it's very nice. Also. I will use it in our other products to try to leverage this huge benefit and And Besides the ETL that's another thing is aggregation. I just show you the aggregation of the microdogalist to In his presentation and I can also using the real pair class to show you Show you some something like this. I Did it before I come here Wrote a very small aggregation Maybe I can do it again here to to to make it clear that Okay, say I want to aggregate some of my data say I already got The players score in another topic called the player Playbook that that contains every player's Game score record, then I want maybe I have a question to want to ask For every user they How much did they loss or win in one day? So that's a typical question for us So I make another service its name is this kind of materialized view for that kind of things right Then I choose the player book as as a as a my source And I can use something here That's my sample data Then I Say I don't just want to know why one kind of my game. I will have different game type here so say I Want to filter it first I Want to something we want just Starting with String starting with the game type only this kind of Games we are interesting so so that we previously got five events here and after filter I got two Then Maybe I need to aggregate that I just name this aggregation as Sorry, sorry Okay, maybe something with wrong something wrong with my I Use a fixed window here fixed window because by I just want to do the daily things so I just sum there Here is a delta and a window key is event time you can That means I Need to sum my users delta delta is the change of the score itself so the window type window is one day all right and group by User name that's it Nice and easy I save it so I to Activate this Development oh something wrong here Exception many many exceptions I'm not sure which kind of but we can we can we can check if the the aggregation Already got some data here. Let me Using this curve you see so They there are some some exceptions there, but because I think that because some Kind of events are not supposed to be we would like to see but other Right events is still running there All right, so I Really hopes we got a dynamic dynamic window there I can show that how the data change in real time, but you can you can you can see that this this is Just like another web services service that for every deployment. We create a web service. So there are Here is is a common line to to show that This is really difficult to to know I want to to check to change it to to to something easier to So it should be I I think he's a can print print out better Better format is Jason data for for that so so the You can see this is for this username and This is the time start and end for I think she's for one day. I don't know what one day is it should and it's That's that's a result Answered by my question and but maybe we need to go back to to to solve that's That's exceptions there. So I click this it's again and by by checking the deployment and Let us check this is kind of Now point exception. There's a calling stack there We'll see that the game type is now for some some events So that's why we we got these exceptions so maybe we can Insert steps here to fair to fair to out that one Because it's it doesn't affect it our result, but it's not so so ugly So I just filter and I need to use Neo We are a game type Of course we want we want to keep old not Neo all right, then I can save this and And using up upgrade because It doesn't I think Do not think the previous bug Make some run data. So I can I think I can safely just press upgrade deployment Then that means the the deployment itself will keep all the already run Sins, that's right. You can see the exception disappears Because the the upgraded Service they just rerun the run data again And if you sometimes by sometimes when we got real bugs that affected the state of the of the inside Aggregation we need to read read redeploy it But this one this feature also very neat for us. I think it's should be quite very neat for a all kinds of this is Problems because I many sometimes the data just not as we expected ship All right, this this is the aggregation part it's it's kind of things of our Problems major Concerned right now. We want to use a pair of class to aggregate our data That's why we chose it. I know quite happy with this, but Not for the visualization part. We hope they got a visualization part as strong as Kibana, but not yet. All right. I hope you I should I just stop this This is good data because I do not need the data anymore Go back to my Okay, and so the last part is It's micro services The data proc processing for a pair cluster. It's actually it's not It can't can do it. I think but it's not the major target market for a pair class itself Also for for us our problem after checked into the power of the pair class now We also want to using pair class itself to make some service because it's so easy and so Productive we are so productive on this platform. We do not like to write something little micro services for example we Sometimes we we want to reverse Reward our gamers some something like likewise if you if you win really big We want to give you some virtue gift Previously we we need to write a new service and Sometimes to need to check check something into database But we said the pair class is possible that we just make another pipeline and we are just filter our previous score log and find find out the once meet our condition then let it make the gift itself and The best thing is We do not need to Commit back to this this a virtual get into another database actually because the in some terms of view with the the topic of pair class it's also like looks like a database actually and some so we can if you check the Documentation of the pair class, okay, this is the source code of their Peer class closure client so for reading events It's Peer class already Supports to subscribe so it's kind of I think it's kind of push so you do not need to to pause it the end point of the deployment Continuously, so this this kind of things really need for for us we We did not put this into a production yet, but so we are planning to all right That's all for my Prepared material thank you all for for this isn't that Made any any questions of course Understand you already have in your previous system. You already have a database of users. How much of this The question was that we we already got another database system and If we chose a fully committed into a pair class, how does their relationship? I think we Probably we will keep both. I mean from the data point of view the The database right now is just just a snapshot of current current one And we are the pair class is storing every things happened on the on the platform So I think we will maybe keep both Thank you Okay, so the question was it's quite easy to to do this simple kind of things, but if you have More complex requirement, maybe maybe some AI like that next thing I Thinks just in this morning Microsoft is Wrote a new blog on their per class dot IO that's the they they have an answer for for this question a very good question. That's They were released something named Roaming that's basically it's It's just a packed pair clusters Small or offline per class Boot image Docker image with you then you can just write the write the programs as just as before and The first language they support is right now is of course this closure and they are planning to to support many different Program language for for that and I do not use use it by myself right now So the all information I got is from the blog itself So I recommend that you read the new blog because it's just out this maybe 2 a.m. This morning Okay The pricing model I Think this term they do not have the final Price prices model because it's still in a closed beta you can you can apply it for for one account and then maybe Later I think should be in this within this year They will decide how to to charge right now. We we are charge charge charge using services not not not Traditional by usage or meter the things because that system not yet really yet Just how do you So the question was the pipeline is I changed it there and then there's no the version console to to make sure it's right, right, I think I You can't you can see the the pair clusters itself Has a revision here for every service So I don't think it's as strong as kid but I from my point of view it's if I I changed my my service definition the program itself then I Always redeploy this this pipeline and it's up to to myself. That's If I need to keep the old data for my real usage that we Frequently are better than the bad data. Sometimes we just made something wrong So we have the topic the data in the top in the topic Just run then we just drop drop that topic make a new one because as long as I keep the the source source topics over there I Were quite confidence that the original data was there and any competition we can redo Yes, that's I I also think that's a good question and I think the the solution for that is also just like the previous question It's this roaming that's I read from the blog that they said you can just use Your previous workflow you can You need to test everything and make sure everything's runs. Okay, then you just runs a single Function to to to deploy is that your the problem program to to pure class platform Maybe I just need some clarification when you were actually fixing the null pointer exception I saw you changing or adding the As far as all some you know, there's some dynamic the data is getting refreshed Is that actually connecting to the live data at all or is that just working through the simulation? It's just was working in the simulation Right so the question is what's what's that that we are when I feel in here the data Just from the simulator just from this this five little five cat event records here When I add this filter because I felt nothing in this sample data, so you saw this this five records appears again So the question it was if the the data to expired Okay, so the question was if the data in topic expired because we are already specified our rotation date I think There is open tickets in a pure class That's you can transfer the data Into a S3 bucket But this feature I think is still open here right now I would advise I got from pure class that way I just specify a larger rotation date right now, but I think it's quite quite easy and actually in the previous version version of pure class I can just using another output task to output everything to S3 He's only support S3 or is that Before I think Back back to server I think you can always do that Because you can you can subscribe to to to the to the topic Okay, so so I think the They are right now. I think it's Just to S3 and I think they are playing but if you are You are user of this I think you can also fire some tickets to to the guys. Okay. Thank you so much