[SOLVED] Multi Tenancy separated by database: saas, schema and maintenance
- 0
- Databases
- Self Hosted
You asked for resources if I'm not wrong to learn? 😅
I know where to find AppWrite docs, and it is, indeed, well documented. But I'm asking if there are any best practices for creating a SaaS application in AppWrite since information like this isn't something you'd likely find in the docs but more rather on a blog or forum. But I don't think you can help me with my problem. I will close this thread now.
Oh, yes, I can help you
And other people too
@TheIlluminatiMember Tell me firstly what data or what kind of data you will have and I will try to find the best way you could structure it
Without that I can't determine what is the most optimal solution
@TheIlluminatiMember Correct me if I'm wrong.
You want to have a main
database that stores the various tenants
. Now you also want to have a different database for each tenant
, that all have the same structure, correct?
Just to be sure, this is what you want to do right?
If this is what you want to do, I suggest isolating all this behaviour inside of one Database.
What you could do is, create a database called master
.
Inside master
, have a collection called main
which stores all your tenants in documents.
You can then create collections for all your tenants inside of the master
database, by following a naming convention like tenant-[name/id]
. Whatever data you want to store for each tenant, can be done easily in the form of documents, and since it's all inside one single DB, you won't have to worry about referencing a new Database when updating.
What I'm looking for is a structure like this.
Yes, that's correct. You don't need to have more than 2 databases for that
Yes I do, because in this example I only have 1 tenant named Test
The Light blue database is linked to a tenant in the main database
If I have 2 tenants there should be 2 light blue databases
You should associate documents with the tennant document with a relationship or manually with an ID In cloud, instead of having independent databases
I may consider going for that approach but I would much rather make use of the databases since it would be very easy to query data from it depending on which tenant is using the application.
So when you want to get all associated, you basically apply a filter for that
Yes, but as said, it's not the most optimal
Yes, you can use separate databases for each of your tenants. As others have mentioned, it doesn't create a separate mariadb database but is a way to segregate data into different mariadb tables.
I can't place this logic in the function because that would mean when I create a tenant now and update the function later the existing tenants would not be updated.
I think functions are the way to go, but, as you said, existing tenants would need to be updated. maybe manually...maybe your function can update the existing ones too. it all depends on you.
Thank's for clearing things up for me @Steven! I'll create functions to not only create but also update tenants. I will mark this as solved now.
[SOLVED] Multi Tenancy separated by database: saas, schema and maintenance
But collections don't separate data into different tables?
Each collection is a separate mariadb table
Recommended threads
- How to Avoid Double Requests in function...
I'm currently using Appwrite's `functions.createExecution` in my project. I want to avoid double requests when multiple actions (like searching or pagination) a...
- Send Email Verification With REST
I am using REST to create a user on the server side after receiving form data from the client. After the account is successfully created i wanted to send the v...
- Use different email hosts for different ...
Hello, I have 2 projects and i want to be able to set up email templates in the projects. Both projects will have different email host configurations. I see ...