بدترین باگ یک SaaS این است که مستاجر A داده مستاجر B را ببیند. معماری باید این را غیرممکن کند، نه اینکه به یادآوری برنامهنویس تکیه کند.
سه الگوی جداسازی
دیتابیس جدا برای هر مستاجر امنترین ولی گرانترین است. اسکیمای جدا تعادل خوبی دارد. ستون tenant_id ارزانترین و مقیاسپذیرترین است ولی بیشترین ریسک نشت داده را دارد.
Row-Level Security
با RLS در PostgreSQL قانون جداسازی داخل خود دیتابیس اعمال میشود. حتی اگر برنامهنویس فراموش کند شرط tenant_id را بنویسد، دیتابیس داده مستاجر دیگر را برنمیگرداند.
ایندکسگذاری
در الگوی ستون مشترک، tenant_id باید اولین ستون ایندکسهای ترکیبی باشد، وگرنه با رشد داده کوئریها بهشدت کند میشوند.
مهاجرت و نگهداری
تغییر ساختار جدول در الگوی اسکیمای جدا باید روی تکتک اسکیماها اجرا شود؛ برای همین از ابتدا فرآیند مهاجرت خودکار بسازید.



