I am designing common web-based CRM application for huge number of tenants. Users (tenants) sign up online for use of the application. Initially, there will not be so many users but in future there are possibilities.
I want to use single shared MySQL database. It will be impossible to create separate database for each tenant because of the chosen scenario and future functionality integrations. The programming will be in PHP.
But, how should I address data scalability issues:
- What if rows in the table exceed the size of table. How to address this issue?
- If I use auto increment BIGINT primary key, for example for 'contacts' table. What will happen after the largest value of BIGINT reached?
- Is it best practice to use foreign key constraints in real huge data tables? How will it affect the performance of the application, if used or not used?
- Will MySQL be good fit for this kind of applications?
- What is Zoho CRM's database technique for multi-tenancy?
"nine quintillion two hundred twenty-three quadrillion three hundred seventy-two trillion thirty-six billion eight hundred fifty-four million seven hundred seventy-five thousand eight hundred seven"makes my head spin - Professor Abronsius