 Jadi, apa yang berlainan? Saya akan duduk kerana saya akan menggunakan kabel. Ia adalah kodin layak atau kodin layak. Seseorang yang saya menangani dan menggantikan banyak, nama dia Martin Fowler, orang bahagian bahagian. Paling kurangnya dia ada bahagian bahagian bahagian. Dia kata bahagian berlainan berlainan memberikan bahagian bahagian yang berlainan sebagai sebuah bahagian. Okey, kita faham. Bukan hanya sebuah bahagian bahagian ini. Kita juga boleh menggunakan bahagian bahagian untuk menggunakan bahagian bahagian. Dan sebuah bahagian tersebut saya hanya mempunyai bahagian. Saya mendapatkan keadaan di bahagian itu. Saya menulis ini seperti 10 kali. Dan saya merasakan bahagian ini sebenarnya sangat tepat dan berlainan. Tapi saya akan kembali ke sini. Ini adalah keputusan saya. Bahagian bahagian ini sebuah bahagian bahagian. Semua kita telah menulis bahagian bahagian, bukan? Pemimpin kita telah menggunakan bahagian bahagian. Kita telah menulis bahagian bahagian. Tapi apabila kita menulis bahagian itu, bahagian itu boleh digunakan untuk menghubungi kemahiran. Banyak orang kita menghadapi bahagian bahagian bahagian. Semua kita berharap. Itu adalah bahagian yang tersebut. Ia adalah bahagian yang berlainan. Tetapi tidak hanya boleh kita berlainan bahagian, Kami dapat melihat keadaan keadaan dan mengecewakan keadaan itu. Kami juga dapat meletakkan keadaan baru ke dalam keadaan, supaya ia mengecewakan keadaan lain. Ia dalam keadaan keadaan keadaan. Saya tahu bahawa saya tidak mengecewakan dengan baik-baik. Dan saya sebenarnya memasakkan keadaan CQRS dalam keadaan ini, keadaan keadaan mengecewakan keadaan keadaan keadaan. Tetapi, saya rasa keadaan dan keadaan keadaan akan mengecewakan dengan baik-baik. Sebenarnya, ia mengecewakan keadaan. Dan ia mengecewakan keadaan. Jadi, keadaan keadaan yang menggunakan untuk mengecewakan keadaan hari ini adalah projek ini, sebuah projek yang terbuka. Ia disebut Net Streaming. Ia sebabnya apachi Kafka untuk keadaan. Ia bukan apachi Kafka. Apachi Kafka adalah sebuah perempuan besar dengan jawa mengecewakan keadaan ini. Ia dibuat untuk mengecewakan dengan baik-baik. Jadi, ini bukan perkataan saya. Ia dibuat dari website Net Streaming. Tetapi sebenarnya, serva Net Streaming adalah sebuah log yang dibuat pada akhir keadaan. Logs tidak mempunyai spesialan yang tidak mempunyai spesialan ini. Tidak mengapa. Tidak mengapa. Tidak mengapa. Tidak mengapa. Baiklah. Jadi, logs... Tidak mengapa. Logs boleh dibuat. Jadi, keadaan keadaan yang terbuka akan mengecewakan keadaan ini. Dan kita mempunyai semua keadaan keadaan kita. Untuk berkata, kamu harus mempunyai logs keadaan yang tidak lebih besar atau mempunyai logs keadaan dan tidak lebih besar. Jadi, Net Streaming adalah sebuah log yang mempunyai spesialan ini. Jadi, ini adalah cara saya akan memulai logs keadaan. Sebenarnya, ini adalah cara saya memulai logs keadaan keadaan ini. Itu adalah perkataan lain. Saya memulai logs keadaan keadaan keadaan keadaan keadaan keadaan keadaan. Jadi, apa yang ia katakan di sana... Saya akan melihat keadaan saya. Anda dapat melihat keadaan di sini. Saya membuat volume docker untuk menghidupkan keadaan saya. Ini adalah keadaan saya yang menghidupkan logs keadaan. Saya akan melakukan ini secara langsung. Untuk menenangkan keadaan, saya akan memberikan nama ini. Jadi, jika saya memulai logs keadaan, jika saya akan melihat keadaan ini, saya akan melihat nama ini di Net Streaming. Ini adalah bahan yang penting untuk maklumat saya. Jadi, jika ia meningkat, saya akan menghidupkan keadaan. Saya akan melihat nama ini di Net Streaming. Saya menghidupkan volume data di Net Streaming keadaan keadaan. Saya menghidupkan satu port, port 4222, yang adalah port di Net Streaming. Ini adalah bahan yang penting untuk saya. Saya akan memulai logs keadaan keadaan keadaan keadaan keadaan keadaan keadaan keadaan keadaan. Kemudian, melihatkan saya, saya akan melihat nama-nama ini di Net Streaming. Terima kasih. Sekarang, saya akan melihatnya di Net Streaming. Jika saya melihat di Net Streaming, saya akan menghidupkan keadaan saya. Saya akan melihat Through郊an di Net Streaming. Jadi, setelah saya melihat Through郊an di Net Streaming, saya akan melihatflow. untuk mempunyai sebuah sebuah tiga subscriber. Dan itu, saya rasa, adalah membuat kemahiran praktikal. Jadi mari kita bercakap tentang Go, kerana kita adalah Go Meetup. Jadi di sini adalah Publisher. Saya akan cepat pergi ke sana. Saya telah mengajar untuk diri saya. Ia perlu bercakap dengan server Net Streaming. Itu pindah di atas server Net Streaming saya di komputer ini. Ia adalah Go Net atau beberapa langkah lain? Go Net, Net Streaming juga adalah Go. Itu sebabnya saya melihatnya. Saya suka Go. Java. Jika sesiapa-siapa anda ada sebuah tanya-tanya, hanya beritahu saya kerana saya tidak dapat melihat tangan anda. Saya ada kelas saya. Saya akan berhenti dan saya akan menjawab kepada anda. Saya suka kelas yang berlaku. Ia tidak akan menjadi kelas yang berlaku. Jadi saya perlukan kelas Net Streaming. Itu pindah di atas server Net Streaming. Ia menghubungkan kelas 42422. Itu sebabnya saya membuat kelas yang berlaku. Anda perlukan ID Cluster. Saya tidak pernah berubah mengubah ID Cluster. Jadi ia disebabkan Cluster. Anda perlukan ID Client. Jadi ingat, kelas ini mempunyai 1,000 ID Client yang unik kerana ia menghubungkan kelas untuk anda. Net Streaming menghubungkan kelas untuk anda. Kemudian ada kelas yang berlaku untuk menghubungkan kelas. Di sini adalah bagaimana anda mengubah. Ia disebabkan Stand. SC stands untuk Stand Connection. Ia adalah sebuah pengalaman nasi. Kerana N, A, T, S Ia adalah Fire and Forget. S, T, A, N Ia adalah Revers. Ia adalah Fire and Remember forever. Jadi Stand dengan Net dan Revers. Jadi Stand Connection adalah bagaimana anda mengubah kelas. Jadi kelas ini berlaku dengan jason. Anda boleh menggunakan kelas yang anda inginkan. Tetapi saya menggunakan jason kerana ia mempunyai sebuah pengalaman dan sebuah pengalaman. Saya tidak akan menggunakan kelas sekarang. Sebaliknya, saya akan melihat pengalaman. Jadi, bagaimanapun yang anda tanya apa sebuah pengalaman ini? Ini adalah sebuah pengalaman pengalaman. Anda mengubah sesuatu. Ini adalah sebuah pengalaman yang anda menulis dan seseorang mencari sebuah pengalaman adalah sebuah pengalaman. Jadi ia melihat kelas itu, menulis kelas dan bergerak. Sebuah pengalaman yang anda menulis di sebuah pengalaman yang anda inginkan dan anda menulis kelas yang anda inginkan. Jadi ia adalah sebahagian yang penting dalam sistem pengalaman pengalaman. Jadi mari kita jumpa bagaimana pengalaman yang berlaku. Okey. Di sini anda akan mengubah kelas, bla bla bla. Tetapi saya akan mengubah semua pengalaman itu dan berhati-hati kelas yang anda inginkan. Saya menulis kelas yang anda inginkan. Tolong berhati-hati semua pengalaman yang anda inginkan sejak pengalaman bergerak. Jadi ia adalah sebahagian yang berlaku. Dan ada banyak perkara lain yang saya akan menunjukkan. Dan saya juga menunjukkan kelas yang berlaku. Tetapi apa yang anda fikir akan berlaku jika saya menulis kelas ini? Sekarang. Saya menulis kelas yang anda inginkan tanpa menuliskan. Adakah anda akan melihat apa-apa? Sebenarnya, tidak. Kerana tidak ada orang menulis kelas yang anda inginkan. Sebelum kelas yang anda inginkan dan tidak ada apa-apa yang anda inginkan. Ia berlaku. Dan tidak ada selama-lamanya. Apa yang berlaku di sini? Saya menulis kelas yang anda inginkan. Dan saya menulis kelas 6. 1, 2, 3, 4, 5, 6. 6 kelas yang berlaku. Dan pada kelas 4.30, saya sebenarnya menulis kelas yang anda inginkan sebelum menulis kelas ini. Sekarang, mari kita kembali. Ingat, kami berlaku kelas 6.30. Mari kita kembali dan menulis kelas yang anda inginkan. Tolong menulis kelas. Ia berlaku kecil. Okey, akhirnya menulis kelas. Jadi, saya hanya menulis kelas yang anda inginkan beberapa kali. Tidak ada masa untuk menulis kelas yang anda inginkan dengan kelas ini. Di sana, kami sekarang berlaku kelas 9. Jadi, itu perempuan kelas yang anda inginkan. Tiada apa-apa yang terkenal, tetapi beberapa orang akan menemukan kelas yang sangat berlaku. Baiklah. Mari kita menulis kelas ini. Mari kita berubah kelas ini. Ia berlaku kelas yang anda inginkan. Adakah anda tahu apa-apa tentang kelas yang anda inginkan apabila anda menulis kelas yang anda inginkan kelas yang anda inginkan apabila anda menulis kelas yang anda inginkan? Saya akan bercakap tentang itu. 2 kelas dari sekarang. Tapi sekarang saya akan fokus pada pilihan kelas. Okey. Beri saya pilihan. Mari kita mulai masa. Mari kita cuba pilihan ini. Saya akan memandu kelas yang anda inginkan di dalam pilihan saya di dalam pilihan saya. Pilihan itu sangat bagus. Jadi, saya hanya memandu kelas yang anda inginkan di dalam pilihan saya. Mari kita beritahu. Pada hari Singapura, Pada bulan bulan pada bulan bulan. Jika saya menulis kelas ini sekarang, ia berkata, beri saya semuanya di dalam pilihan sejak bulan bulan. Dan ia beri saya pilihan bulan, saya rasa. Mari, ia sangat mudah. Pada bulan bulan yang paling awal, ia berkata, bulan bulan bulan. Jadi jika saya berkata, pilihan bulan yang pertama akan berlaku. Mari kita lakukannya. Saya memang perlu melakukannya lebih cepat. Berapa banyak kali anda menulis kelas yang anda inginkan untuk melakukannya dan menunjukkan bahawa anda berlaku dalam kelas yang berlaku. Semua ini, anda tidak perlu membuatkan kelas yang anda inginkan lagi. Jadi, ia berlaku. Tapi beri saya semuanya yang berlaku pada masa terakhir. Beri saya semuanya yang berlaku pada masa terakhir. Jadi mari kita lakukannya. Saya suka pergi. Pada masa terakhir. Pada masa terakhir. Jika anda mahu lebih spesifik, satu kali. Jadi ini akan beri saya semuanya yang berlaku dari masa terakhir. Ini akan beri saya 3 kelas, saya rasa. Itu 3 kelas. Beri saya semuanya yang berlaku dari kelas yang berlaku. Kelas yang berlaku. 7, 8, 9. Saya ingat itu. Kelas yang berlaku 8. Saya ingat, setiap kelas yang berlaku adalah kelas yang berlaku. Jadi semuanya yang berlaku dari kelas yang berlaku, ada beberapa kelas. Ini adalah kelas yang berlaku. Ya. Pada kelas yang berlaku? Ah, ia berlaku. Dan semua kelas itu berlaku dalam kelas yang berlaku. Saya mengatakan tentang kelas yang berlaku. Jadi mereka tahu tentang kelas yang berlaku. Ya. Saya tidak tahu jika ia sempurna atau kelas yang berlaku tetapi mereka tahu tentang kelas yang berlaku. Jadi, bagaimana kelas yang berlaku? Di sini, kelas yang berlaku bermula dengan kelas yang berlaku. Kelas yang berlaku sebenarnya berlaku dengan kelas yang berlaku sebagai kelas yang berlaku. Jadi, ia tidak ada kelas yang berlaku. Ia berlaku, kelas yang terakhir saya terima. Dan itu sepatutnya kelas yang berlaku. Kelas yang berlaku. Ya. Baiklah, saya berhubungkan semuanya? Berhubungkan semuanya yang berlaku. Saya ada kelas yang berlaku. Baiklah, saya akan berhubungkan semuanya yang berlaku lagi. Dan sekarang, saya akan berkata saya akan beritahu sebuah kelas yang berlaku. Kita lihat apa yang berlaku. Kita akan bergerak. Ingat yang pertama kali saya beritahu, ada 9 kelas yang berlaku? Kenapa yang berlaku tidak ada kelas yang terakhir? Jadi, ini seperti segalanya yang berlaku. Jadi, saya akan berhubungkan dan saya akan berhubungkan lagi. Saya akan berhubungkan lagi. Saya akan beri 3 kelas yang berlaku. Saya akan beri 3 kelas yang berlaku. Jadi, sekarang, 9 kelas yang berlaku. Di kelas, kelas 3 akan berlaku ke dalam kelas itu dan akan hilang. Itu projek kelas yang berlaku. Kelas menerima kelas itu akan berlaku ke dalam kelas yang berlaku dan berlaku. Semoga tidak lama lagi, sebab yang saya berpikir, saya akan berpikir kelas yang berlaku di kelas yang diberlaku. Sebenarnya, bermula sekali lagi, tidak akan kita teruskan semuanya lagi cinta untuk kelas yang baru, tolonglah. Kemudian kita akan membatalkan angka. Jadi, ia telah berlaku semua kelas yang berlaku Jadi, hanya untuk menjaga, nama duit yang dipercayai seperti sebuah bawah yang dipercayai oleh servis di dalam kota. Dan pilihan awal yang kita bincangkan, saya menunjukkan. Sangat bagus. Sekarang pada pertanyaan, latihan dan penjaman. Dan saya sebenarnya akan mencari penjaman. Ini adalah pilihan yang terlalu jauh. Kamu akan bersyukur, kan? Pada PC yang terbaik, saya dapat... Saya dapat mempunyai... 4,000 msd. Dan mempunyai sekitar 70,000 msd. Sangat bagus. Sekarang kita akan mempercayai PC yang terlalu jauh. Mari kita lihat. Saya rasa saya perlu membuat pilihan yang lebih besar. Bagaimana sekarang? Bagus. Jadi kita akan mempercayai penjaman. Saya mengubah penjaman dari 10,000 msd. supaya kita tidak perlu menunggu sampai akhir malam. Ia akan berakhir dalam sekitar 3sd. Sekarang. Jadi, ia sebenarnya mempercayai 1,000 msd. Dan ia sedap. Ia mengubah sekitar 1,000 msd. Ia mengubah 1,000 msd. Dan ia mempercayai 1,000 msd. Penjaman mempercayai 5,000 msd. Sebaik-baik saja. Sebaik-baik saja. Sebaik-baik saja. Jadi ia sangat sedap. Dan dalam keadaan, ia mempunyai... 1,000 msd. 1,000 msd. Sebaik-baik saja. Sebaik-baik saja. Sebaik saja. Semuanya selalu lebih mudah dan lebih mudah lebih cepat. Jadi mari kita balik ke presentasi. Ada soalan-soalan? Kembali ke... keadaan itu. Okey, saya suka. Pc sangat mudah. Dan Mr. Fowler itu. Jadi, keadaan menerang... dan memastikan bahawa semua keadaan itu... adalah sebuah sequencang keadaan. Ia bermaksud, tolong berbawah semuanya. Bagaimana yang penting? Kita boleh membaca keadaan. Sebab itulah. Kita boleh membaca keadaan... untuk membuat keadaan aplikasi. Walaupun kita boleh membaca keadaan... untuk membaca keadaan. Kita boleh membaca keadaan... untuk membaca keadaan... supaya kita boleh ubah keadaan kita. Sebab itu, Mr. Fowler yang saya katakan. Apa yang saya katakan adalah... tentu saja, untuk membaca keadaan. Apabila kita membaca keadaan, kita boleh membaca keadaan. Mereka dalam industri yang disebut query handlers. Kita juga boleh membaca keadaan... tetapi membaca keadaan. Dan apabila kita membaca keadaan, perkara berlaku. Jadi apa yang berlaku? CQRS. Saya minta maaf untuk diagram yang kecil. Tetapi tiba-tiba, ia adalah keadaan keadaan... dan keadaan keadaan. Keadaan keadaan membaca keadaan. Keadaan keadaan membaca keadaan. Di sini, keadaan keadaan dan membaca keadaan... adalah menghantar keadaan keadaan. Jadi keadaan keadaan menghantar keadaan untuk anda. Sebelumnya, saya datang... untuk membaca keadaan. Dan saya memutuskan untuk... cuba menggunakan ini. Jadi klien saya berkata... apa yang berlaku dengan klien saya? Mereka adalah penghantaran. Mereka membaca penghantaran lain. Dan apabila anda beli penghantaran lain, anda akan membaca penghantaran lain. Dan... keadaan itu... seperti identifiapkannya. Apabila anda cuba membaca identifiapkannya, anda akan cuba membawa mereka ke sistem anda. Jadi kita ada masalah... kita ada masalah untuk memperbaiki... kita ada masalah untuk memperbaiki... banyak penghantaran keadaan. Sebuah command di sistem saya... ia dipanggilkan... memanakkan penghantaran keadaan keadaan. Dan itu akan menyambungkan... That lock entry is called IDMAT. Another command in my system would be Rename Medium. Actually rename the Movie or Program from the old ID to the new ID. But all I'm giving you is the old ID. System will figure out a new ID. And when this rename has been done, it would result either in rename successful event in the log or rename failed event for whatever reason. My queries in the system would be please give me the new ID given an old ID. So this I'm reading the log to generate this. And another one which tell me all the mappings of the old ID to new ID. And then as the project evolves, they will say please tell me or give me a report of all the renamed jobs done. So let's actually going to implement this in net streaming, in a CQRS event sourcing start. So the command to map old ID to the new ID. So this is a whole bunch of boilerplate. Here's my net server. Here's my payload structure, my log entry structure. So I've read the user is inputed. I want to map old ID, old 123 to new ADC. And I'm going to publish it into the log. I'm going to write this entry into the log. I'm not going to run it yet. Instead, I'm going to look at the query handler. So the query handler says I'm only looking out for the ID map event. The ID map event was the event generated from here. ID map. I'm only looking to look out for the ID map event. And I'm going to store it into my database. So as I was doing this project, I was wondering what database to use. SQL database, no SQL database. Then I decided Excel. Then I decided, well, what's the fastest database you can think of? It's basically just a map entry. So I stuck the thing into a map. All I did was I created a map called ID map and I stuck old ID with a value new ID. And of course, even though there are concurrent maps in Go right now, I decided not to use a concurrent map so I need to protect access to this map. So ID log, ID unlock. I won't run this yet. Let's continue. How does the external world look at it? So those of you who are new to Go, I'm writing a web server right now with a service endpoint. It's exactly five lines of code. It's timing. Okay, node.js is two lines of code. Sorry. So basically what it says is here's the ID endpoint. Here's the ID endpoint. Given a response writer and a request, HTTP request, look for the ID value which you submit. And then it goes and look at the ID map and gets the value. So retrieval from a map is memory retrieval. Get all the IDs in the system. What it does is it ranges over the map. That's all it does. Ranges over the map instead of select staff from whatever table, order by. So let's test out the new ID function. So first run map whole ID to new ID and then all that. So I'll copy this and save some typing. I will write my log entry. Write my log entry. Okay, I've written my log entry. So it basically says at this time I've written ID event map, ID map, whole ID, new ID. I'm going to run my query handler now. It's not going to be very exciting. All it says is I'm ready to respond to queries event. New for old query handler. That's all it says. But I'm going to use curl. So basically it says curl localhost. Giving a new ID for old 123 old ID. There it is. Tell me all the IDs. I actually put in some other IDs there. Remember, it's a log file. It remembers things. As long as this space So let's add a new entry. For the fun of it. Old 125 ZBC Run this. I'm not going to use this top of presentations anymore. It works. Give me all the IDs. It's actually pretty fast. It just runs go present really slow. So I've just entered 4125 ZBC The reason why I can actually run my presentation is it compiles the code on the fly and puts it in the temporary folder and runs the compile code. So it's doing all that time in a few seconds. In a fast BC it will be unnoticeable. In a slow PC it's noticeable. So what have we seen? We have seen nothing write to the log and a way to query the log. So we have seen query handlers. Let's look at the renamer now. A command handler. So rename media with a command that renames media files. And in distance for log entries called rename requested. So somebody writes please rename this for me and the command handler will pick up the log entry and do something with it. Rename of R. So this is how that command handler works. It listens out for rename requested. It only responds to rename requested. Other things may be the log but it ignores it. It only responds to rename requested. It creates a rename event if it's successful but it doesn't write that yet and you will publish if it's successful, you'll publish the rename event. So it's called a reactor because it reacts to events in the log. And here's where I use that whiteboard permanent thing. I don't want to rename things twice. So it's persistent. It stores state. So I store gerable name whiteboard1. I won't run it yet. Let's look at the rename service endpoint. So here is my name function. I will post to it. And my payload basically writes a log entry saying rename requested. So whenever I post to this endpoint you will write a log entry saying rename requested. Let's run this. Run the command handler. Nothing much interesting is going to happen right now. It just says command handler ready. Command handler ready. Well actually there was a name request earlier which I did. Alright, let's ignore for the time being and do that again. So all I'm doing here is curl a post event to the endpoint rename old ID new ID. And when I post it it says the rename requested event has been created. If I go back to my presentation that was the rename entry. So that's the command handler in the simplest form. So back to the requirements from my client how am I going to give me a report please give me a report of all the rename request. How will you do it? Please give me a report of all the rename jobs when it was submitted when it was renamed whether it was renamed successfully or whether failed. If you're doing it in a traditional way you had to query a database it's quite a mess. You forget to track something in your database it's gone because all that data is gone. But in an event sourcing system the data is always in the log. So all you have to do is read the log again. So can you write this given events written to the log the log entries rename requested It has a timestamp It's got the event type The command handler has written entries saying I successfully rename or I failed to rename So this is a simple way of just scanning through the log in generating the report No big D I'll leave this as an exercise for you If you choose my side of the mission the code is on GitHub It's present Go Net Streaming and I'm Syuhian Thank you Imagine you did this for your client Do you do Net Streaming? So how many events do you store in the Net Streaming database? Okay This database has about 70,000 events It's quite small I've invested 70,000 events on the production machine in about 2 seconds So it's pretty performant Do you know if it will perform in my super last skill event direction? No Net Streaming is not a Pachi Kafka Net Streaming can run as a cluster You can put 3 machines But that guarantees availability You can run it on Kubernetes If one of the nodes go down you continue to run But it doesn't scale Not yet It doesn't scale Kafka Star Actually my question is more How many events do you think Net Streaming will yield? If you can wait, unlimited Well 70,000 events 2 seconds You figure how long I'm quite familiar with the concept of event sourcing Net streaming is quite new to me I've never used Kafka for event sourcing But I've never seen any actual workloads in terms of event sourcing She has an actual workload So far it has been very performant So far There are no surprises No surprises The choice of a memory-based database was a bit controversial at least for me initially when I started But if I load the entire database in 2 seconds I don't care if the database is thrown away re-created from the log every time I start up Performance from the memory-backed database is instantaneous My clients have never seen anything so fast in their lives Do you create checkpoints in your data? Do you create checkpoints in your data? Checkpoints as in States How different do you do this? Event sourcing Don't rewind Event sourcing comes from the accounting world You write a measure and at the end of the accounting year you close your books So that is a way of thinking of it as a checkpoint For 70,000 events it's too much hassle to write a checkpoint I would consider writing a checkpoint every million events also But my client is not that big The library is not that big So I just read I never close my books, I just read the log as is So to answer your question, no I will return a checkpoint So every single time you request a query request No You give them a cache Correct My query handler cache that in memory since it's really small So if you grab he's got millions of events every day I won't put it in memory My computer is not going to be that big So I'll have a proper database back on the disk Somewhere The query handler can be a NoSQL database Exactly what I did Key value pair, that's all I did It can be a relational database If you want it to be It can be a graph database By the way, check out D-Graph It's really nice D-Graph is awesome D-Graph is really nice If you want a D-Graph I had projects where I had joins 6 or 7 tables deep That was a simple join D-Graph I had to perform that in a relational database Yes Two small questions Is it possible to tag entries? For instance, you have a few millions of events over a day but ten of them are special and you want to be able to request give me everything until the last special event So you put a tag on an event and say This is a special one You can ask for it Without knowing exactly what time it happens Sort of like key frame The answer is yes and no Of course Net streaming doesn't give you D-Graph But you can write a ridiculous simple query handler Look out for the events, take it into a map And it's done In a way, like a hook system that I can put things into the streaming server that are run locally on the streaming server but they run my hook without the need of processing the specific event No, by design and Kafka doesn't give you facility as well By design, it's a log The log doesn't have run hooks So it just writes a log without conceptually super simple Write to a log, read from the log That's it So no, it's not of all the bells and whistles event processing system Not So I have one question since you've been looking at nets and I only discovered when I saw of your conversation You said as of now it doesn't really support big clusters performing scaling or provide ability for that Do you know if it is a plan to be able to scale up The plan to scale up But I think some of you met in the Prometheus as well Prometheus doesn't scale the same way that streaming doesn't scale which means to say you can have a tree of Prometheus clusters and it can cover your entire worldwide infrastructure with billions of events but the individual node doesn't scale but you need to consolidate So in the same way you can have a tree of nets clusters these things are cheap to spin this tiny obsolete laptop can easily run 100 copies which at that point now you're looking at running your own clusters That's where that problem That's not a trivial problem We're talking about atomic time kind of skew position It's a tough problem in concurrency Distributed computing It's a tough problem Any other questions if not Dan to be coming up Let me just Sorry about needed pizza We have had