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!
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.
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
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
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
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
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!
@@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!
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
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 UA-cam.
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
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.
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.
or easier, they could use YugabyteDB or CockroachDB, they are almost 100% postgres compatible and scales horizontally by automaticaly sharding the data
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
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 !
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
@@F7gi87j63aZq Obsidian is a local application that works with files, while Notion is a shared application that works with databases between million users.
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 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.
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.
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 💯
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.
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.
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.
@@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.
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.
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
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
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.
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.
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.
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
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.
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 UA-cam). 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
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
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
@@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.
I don't get why they use this block model. Aren't those blocks only used in a single document? Why put this in multiple rows instead of creating a single document row that contains all blocks? This would decrease the number of requests to the database so much, they maybe wouldn't even need to scale up so much
Awesome video. and definitely great engineering. But i am not getting why they are storing the actual "content" in postgres. I mean they could store the metadata in the postgres but the actual content in something like s3 or maybe minio? could it be because they were trying to use postgres to handle "concurrent updates" to the same blob? I would definitely like to understand their reasoning to do so
I assume images and file attachments would probably be in S3 or something, but I'm guessing blocks that only contain text can probably just go directly into the database.
Jack did a good explanation here! Yeah mb I definitely should of use something else to reference the image. I was too focused on subscribe to kiki's bytes -.-
@@kikisbytes got it. I was just trying to understand. but a great video. i have this video saved so that i can use it to revise the partitioning and sharding a relational database.
@@mohitkumar-jv2bx awesome!! Don't mean to self plug here but my last video goes a bit more in detail with partitioning and sharding if you're curious. It just talks about how we can take a single server and scale it up and take a look at system design topics. Not sure if that will be useful at all to you but I'll leave the link below if you're curious :) Thank you again for taking the time to watch this video! ☺ ua-cam.com/video/FxAom29OEKE/v-deo.htmlsi=DNWcmKsaq0nBIyby
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.
yeah good question! I think that the reason for that is they wanted each instance to have lower load. The 20% utilization was post sharding so it's definitely going to go up as data starts to fill each shard more in the future. Considering how much they've grown, it definitely more than 20% now.
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!
What tools do you use to make your videos? I love them!
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.
hahah definitely!!
In which world is notion fast?
Always takes notable amount of time to just load my shopping list
notion is many thing but not fast 🤣
I'm passing by this nightmare in my company right now, in our case we're gonna migrate to TiDB instead of sharding
@@Ergydion I find the initial load can take a second or two but making edits are basically instant
What do you want to shard?
Notion engineers: YES
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
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
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
bro casually dropped 1mil+ youtuber level content
hahaha that so nice for you to say!!
Думаю классный коммент, а тут еще и ру
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
yay I'm so glad! As long as you can learn something new I'm happy!! Are you currently job hunting or already working?
@@kikisbytes
I am job hunting. 😂Help me get a job
insanely underrated channel, you're gonna be huge
hahah thank you!! Just want to make videos that are educational and fun to watch :)
Agreed. I wish there was more of this type of content. In-depth, real problem solving.
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!
Engineering team at notion did a fantastic job !
for sure!
Yea they did an amazing job hiring a young freelancers underpaying theym by a factor of 2/3.
@@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!
This is crasy good content dude! You will be 1+ million views in no time
awhhh thank you, I appreciate that!! 😭
Good god I feel tired just going through this can't even imagine the stress on DBAs and System architects in Notion
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
nice English subtitles, wow. you deserve a like!
Thank you!
These videos are always so good, always happy to see when a new one is posted :)
Awhh thank you so much for your support! I truly appreciate that!
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 UA-cam.
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
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
Thank you Tokuyuu I'm going to cry now😭 Awaiting your next release!
Watched a couple vids and they're wicked! Love the newer videos you've been uploading!
Thank you!!!
Amazing Video! I'll have to rewatch this over and over to understand it more.
What an amazing video, production quality at its highest level. 😁
I'm not smart enough to be here.
Bro for real I'm gonna shard myself in a minute
@@kratosgodofwar777 "Go shard yourself" might be the most CS insult ever
yeah same, i'm just nodding the entire time like i know what i'm watching
Great animations! Don't stop this
ty ty glad you enjoyed this video!
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.
Heh the profile Pic explains why it's so
Very interesting video with some cool networking and ideas related to breaking up problems relating to their datastructures
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.
that's exactly what i suggested
or easier, they could use YugabyteDB or CockroachDB, they are almost 100% postgres compatible and scales horizontally by automaticaly sharding the data
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
Their data is relational, why would they use non-relational database?
@@alexander_farkas you are right. Why would someone would want to use a hammer to drive a nail if they already have drill? 😂
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 !
Very well explained, on the scaling aspects.
Thank you!
Awesome video!
How do you make such awesome animations?
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
Go, Obsidian, go!!!
@@F7gi87j63aZq Obsidian is a local application that works with files, while Notion is a shared application that works with databases between million users.
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.
if you value time you use notion else use obsidian
@@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.
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.
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 💯
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
beautifully illustrated
Awesome content! What did you use for that animation? Very smooth.
awesome video dude, thanks for this great video
Thank you for taking the time to watch this video!
Congrats for the content Kiki!
Thank you!
How did you make this video? Was it all AFX from scratch, or something like Prezi?
Great video. Very nicely explained. Which software do you use to create these kind of animated videos ?
Really nice how do you edit your videos?
Thanks for the video
Amazing job
How are these animations made if you dont mind sharing? They are glorious! :) is it motion canvas??
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.
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.
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.
@@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.
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.
@@JoãoLinharesGomes One of their goal was also to reduce cost. Introducing Dynamo to such a large model would certainly not do that :D
Awesome make more videos explaining these stuff
Thank you, will do for sure!!
thank you for this good explanation
tldw: sharding + better connection pooling + pub-sub based migration
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
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
@@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
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
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.
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.
Thank you for the Heavenly Path cameo!
how do you do your animations?
Having a record for each block of the document is crazy, I wonder what was the reason behind this decision.
Hi Kiki. I enjoyed this video. In the future try to slow down a little during presentation & graphics for a better learning experience.
how to take backup and restore in case of sharding
This video overwhelms me🤯
Great channel 🎉
Really enjoying your videos, keep them up!
how you edit videos
Cuz they have very love sync freq, when you update something it doesnt appear for another user for minutes.
Such a great video. How do you get this info in curious? Subscribed.
the refs are in the description
Definitely seems to me like a document database would be the solution to store that type of data
Why didn't they use a database layer like Redis for caching?😊
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.
as a newbie Sol Archi. my brain hurts lmao
Haha dw some day it’s gonna make sense 😉
Jokes aside how was your transition to solution architect?
Amazing video!
Ken!!! Omg thank you for taking the time to watch this video!!
You deserve more subscribers.
Great video thanks
Imagine being the new guy on the DB team at Notion...
Can and do they do backups?
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
imagine going to the meeting with stakeholders and explaining to them why the billing jump 400% in one month.
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.
This is amazing!
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 UA-cam).
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
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
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.
Hello, thats a amazing content!!! keep doing and you will become 10ml channel soon!!!
what do you use for animations?
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
timeline and team size would be nice to know
What is the Team count at that time ?
Don't quote me on this but iirc back in 2021 they had around 150 employees. So their engineering team is probably 50-70 I wanna say. I could be wrong
Another top level video
Thank you so much!
Is this the same as db normalisation.
That was an awesome explanation, I almost understood some of it!
Not your fault though, I'm not the brightest
Thank you for watching and please let me know how I can improve to make it even easier to understand!
@@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.
Next level of DB scalability is Decentrailzed Storage solutions.
The things that come to mind when I see this: replication and upgrades. Good luck Notion!
Great video. To the point without any zig zag, but the audio do not feel natural.
Thank you for the feedback. I'm still trying to figuring out audio so please bear with me while I get the right settings :)
I don't get why they use this block model. Aren't those blocks only used in a single document? Why put this in multiple rows instead of creating a single document row that contains all blocks? This would decrease the number of requests to the database so much, they maybe wouldn't even need to scale up so much
What did I just listen to at 4 in the morning
Awesome video. and definitely great engineering.
But i am not getting why they are storing the actual "content" in postgres. I mean they could store the metadata in the postgres but the actual content in something like s3 or maybe minio?
could it be because they were trying to use postgres to handle "concurrent updates" to the same blob? I would definitely like to understand their reasoning to do so
I assume images and file attachments would probably be in S3 or something, but I'm guessing blocks that only contain text can probably just go directly into the database.
@@jackdavenport5011 ok. Could be. In the video, the was a “content” column showing jpg, text etc. thats why i asked.
Jack did a good explanation here! Yeah mb I definitely should of use something else to reference the image. I was too focused on subscribe to kiki's bytes -.-
@@kikisbytes got it. I was just trying to understand. but a great video. i have this video saved so that i can use it to revise the partitioning and sharding a relational database.
@@mohitkumar-jv2bx awesome!! Don't mean to self plug here but my last video goes a bit more in detail with partitioning and sharding if you're curious. It just talks about how we can take a single server and scale it up and take a look at system design topics. Not sure if that will be useful at all to you but I'll leave the link below if you're curious :) Thank you again for taking the time to watch this video! ☺
ua-cam.com/video/FxAom29OEKE/v-deo.htmlsi=DNWcmKsaq0nBIyby
db migrations are always painful, great to see they had a solution
96 cpu still overwhelmed? w00t?
Notions dark read testing? 7:30 this term is not existing
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.
I wonder why they did not use a document database from the get go
You are a 1 million UA-camr in disguise
hahaha that means alot! One day we'll get there!
could have used json type of database instead.
You gotta give us the link to the waifu document bro
haha you know I can't share that 😂
So what you're saying is that they should've started with Cassandra.
So they essentially implemented a b-tree?
Why would you only want 20% utilisation on your instances? Isn’t that an underutilisation of resources?
It's left for unwelcomed spikes
yeah good question! I think that the reason for that is they wanted each instance to have lower load. The 20% utilization was post sharding so it's definitely going to go up as data starts to fill each shard more in the future. Considering how much they've grown, it definitely more than 20% now.
Why they chose postgres?
This shows why it was better to use a distributed DB in the first place. Cassandra, DynamoDB...
Exactly, would be interesting to calculate the technical debt due to Postgres in that case vs using a distributed solution
"in the first place", oh wow we got a genius over here.
What about firestore ? 😮
This became so complex.
These are the kinds of problems I’d kill my business to have😂
Currently building product with postgres this gives me nightmares 😢