Deep Dive: معماری چند اجاره Salesforce

🔹 چه کسی درگیر است؟
- ارائه دهنده: نیروی فروش (یکی از بزرگترین شرکت های SaaS در جهان ، که بر اساس معماری چند مستاجر اختصاصی ساخته شده است).
- مشتری (مستاجر): کوکاکولا ، آمازون ، تویوتا ، Spotify، و هزاران مشاغل دیگر که از Salesforce CRM استفاده می کنند.
1⃣ مدل چند اجاره Salesforce: پایگاه داده مشترک ، طرحواره مشترک
🔍 چگونه Salesforce داده ها را ذخیره می کند
Salesforce خدمت می کند هزاران تجارت از الف نمونه بانک اطلاعاتی اما سختگیرانه را تضمین می کند انزوا با استفاده از:
-
شناسه مستاجر (
organization_id
) – منحصر به فرد هر شرکت را مشخص می کند. - معماری ابرداده محور – تنظیمات هر مشتری (زمینه ها ، گردش کار) به جای جداول جداگانه به عنوان ابرداده ذخیره می شوند.
- امنیت سطح ردیف (RLS) و امنیت سطح شی (OLS) – اطمینان می دهد که کاربران فقط می توانند به داده های شرکت خود دسترسی پیدا کنند.
🔹 مثال: نحوه ذخیره اطلاعات مشتری در Salesforce
جدول مشترک با شناسه مستاجر (organization_id
)
CREATE TABLE contacts (
id SERIAL PRIMARY KEY,
organization_id INT NOT NULL, -- Tenant Identifier
name VARCHAR(255),
email VARCHAR(255),
created_at TIMESTAMP DEFAULT NOW()
);
واکشی داده ها برای یک مستاجر خاص (سازمان مشتری)
SELECT * FROM contacts WHERE organization_id = 456; -- Only fetch contacts for Org 456
2⃣ چگونه Salesforce برای میلیون ها مستاجر مقیاس گذاری می کند
🔹 فن آوری های کلیدی مورد استفاده
✅ پایگاه داده چند مستاجر اختصاصی (پلت فرم Force.com)
✅ امنیت سطح ردیف (RLS) – جداسازی داده های دقیق را تضمین می کند.
✅ معماری ابرداده محور – به جای ایجاد جداول جداگانه برای هر شرکت ، Salesforce تنظیمات را به عنوان ابرداده ذخیره می کند.
✅ پارتیشن بندی افقی (Sharding) – مشتریان بزرگ را در سرورهای مختلف توزیع می کند.
🔹 مثال: چند اجاره بهار ابرداده محور
به جای ایجاد یک custom_fields
جدول در هر مستاجر ، فروشگاه های Salesforce زمینه های سفارشی به صورت پویا در ابرداده:
{
"organization_id": 456,
"custom_field_name": "Customer_Type",
"custom_field_value": "Premium"
}
این بدان معنی است که هر شرکت می تواند زمینه های سفارشی ، گردش کار و گزارش های خود را بدون تغییر ساختار پایگاه داده اصلی تعریف کند.
3⃣ چگونه Salesforce انزوا و امنیت داده ها را تضمین می کند
🔹 1. امنیت سطح ردیف (RLS)
Salesforce تضمین می کند که یک مستاجر (شرکت) فقط می تواند به سوابق خود دسترسی پیدا کند:
CREATE POLICY tenant_isolation
ON contacts
FOR SELECT
USING (organization_id = current_setting('app.current_organization')::int);
قبل از اجرای نمایش داده شد ، Salesforce تنظیم می کند مستاجر فعلی:
SET app.current_organization = 456;
SELECT * FROM contacts; -- Fetches only Org 456’s contacts
🔹 2. امنیت سطح شی (OLS) و امنیت سطح میدان (FLS)
Salesforce همچنین دسترسی به اشیاء خاص (جداول) و زمینه ها بر اساس نقش کاربر.
✅ مثال: دسترسی مبتنی بر نقش
- سرپرستان می توانند تمام سوابق مشتری را مشاهده کنند.
- نمایندگان فروش فقط می توانند مشتریان اختصاص داده شده خود را مشاهده کنند.
SELECT * FROM contacts WHERE assigned_sales_rep = 'John Doe';
✅ مثال: مخفی کردن زمینه های حساس
- امنیت در سطح میدانی فقط کاربران مجاز را تضمین می کنند که می توانند به داده های حساس دسترسی پیدا کنند.
SELECT name, email FROM contacts; -- Omits sensitive fields like `ssn`
4⃣ چرا Salesforce به جای بانکهای اطلاعاتی جداگانه از یک طرحواره مشترک استفاده می کند
رویکرد | انزوا | عمل | هزینه | پیچیدگی |
---|---|---|---|---|
طرح مشترک (مدل Salesforce) | واسطه | عالی | کم | کم |
پایگاه داده های جداگانه در هر مستاجر | عالی | واسطه | عالی | عالی |
استدلال Salesforce:
- ✅ طرحواره مشترک اجازه بازیابی سریع داده های چند مستاجر را می دهد.
- ✅ معماری ابرداده محور سفارشی سازی را آسان می کند.
- ✅ قوانین امنیتی (RLS ، OLS ، FLS) انزوا مستاجر را تضمین می کند.
- ✅ Sharding به توزیع مشتریان بزرگ در خوشه های مختلف پایگاه داده کمک می کند.
🔹 غذای نهایی
✔ Salesforce از یک پایگاه داده مشترک با امنیت سطح ردیف و چند اجاره ای از ابرداده محور استفاده می کند.
✔ مشتریان بدون تغییر ساختار پایگاه داده ، تنظیم CRM خود را سفارشی می کنند.
✔ Sharding & Indexing از مقیاس پذیری برای شرکتهای بزرگ مانند Coca-Cola و Amazon اطمینان حاصل کنید.
🚀 این رویکرد به Salesforce اجازه می دهد تا ضمن حفظ امنیت و انزوا داده های خود ، به هزاران مشاغل خدمت کند.
آیا شما دوست دارید شیرجه عمیق به یک مثال دیگر SaaS مانند Shopify یا QuickBooks؟ 😊