Notion hit 100 million users recently so I wanted to do quick cover of their database evolution. Hope you get to learn something from this. Thank you again for taking the time to watch this video and for your continued support!
@kevinwu749714 күн бұрын
What tools do you use to make your videos? I love them!
@jackdavenport5011Ай бұрын
This video has made me realise how much of a nightmare it must be to scale up a database in production. But Notion is insanely fast now so it obviously paid off well.
@kikisbytesАй бұрын
hahah definitely!!
@ErgydionАй бұрын
In which world is notion fast? Always takes notable amount of time to just load my shopping list
@user-jt4hx27 күн бұрын
notion is many thing but not fast 🤣
@everton000rsc27 күн бұрын
I'm passing by this nightmare in my company right now, in our case we're gonna migrate to TiDB instead of sharding
@jackdavenport501126 күн бұрын
@@Ergydion I find the initial load can take a second or two but making edits are basically instant
@smithwillnotАй бұрын
What do you want to shard? Notion engineers: YES
@GuRuGeorge03Ай бұрын
coming up with this solution is tough for sure but the real challange is orchestrating all the teams and people involved in this. that job is incredible and I bet there were a few key people who managed all this and had to do a lot of overtime to achieve it, especially when critical errors & bugs popped up
@taylorjohnsonct4 күн бұрын
Exactly what I was thinking... I was reminescing over what my company went through when we converted from a monolith to a micro-services architecture, but this... this is something you can't do without investor money, the literal best talent, and some of the best management in the world. Whoever these engineers and project managers are should be incredibly proud. Also, can you imagine being a new backend dev or database guy at Notion :D:D:D:D:D:D
@тимур_атмосферныйАй бұрын
bro casually dropped 1mil+ youtuber level content
@kikisbytesАй бұрын
hahaha that so nice for you to say!!
@roninreillyАй бұрын
Думаю классный коммент, а тут еще и ру
@bhaaratsharma602322 күн бұрын
We recently did a db upscale with around 12tb of data which is just a fraction of what Notion did and it was already a herculion task for us. It took us weeks of planning and work to make it a success. Working with data is one of the most challenging things in IT
@andrefu4166Ай бұрын
insanely underrated channel, you're gonna be huge
@kikisbytesАй бұрын
hahah thank you!! Just want to make videos that are educational and fun to watch :)
@KasukkeАй бұрын
Agreed. I wish there was more of this type of content. In-depth, real problem solving.
@foreverskeptical1Ай бұрын
Your videos are so short and clean. Even though I am just a recent grad I get a lot of value from these vids. also didnt realize you could scale so much wwith postgresql
@kikisbytesАй бұрын
yay I'm so glad! As long as you can learn something new I'm happy!! Are you currently job hunting or already working?
@anirbanpatra3017Ай бұрын
@@kikisbytes I am job hunting. 😂Help me get a job
@ask_carbon29 күн бұрын
Good god I feel tired just going through this can't even imagine the stress on DBAs and System architects in Notion
@code5834Ай бұрын
Engineering team at notion did a fantastic job !
@kikisbytesАй бұрын
for sure!
@FlockstaАй бұрын
Yea they did an amazing job hiring a young freelancers underpaying theym by a factor of 2/3.
@code5834Ай бұрын
@@Flocksta yeah that is very true ! i totally agree with you. Talent is used to maximum but compensation is tried to keep at minimum for them to improve the profit margins, sad reality!
@captdevАй бұрын
This is crasy good content dude! You will be 1+ million views in no time
@kikisbytesАй бұрын
awhhh thank you, I appreciate that!! 😭
@siddairАй бұрын
Great video!! Loved this level of detail along with the animations. This is a differentiating factor from many other videos on such topics that don't go into detail but cover such topics at a very high level. You could link to explanations of some of the concepts mentioned for understanding but continue keeping this level of detail as that is what makes it great in the first place!
@reggieljАй бұрын
I'm not smart enough to be here.
@kratosgodofwar777Ай бұрын
Bro for real I'm gonna shard myself in a minute
@lukababuАй бұрын
@@kratosgodofwar777 "Go shard yourself" might be the most CS insult ever
@hd_yАй бұрын
yeah same, i'm just nodding the entire time like i know what i'm watching
@GlynnPowell20 күн бұрын
This is great PR for Notion. I loved Notion when it arrived, went all in, then it slowed to a painful pace so I jumped to Obsidian.... This has got me buzzed to come back to Notion! Great video
@justlovecode2522Ай бұрын
nice English subtitles, wow. you deserve a like!
@kikisbytesАй бұрын
Thank you!
@kiro_fАй бұрын
These videos are always so good, always happy to see when a new one is posted :)
@kikisbytesАй бұрын
Awhh thank you so much for your support! I truly appreciate that!
@kaffii1238Ай бұрын
Great video! Just want to appreciate your videos as no one else does good summaries of engineering blogs or writeups, and I appreciate the lack of dilution of the concepts since there's just way too much content catered to beginners and not enough of more mid-level content like yours (digestable, consumable summaries of interesting solution architecture writeups) out there on KZbin.
@kikisbytesАй бұрын
Thank you for letting me know! It’s definitely a goal to make videos for people with experience. I was also worried that people wouldn’t be able to follow. But I’m glad that intermediate folks are okay with the pace
@TokuyuuTVАй бұрын
so educational and entertaining at the same time!! i know nothing about systems but the video was so well-paced and funny I kept watching
@kikisbytesАй бұрын
Thank you Tokuyuu I'm going to cry now😭 Awaiting your next release!
@SPOOKEXEАй бұрын
Watched a couple vids and they're wicked! Love the newer videos you've been uploading!
@kikisbytesАй бұрын
Thank you!!!
@RedyfАй бұрын
What an amazing video, production quality at its highest level. 😁
@davidmata3104Ай бұрын
Wouldn't it be easier to use a No-SQL database like Cassandra? Cassandra already manages all the logic to distribute the data in partitions. It also distributes the data into the different nodes and by its nature it scales horizontally.
@cestlacroixАй бұрын
that's exactly what i suggested
@DeepDarkierАй бұрын
or easier, they could use YugabyteDB or CockroachDB, they are almost 100% postgres compatible and scales horizontally by automaticaly sharding the data
@Aramik-lp5fnАй бұрын
My guess is that in their core product they are relying heavily on some sql features that they couldn’t afford to lose and that’s why chose extreme sharding compared to no-sql
@alexander_farkas25 күн бұрын
Their data is relational, why would they use non-relational database?
@davidmataviejo331325 күн бұрын
@@alexander_farkas you are right. Why would someone would want to use a hammer to drive a nail if they already have drill? 😂
@BenHouston3DАй бұрын
Just continually sharding their DB across more and more machines seems like a linear solution to their exponential user growth. Isn't there something they can change in their architecture to avoid needing 96 separate DB instances? That is sort of ridiculous.
@KenSnyder1Ай бұрын
My thought too. I suspect they could make the application much smarter by putting in-progress work into a non-sql database to avoid frequent writes to postgres. Also, one row for each text block seems over normalized. End armchair analysis.
@user-dc9zo7ek5jАй бұрын
Their team is big (It says that they are around 500 total employees), probably around 200, working on different parts of the app. Most of them probably fall into "this is not my job" or "I don't have enough power to say" type of situation and they keep patching.
@Zuriki09Ай бұрын
@@KenSnyder1 seems like it would just shift the problem to another system. OK, your pgsql isn't getting hammered with writes, but now your redis, mongodb, etc. is and then it's still going to push all that data to pgsql anyway and also you have to pull down from both pgsql for committed data and then reconcile that with uncommitted data in your intermediate store in order to get consistency for the user. For users they also tend to notice read delays more than write delays unless the write delay is substantial or catastrophically fails. Besides which, this video is narrowly focused on how they fixed specifically a database problem. We don't know if they already had other performance solutions in place such as caching unchanged blocks or whole documents to avoid database reads.
@JoãoLinharesGomesАй бұрын
Yeah, it kind of seems like they should've stuck with writing to a NoSQL database like Dynamo and streamline everything to be stored in the postgres database, maybe. Maybe they didn't do it because Notion needs immediate reads after writing data as events, but that would be probably faster using Kafka. But who am I to tell this is the best solution. That's not easy at all Imao.
@RatonBroyeur19 күн бұрын
@@JoãoLinharesGomes One of their goal was also to reduce cost. Introducing Dynamo to such a large model would certainly not do that :D
@RatonBroyeur19 күн бұрын
Great video. Great topic. Adapting your infrastructure to your customer growth is one of the hardest thing to do. Sooo many constraints. Great job notion !
@codingprojects1867Ай бұрын
Thank you for the Heavenly Path cameo!
@somedayitsgonnamakesenseАй бұрын
as a newbie Sol Archi. my brain hurts lmao
@kikisbytesАй бұрын
Haha dw some day it’s gonna make sense 😉
@kikisbytesАй бұрын
Jokes aside how was your transition to solution architect?
@JeffParker45Ай бұрын
Amazing Video! I'll have to rewatch this over and over to understand it more.
@kyratking4673Ай бұрын
Noting to never interview for Notion XD.. But jokes aside, it's a huge effort collaborating with the team all the while maintaining the development of such a feature.. kudos to the team
@PostMasterNickАй бұрын
The things that come to mind when I see this: replication and upgrades. Good luck Notion!
@SolomonSunder28 күн бұрын
A company I worked for faced similar issues during Covid. We were IOPS heavy, relied on SMB, Windows nested folders additionally. It was fixed using a technique similar to what Notion did here.
@glowingone177417 күн бұрын
Heh the profile Pic explains why it's so
@addie4241Ай бұрын
Very interesting video with some cool networking and ideas related to breaking up problems relating to their datastructures
@hecker688Ай бұрын
awesome information so in-depth, would be great if you could explain the research that went behind learning about how they did it and why they did it! insane video 💯
@kikisbytesАй бұрын
Thank you for the feedback!! Yeah I definitely cut down some details to try to fit within the time limit but will keep that in mind for the future
@ruslan_yefimovАй бұрын
Great animations! Don't stop this
@kikisbytesАй бұрын
ty ty glad you enjoyed this video!
@mailtochungАй бұрын
Document based database seems the best data architecture here. Notion is very document centric. Having 1 document as a doc in db makes so much sense. Sharding and clustering would be a lot easier because the relationship between documents will be minimized. I guess they had a wrong architecture in the first place and its too hard to change in the middle of the exponential growth.
@JumezkiАй бұрын
Great video and channel overall! Just some feedback: I found the voice-over speed a bit too fast for educational content like this, which made it challenging to fully absorb all the information. Slowing down the player to 0.75x speed makes it too slow and isn't a practical solution. Perhaps a slight reduction in the speaking pace would enhance the learning experience. Hope this helps with finding the right pacing. Keep up the great work, you've just gained a new subscriber! 🤩 Edit: I would say the current speed feels like it's at 1.05x when it should be at 1.00x, just a touch too fast.
@Kylian19Ай бұрын
nah perfect for me
@kikisbytesАй бұрын
Thank you for the feedback!!! This is noted and I will try to make the pacing a better for the next video.
@shadowpenguin3482Ай бұрын
I watched this at 2x like most content and I considered reducing the speed to 1.5x but ultimately wasn’t necessary
@abhaykrishna8368Ай бұрын
It was good enough speed
@rafael_nas24 күн бұрын
I could not disagree more, english is not even my native language and I had no trouble to get all the content at 1x
@69k_goldАй бұрын
I think Notion is still pretty slow for a majorly text-oriented application. I mean yes it does support non-text objects, but it's majorly text-based, and it's as slow as OneNote sometimes. Should text really take that long to load? Idk
@wz3xn9os3sАй бұрын
Go, Obsidian, go!!!
@user-dc9zo7ek5jАй бұрын
@@wz3xn9os3s Obsidian is a local application that works with files, while Notion is a shared application that works with databases between million users.
@user-dc9zo7ek5jАй бұрын
Its slow not because there is a lot of text, but because they have a lot of abstractions and services that they ask for your data in a representable format. Just like any other big company app, making many requests to many things at once seems like a fine approach. This is probably so that they allow large teams to work independently. I remember a Doordash developer interview that said they have around 500 microservices which is a bit too much for me. Good performant alternative to Notion is MediaWiki. Its design is "old-school" and it runs very quick.
@veryCreativeName0001-zv1irАй бұрын
if you value time you use notion else use obsidian
@yash_renaissance_athleteАй бұрын
@@veryCreativeName0001-zv1ir lol that's the stupidest comparison between Notion and Obsidian. I have been using Obsidian aggressively since more than a year, I can't be shifted to any other platform.
@srki22Ай бұрын
This shows why it was better to use a distributed DB in the first place. Cassandra, DynamoDB...
@quentin.aventure28 күн бұрын
Exactly, would be interesting to calculate the technical debt due to Postgres in that case vs using a distributed solution
@supersai419826 күн бұрын
"in the first place", oh wow we got a genius over here.
@whistlingtree8756Ай бұрын
beautifully illustrated
@WaxPaxler29 күн бұрын
db migrations are always painful, great to see they had a solution
@raghavmahajan3341Ай бұрын
tldw: sharding + better connection pooling + pub-sub based migration
@vedangmirashiАй бұрын
Awesome in-depth video. As stated in some other feedback comment, it might be a bit overwhelming for beginners or people with non-expert level of tech understanding (who are majority of the target audience on KZbin). You could maybe incorporate some short explainations in about a concept (shard, pgbouncer, etc.). People who are interested in learning that concept can always go to a more detailed in-depth video (you can also route them to your topic related videos if available) More power to you and good luck! Subscribed
@xeteraАй бұрын
I disagree, it's nice to see a channel just tell an animated story like an engineering blog without watering everything down to a tutorial like every other channel
@Pipe0481Ай бұрын
That was an awesome explanation, I almost understood some of it! Not your fault though, I'm not the brightest
@kikisbytesАй бұрын
Thank you for watching and please let me know how I can improve to make it even easier to understand!
@jackdanielson1997Ай бұрын
@@kikisbytes I personally think this video was perfectly paced and is the right length of time for what it covered. You obviously need some background in the concepts to understand them, so making it easier to understand would be to actually teach the concepts / technologies as well which would be an entirely different video, in my opinion.
@mlocate9 күн бұрын
Having a record for each block of the document is crazy, I wonder what was the reason behind this decision.
@JulioHORАй бұрын
Congrats for the content Kiki!
@kikisbytesАй бұрын
Thank you!
@mortal_coder486924 күн бұрын
Hi Kiki. I enjoyed this video. In the future try to slow down a little during presentation & graphics for a better learning experience.
@kittoh_Ай бұрын
Awesome content! What did you use for that animation? Very smooth.
@blue_lobster_12 күн бұрын
thank you for this good explanation
@user-dc9zo7ek5jАй бұрын
It seems to me that they have overengineered their architecture and are solving problems the hard way, because they are smart enough to do it. KISS.
@atomiccodingАй бұрын
Awesome video! How do you make such awesome animations?
@mrexplorerrishabh2185Ай бұрын
Great video. Very nicely explained. Which software do you use to create these kind of animated videos ?
@taylorjohnsonct4 күн бұрын
Imagine being the new guy on the DB team at Notion...
@scottzeta306721 күн бұрын
This video overwhelms me🤯
@shreyashrajАй бұрын
Great video. To the point without any zig zag, but the audio do not feel natural.
@kikisbytesАй бұрын
Thank you for the feedback. I'm still trying to figuring out audio so please bear with me while I get the right settings :)
@t3chnicolorАй бұрын
How did you make this video? Was it all AFX from scratch, or something like Prezi?
@PatMofRockiesАй бұрын
You deserve more subscribers.
@archamondearchenwold808422 күн бұрын
How are these animations made if you dont mind sharing? They are glorious! :) is it motion canvas??
@aadarsh8306Ай бұрын
Awesome make more videos explaining these stuff
@kikisbytesАй бұрын
Thank you, will do for sure!!
@xsuritox105827 күн бұрын
What did I just listen to at 4 in the morning
@shauryatomer1058Ай бұрын
awesome video dude, thanks for this great video
@kikisbytesАй бұрын
Thank you for taking the time to watch this video!
@taffareldelimaoliveiraАй бұрын
imagine going to the meeting with stakeholders and explaining to them why the billing jump 400% in one month.
@adziak28 күн бұрын
Next level of DB scalability is Decentrailzed Storage solutions.
@FriendryАй бұрын
Really enjoying your videos, keep them up!
@googleaccount7252Ай бұрын
Really nice how do you edit your videos?
@rigveddesai5843Ай бұрын
amazing engineering and a great video explaining it all, just wondering why you would be happy with ~20% cpu utilization during peak hours, sorry if it sounds like a noob question but i genuinely don't get it
@sakamad4856Ай бұрын
CPU utilization is the amount of the CPU that the application is using up. So high CPU utilization is a bad thing. CPU utilization at 100% means your application taking up all the computational power of the CPU, which is bad because now no other programs can run
@rigveddesai5843Ай бұрын
@@sakamad4856 i assume notion would be running their dbs on dedicated servers? i get why 100% would be bad, but 20 seems too low lol
@jackdanielson1997Ай бұрын
I think they're saying is what used to be 90-100%+ utilization is now 20%, not that 20% is some magical number they landed on
@kikisbytesАй бұрын
This is a good question! I used to work at a team where our postgres instance was nearing and sometimes hitting full utilization. This was scary because we were running some critical services and our db performance was soo bad that our queries were super slow to a point where requests were being dropped. So I can see why notion was happy that it dropped to ~20% and not having to deal with these types of issues. On the plus size, it gives room for future growth that they won't have to worry about for a while.
@user-dc9zo7ek5jАй бұрын
They allowed the utilization to go down because of the optimization they did. Keeping your utilization high can be dangerous because peak usage can cause bottlenecks and even cascade failures from time contraints. I had a project that was using 10% for 22 hours, but the other 2 hours it was taking 80% CPU. It is always better to have more space than you need. Plus at that scale that they are operating it does not really matter the cost and wastefulness.
@leomyskyАй бұрын
Thanks for the video Amazing job
@mohagungnursalim8219Ай бұрын
Great channel 🎉
@aleksandrephatsatsia4530Ай бұрын
Hello, thats a amazing content!!! keep doing and you will become 10ml channel soon!!! what do you use for animations?
@OakbitАй бұрын
This is amazing!
@igeoorge3gАй бұрын
Notion is everything but fast. That's 4 sure. Amazing video anyways🎉 thanks 4 sharing
@kikisbytesАй бұрын
Thank you for watching!!
@5590priyankАй бұрын
The reason postgres goes in read only mode when transaction ids are exhausted is - read operations do not need transactions, only write operations need. hence read operations can still go on without the need of new transaction ids for them.
@XiWang-q1iАй бұрын
0:40 Oh, the friend you mentioned, did he also make this video?🐶
@kikisbytesАй бұрын
maybe... 😛
@rulofmg25 күн бұрын
if their user is exploding again then they would need to do the same thing again right? is this the industry standard on scaling the database or did they just stuck on this tech? I feel like this kind of scaling will hit a wall sometimes soon
@aydontlossАй бұрын
Great content but I have few advices for you: 1. Change your mic or buy pop-filter to both reduce bass in your voice and pops in the sound. (You can use HyperX Quadcast it's a great mic, you can also buy a pop filter to it total will cost 100-120$) 2. Try to explain things a bit clear and slow (I mean slower than this video, as long as it's understandable it's great). For animations and sound effects: 1. When you build an animation you shouldn't have too many focus points, when you animate something viewer will focus into that point so your next animation should start from that position too. This will keep animations and video easier to track and understand. 2. Do not use too many sound effects and keep their volume low especially when compared to your own voice. My last suggestion is about target audience, if you want to reach more people you need a larger target set. The content you've created is great but it's not for everyone, for example my friend who has just started learning JS won't be able to understand this video at all xd. Your title was great though this can increate the CTR rate but may decrease the watch times since some people won't be able to follow-up and understand the things you are talking about even if they wonder hos this happened. Instead of using so many technical explanations use real world examples which will be easier to understand and also easier to explain. This will both let you explain things in a more understandable way and let user be able to follow the content and have fun. I don't mean don't use technical explanations I mean use real world examples to explain them in some cases. This is also what Fireship channel does and this is also why that channel keeps the high views because his videos are easy to understand and follow. Great content GL HF.
@kikisbytesАй бұрын
heyyyy omg thank you for much for these feedback!! I'm saving these and will incorporate your suggestions! Would you be able to help give an example of what you mean by use real world examples in the context of this video? Just want to make sure I understand what you mean to improve for future videos. Thank you again for taking the time to provide these. I love getting constructive feedback to work on for future videos.
@KavantixАй бұрын
While I get what @aydontloss is saying and it might help getting a bigger audience I do disagree with the importance. I really enjoyed the video and for once I didnt feel the need to 2x speed most of it, having videos that are high quality and more advanced is so nice and something that is missing quite a bit, keep up the good work @kikisbytes
@nlama-i7yАй бұрын
how to take backup and restore in case of sharding
@yhavinАй бұрын
Next video, I wanna know how Kiki's Bytes channel scaled to 1M subscribers without exploding
@kikisbytesАй бұрын
hahaha that made me laughed so hard 😂 . One can dream 😜
@cole.maxwell19 күн бұрын
These are the kinds of problems I’d kill my business to have😂
@danser_theplayer01Ай бұрын
So what you're saying is that they should've started with Cassandra.
@kengreeffАй бұрын
Amazing video!
@kikisbytesАй бұрын
Ken!!! Omg thank you for taking the time to watch this video!!
@marceelinoАй бұрын
It's still horribly slow and if you have bigger tables with connections to others it's unusable. Notion is just a passing trend that maybe shouldn't have happened.
@danser_theplayer01Ай бұрын
Were those inconsistent size blocks within blocks within blocks stored out in the wild instead of belonging to a specific user? Also, having an id for each and every action must be a nightmare especially since they didn't do ULIDs.
@ayonsamajderАй бұрын
Another top level video
@kikisbytesАй бұрын
Thank you so much!
@chhihihiАй бұрын
Brah, they need to start looking into no sql databases like Scylla or Cassandra if their volume is this high.
@cestlacroixАй бұрын
exactly
@ToasterPanicАй бұрын
Notion bought out my email service, shut it down (they only properly warned us a week before they shut it down!), and I will never forgive them
@87hb775ygggАй бұрын
Except not forgiving them, what else are you going to do?
@dd371528 күн бұрын
@@87hb775yggg he will hack your e-dildos in Notion HQ
@hepticftw26 күн бұрын
Same, not sure why anyone would ever want to use their product I swear half the notion users spend more time taking notes than actually using them
@PhenomRom26 күн бұрын
@@hepticftwthat’s the point
@shellderpАй бұрын
Relatively easy to scale when your customers don't interact
@KrishnaDasPC13 күн бұрын
Currently building product with postgres this gives me nightmares 😢
@vorandrewАй бұрын
how do you do your animations?
@romeshjayawardene3551Ай бұрын
Great video thanks
@ARed1124 күн бұрын
how you edit videos
@convolutionalnn258228 күн бұрын
The delivery is too rapid that I couldn't comprehend anything given that English isn't my first language. If you could stretch the video more, then I think it would increase the viewers and income (20 minutes videos yield more income than 10 minutes video on same view, I guess) and simultaneously the experience
@santiago_racing27 күн бұрын
you can always set playback speed to be slower
@MubashirullahD22 күн бұрын
You lost me when horizontal started. Too advanced for me
@DTorange1Ай бұрын
Resharded resharding :)
@kikisbytesАй бұрын
same thought when I was doing the research 🤣
@adriablancafortАй бұрын
Banger
@rockshankarАй бұрын
timeline and team size would be nice to know
@hooch912Ай бұрын
I’m curious if any in-memory caching was considered or also used on this expansion odyssey. Not every read needs to go to the database.
@blubblurbАй бұрын
Can and do they do backups?
@lukasnel482822 күн бұрын
Why didn't they use a database layer like Redis for caching?😊
@ODoyleRules-uh4hc18 күн бұрын
It's quite possible they wouldn't see enough benefit from caching to justify using it. There might not be enough people sharing the same documents to see much performance improvement, and every time someone made an edit to a document the cache would need to be updated. I suppose it depends on how they check for updates, etc.
@zweitekonto9654Ай бұрын
Is this the same as db normalisation.
@_prothegeeАй бұрын
96 cpu still overwhelmed? w00t?
@yoursweetyguy7 күн бұрын
how do you know?
@wz3xn9os3sАй бұрын
No, it is not fast enough! Obsidian rules!!!
@Daniel-i8v2i13 күн бұрын
why not just use cockroachdb instead of manually sharding