One workspace per business, one database per customer — why that design keeps your data yours
Most cloud software puts every customer's records in one big database and relies on a filter to keep them apart. We did not, and the reasons are worth five minutes.
How most software does it
One database, every customer's rows in the same tables, and a business_id column on each. Every query must remember to filter by it. Almost every one does. The ones that do not are the data leaks you read about — a support page that showed the wrong customer's invoices, an export that included a neighbour's tenants.
How Premises does it
Your workspace is a database file of its own. When you sign in at your address, the platform opens that file and only that file. There is no query that could return another business's rows, because they are not in the database being queried. The isolation is physical, not a filter someone has to remember.
What it buys you
- Privacy by construction. A bug cannot show you someone else's tenant. The data is not reachable from your workspace.
- Your own encryption. Uploaded files are sealed with a key that belongs to your workspace. The same bytes, in another workspace, do not decrypt.
- Your own backups. Nightly snapshots of your file; weekly copies offsite. A restore is your workspace, not everybody's.
- Your own export. Everything you own, in open formats, whenever you like. Because it is one file, "everything" is a precise word.
What it costs us
Running thousands of small databases instead of one large one is more work on our side — migrations run per workspace, the nightly jobs loop. We think that is the right place for the work to be. It is the difference between a building with apartments and a dormitory with curtains.
Related
Describes the platform as it is today. Something out of date? Tell us. · help 0.12.3