Why separate tables and databases (how to design the database level when designing a high concurrency system)? Which sub-database sub-table middleware have you used? What are the advantages and disadvantages of different sub-database and sub-table middleware? How exactly do you split the database vertically or horizontally?

Why separate database and table? (How to design database level when designing high concurrency system?)

If we are now a small start-up company (or a new department just emerging from a BAT company), we have 200,000 registered users, 10,000 daily active users, 1,000 daily data volume of single table, and 10 concurrent requests per second at most at the peak. Oh, my God, that’s the system. Just pick someone with a few years of experience and bring in a couple of fresh graduates and do whatever you want. We were lucky enough to meet a CEO who took us to the next level. The business grew rapidly, and within a few months it had 20 million registered users! 1 million daily active users! Daily single table data volume of 100,000! Peak peak of 1000 requests per second! At the same time, the company also incidentally with two rounds of financing, income several hundred million yuan ah! The valuation of the company reached a staggering several hundred million dollars! That’s the rhythm of the little unicorn! Okay, that’s okay. Now you’re feeling a little stressed out. Why? Because 100,000 more data a day, 3 million more data a month, now we have millions of data in a single table, will soon be over 10 million. But I can barely hold on. Peak request is now 1000, we deployed several machines online, load balancing, database support 1000QPS is also ok. But now people are starting to feel a little worried, what’s next… And over the next few months, oh, my God