Mas @khannedy , izin bertanya, saya sempat baca-baca untuk aplikasi dengan sistem multitenant itu secara database bisa dibagi menjadi 3, yaitu:
a. satu database digunakan bersama-sama tapi dipisahkan berdasarkan tenant_id
b. dipisahkan per schema
c. satu tenant satu database
mungkin mas @khannedy bisa bantu memberikan insight tentang partitioning database untuk sistem multitenant ini seperti apa baiknya, sebagai studi kasus mungkin bisa di postgres & springboot jpa. Terimakasih mas @khannedy
saya sedang implement yang poin c, masih on development dan belum go live.
challenge yang saya dapat selama ini,
ada perubahan struktur database, tambah kolom, hapus kolom, ubah tipe data dll (alter tiap database)
ada perubahan data, misalnya ada data yang harus di update (update tiap database)
multi server, misal tenant 1-10 ada di server a dan 10-20 ada di server b dan seterusnya
auto create database untuk tenant baru
backup database
yang saya lakukan
pakai auto migration, ketika aplikasi nya di awal start migrations nya di jalankan ke semua database tenant.
pakai sql file, ketika aplikasi nya di awal start sql nya auto di eksekusi ke semua database tenant.
tambah tabel db_server di database utama, untuk routing tenant 1-10 ke server a dan 10-20 ada di server b dan seterusnya.
sama pakai auto migration juga, ketika user melakukan registrasi untuk membuat tenant baru, sistem akan menjalankan migrations untuk membuat database baru
-
summary
kenapa saya pilih point c (satu tenant satu database)
mempermudah scaling database kedepannya. karena sudah horizontal scaling.
ada potensi kesalahan data antar tenant ketika semua tenant di tampung dalam 1 database, misal nya ingin query select untuk tenant 1 malah data tenant lain ikut ter select, begitu juga untuk update dan delete.
Mas @khannedy , izin bertanya, saya sempat baca-baca untuk aplikasi dengan sistem multitenant itu secara database bisa dibagi menjadi 3, yaitu:
a. satu database digunakan bersama-sama tapi dipisahkan berdasarkan tenant_id b. dipisahkan per schema c. satu tenant satu database
mungkin mas @khannedy bisa bantu memberikan insight tentang partitioning database untuk sistem multitenant ini seperti apa baiknya, sebagai studi kasus mungkin bisa di postgres & springboot jpa. Terimakasih mas @khannedy