I am looking for a suggestion for a DB design not in terms of schema design but how should DB tables be distributed or spread over different servers.
Simply putting: I have 10-15 tables for example which contain all the information of users who register.
But if the number of users is huge (100 million+), should the DB schema be divided into different servers having db instances dedicated to store the data for different tables
What I understand is there should be an optimal limit for the size of data that should be monitored by one DB instance. What if that optimal limit is crossed?
Please advise.
Regards,
Mayank
Edit:
Well, I would restate my question and will try to make the things clear.
The things that came in my mind:
- Write a DBSchema to support the app. The app will allow user registration, status updates etc as in facebook or something
- Only one DB instance will be used, which can theoritically (may be practically too by postgresql: http://www.postgresql.org/about/) be supported.
- With the increase of users just increase your server capacity. (Both harddisk and CPUs)
But, as far as I understand, more the data is more time for look up.
Moreover, all data at a central DB may not have flexibilty to spread it throughout the locations with users density.
The different servers may not be placed regionally. So, a thought of things distributed.
Regarding distributed DBs or filesystems I’m not comfortable as much as I’m with SQL DBs.
So, I thought of logically distributing the tables to be monitored under different DB instances/Servers.
I’m trying to write such an app for the first time (Never worked on DBs before :(). Please comment if what I think is weird, or my understanding of DB things are zero or anythings like that.
I’ll be highly grateful.
Regards,
Mayank
I would suggest that if you are even contemplating a database of this size that the first thing you need to do is hire an expert in large database design and high performance. This is a complex subject that cannot be answered on a forum. It requires that you have full-time expertise available. That is the best way to guarantee a successful implementation.