In a web application situation that organizations can register and use to manage data, what are the pros and / or cons of the following two options?
One database per organization , where the data for each organization is completely divided into separate databases, with one (very small) centralized database that contains the main list of organizations and their database identifiers.
One database for the entire application , where all objects are stored in one large database and shared using the organization identifier column in each table.
Some other aspects to consider:
- The data will never be shared with organizations in the database, and credentials will not be entered.
- Some organizations will allow the general public to register an account in an application to send data, others will not.
- We plan to expose an open API for organizations to integrate their current processes with our application. Organizations will be able to create API keys to access their data, but there will be no public API that spans organizations.
- Companies will store potentially sensitive data in the app.
From your experience and / or knowledge, what is the right way to solve this design decision (or is there a βrightβ way at all?)
source share