मल्टी-टेनेंट SaaS आर्किटेक्चर: तीन पैटर्न और कैसे चुनें

मल्टी-टेनेंट SaaS आर्किटेक्चर: तीन पैटर्न और कैसे चुनें

रो-लेवल, स्कीमा-पर-टेनेंट, या डेटाबेस-पर-टेनेंट? आप शुरुआत में जो चुनाव करते हैं, वह निर्धारित करता है कि आप कितनी आसानी से स्केल करते हैं।

मल्टी-टेनेंसी उन आर्किटेक्चरल निर्णयों में से एक है जो तब तक अमूर्त लगता है जब तक आपका SaaS बढ़ने न लगे। फिर यह हर चीज को प्रभावित करता है — आप डेटा को कैसे क्वेरी करते हैं, अपने डेटाबेस को कैसे स्केल करते हैं, माइग्रेशन कैसे चलाते हैं, और यहाँ तक कि आप ग्राहक आइसोलेशन के बारे में कैसे सोचते हैं। इसे शुरुआत में ही सही करें, और आप हज़ारों खातों तक आसानी से स्केल कर सकते हैं। इसे गलत करें, और आप अपने ग्राहकों के देखते हुए ग्रोथ के बीच में अपने डेटा लेयर को फिर से लिख रहे होंगे।

आज, 9 जुलाई 2026, मल्टी-टेनेंट SaaS आदर्श है, अपवाद नहीं। चाहे आप टीमों के लिए टूल बना रहे हों, एंटरप्राइजेज को बेच रहे हों, या उपयोग-आधारित मूल्य निर्धारण दे रहे हों, आप यह निर्णय ले रहे हैं। अच्छी खबर: अधिकांश उत्पादों के लिए, सही उत्तर इंटरनेट के सुझाव से अधिक सरल है।

तीन कैननिकल पैटर्न

SaaS बैकएंड में टेनेंट्स को आइसोलेट करने के तीन अच्छी तरह से स्थापित तरीके हैं, और वे ऑपरेशनल लागत के खिलाफ आइसोलेशन का व्यापार करते हैं।

रो-लेवल टेनेंसी (साझा स्कीमा)

हर टेबल में एक tenant_id कॉलम होता है। हर क्वेरी इस पर फ़िल्टर करती है। एक डेटाबेस, एक स्कीमा, सभी टेनेंट एक साथ। तर्क करने के लिए यह सबसे आसान पैटर्न है और संचालित करने के लिए सबसे सस्ता है।

कल्पना करें कि आप एक प्रोजेक्ट-मैनेजमेंट टूल बना रहे हैं। आपकी tasks टेबल अलग-अलग स्टोरेज में विभाजित नहीं होती है — इसके बजाय, प्रत्येक रो में उस टेनेंट की ID होती है जो इसका मालिक है। जब कोई उपयोगकर्ता अपने कार्यों को क्वेरी करता है, तो एप्लिकेशन एक WHERE क्लॉज़ जोड़ता है: WHERE tenant_id = current_user.tenant_id.

स्कीमा-पर-टेनेंट

साझा डेटाबेस के अंदर प्रत्येक टेनेंट को अपना खुद का PostgreSQL स्कीमा मिलता है। मजबूत आइसोलेशन, क्योंकि प्रत्येक स्कीमा का अपना नेमस्पेस है, लेकिन प्रबंधित करने के लिए अधिक ऑब्जेक्ट। माइग्रेशन अधिक जटिल हो जाते हैं — आप उन्हें कई स्कीमा में चला रहे हैं। यह पैटर्न रो-लेवल और पूर्ण आइसोलेशन के बीच बैठता है।

डेटाबेस-पर-टेनेंट

प्रत्येक टेनेंट को एक समर्पित डेटाबेस या इंस्टेंस मिलता है। अधिकतम आइसोलेशन — एक टेनेंट का डेटा पूरी तरह से अलग स्टोरेज में रहता है। अधिकतम ऑपरेशनल भार भी — आप प्रत्येक ग्राहक के लिए अलग डेटाबेस इंस्टेंस, बैकअप और अपग्रेड प्रबंधित कर रहे हैं।

अधिकांश SaaS के लिए रो-लेवल क्यों जीतता है

B2B SaaS उत्पादों के भारी बहुमत के लिए, रो-लेवल मल्टी-टेनेंसी सही डिफ़ॉल्ट है। इसे संचालित करना सबसे सस्ता है, माइग्रेशन चलाना सबसे आसान है, और यह संस्थापकों की अपेक्षा से कहीं अधिक स्केल करता है।

आपत्ति हमेशा यही होती है: "लेकिन आइसोलेशन का क्या?" और यहीं Postgres के पास एक मजबूत उत्तर है।

रो-लेवल सिक्योरिटी (RLS) और Postgres

Postgres रो-लेवल सिक्योरिटी नामक एक सुविधा प्रदान करता है। RLS डेटाबेस को ही यह लागू करने देता है कि कोई क्वेरी केवल अपने टेनेंट के रो देख सकती है। आप एक बार पॉलिसी सेट करते हैं — सीधे डेटाबेस में — और यहां तक कि एक बग्गी क्वेरी भी टेनेंट्स के बीच डेटा लीक नहीं कर सकती।

Supabase, एक होस्टेड Postgres प्लेटफॉर्म, RLS को नेटिव मॉडल बनाता है। आप एक पॉलिसी परिभाषित करते हैं, और डेटाबेस केवल एप्लिकेशन लेयर ही नहीं, बल्कि एक सुरक्षा सीमा बन जाता है।

हर टेबल पर एक tenant_id और इसके साथ लीड करने वाले इंडेक्स के साथ, यह पैटर्न बड़े ग्राहक आधार को आराम से सेवा देता है। डेटाबेस एन्फोर्समेंट का काम करता है। एप्लिकेशन को फ़िल्टर करना याद रखने की आवश्यकता नहीं है।

RLS पर एक वास्तविक सावधानी

अनुभव से एक महत्वपूर्ण विवरण: RLS नीतियां इस तरह लिखें कि सहायक कार्य प्रति क्वेरी एक बार चलें, न कि प्रति रो एक बार। ऐसी पॉलिसी जो हर रो के लिए लुकअप का फिर से मूल्यांकन करती है, जैसे-जैसे टेबल बढ़ती है, चुपचाप तेज़ एंडपॉइंट्स को धीमा कर देगी। इसका उपाय यह है कि चेक को इस तरह से रैप किया जाए कि क्वेरी प्लानर इसे इनिट-प्लान के रूप में चलाए — शुरुआत में एक बार का चेक, न कि प्रति-रो।

मजबूत आइसोलेशन पर कब जाना चाहिए

रो-लेवल अधिकांश के लिए काम करता है। लेकिन कुछ ग्राहकों को अधिक चाहिए होता है।

रिफ्लेक्सिव तरीके से नहीं, बल्कि जानबूझकर आगे बढ़ें:

  • विनियामक या संविदात्मक आइसोलेशन — एक ग्राहक को अपना डेटा शारीरिक रूप से अलग डेटाबेस में चाहिए। हो सकता है कि वे एक विनियमित उद्योग में हों या उनके अनुबंध में कोई ऐसा क्लॉज़ हो जो इसकी मांग करता हो।
  • नोइज़ी-नेबर जोखिम — एक बड़े ग्राहक का कार्यभार बाकी सभी के प्रदर्शन को कम कर देता है। अलग इंफ्रास्ट्रक्चर इसे हल करता है।
  • प्रति-टेनेंट अनुकूलन — केवल डेटा ही नहीं, बल्कि स्कीमा भी वास्तव में अलग हो जाते हैं। आप अलग-अलग ग्राहकों के लिए मौलिक रूप से अलग-अलग संरचनाएं स्टोर कर रहे हैं।

तब भी, एक हाइब्रिड अच्छा काम करता है: अधिकांश टेनेंट्स को रो-लेवल पर रखें और केवल अपने सबसे बड़े या सबसे संवेदनशील खातों को समर्पित डेटाबेस में अपग्रेड करें।

डिज़ाइन सिद्धांत जो मायने रखते हैं

आप जो भी चुनें, मल्टी-टेनेंसी को शुरुआत में ही शामिल करें। इसे बाद में न जोड़ें।

tenant_id को हर उस जगह रखें जहाँ यह मायने रखता है

हर डोमेन टेबल में tenant_id जोड़ें और इसके साथ अपने कंपोजिट इंडेक्स को लीड करें। यह क्वेरीज़ को तेज़ बनाता है और आपके डेटा को स्वाभाविक रूप से टेनेंट द्वारा व्यवस्थित रखता है।

टेनेंट आइडेंटिटी के लिए क्लाइंट पर कभी भरोसा न करें

टेनेंट को हमेशा प्रमाणित सत्र से प्राप्त करें, न कि किसी रिक्वेस्ट पैरामीटर या कुकी से। यदि आप क्लाइंट से पूछते हैं "आप कौन से टेनेंट हैं?", तो एक दुर्भावनापूर्ण या बग्गी क्लाइंट झूठ बोल सकता है।

डेटाबेस लेयर पर आइसोलेशन लागू करें

एप्लिकेशन को केवल अपने WHERE क्लॉज़ को याद रखने का भरोसा न करें। डेटा लीक को असंभव बनाने के लिए डेटाबेस प्रतिबंधों और RLS का उपयोग करें। यदि कोई डेवलपर कहीं फ़िल्टर भूल जाता है, तो डेटाबेस खुद उस गलती को रोकता है।

टेनेंट प्रोविजनिंग को एक टेस्टेड कोड पाथ बनाएं

जब आप कोई नया टेनेंट जोड़ते हैं, तो एक स्पष्ट, परीक्षित प्रक्रिया से गुजरें। कोडबेस के अलग-अलग हिस्सों को अलग-अलग तरीकों से टेनेंट बनाने की अनुमति न दें। निरंतरता बग्स को रोकती है।

वो गलती जो सबसे ज्यादा नुकसान पहुंचाती है

गलती "गलत" मॉडल चुनना नहीं है। यह टेनेंसी को निहित छोड़ना और आइसोलेशन लॉजिक को कोडबेस में बिखेरना है। आप कुछ एंडपॉइंट्स में WHERE क्लॉज़, दूसरों में SQL जॉइन, और बिना किसी स्पष्ट नियम के समाप्त होते हैं।

मल्टी-टेनेंसी को केंद्रीकृत करें। इसे डेटाबेस में लागू करें। एक बार नीति सेट करें और वहां से निर्माण करें। आप विकसित होने की स्वतंत्रता रखते हैं।

निष्कर्ष

मल्टी-टेनेंट आर्किटेक्चर एक मूलभूत विकल्प है। Postgres रो-लेवल सिक्योरिटी के साथ रो-लेवल टेनेंसी अधिकांश SaaS के लिए सही डिफ़ॉल्ट है — यह सस्ता है, यह स्केल करता है, और डेटाबेस आइसोलेशन को लागू करता है। जब आपके पास एक स्पष्ट कारण हो तभी मजबूत पैटर्न पर जाएं: विनियमन, प्रदर्शन आइसोलेशन, या वास्तविक स्कीमा डाइवर्जेंस। इसे पहले दिन से बनाएं, अपनी पसंद का दस्तावेजीकरण करें, और आप आसानी से स्केल करेंगे।

योग्यताएं

  • रो-लेवल टेनेंसी अधिकांश उत्पादों के लिए संचालित करने के लिए सबसे सस्ती और आसान है।
  • Postgres रो-लेवल सिक्योरिटी आइसोलेशन लॉजिक को डेटाबेस में ले जाती है, जहाँ इसे पारदर्शी रूप से लागू किया जाता है।
  • सिंगल डेटाबेस, एक स्कीमा माइग्रेशन और बैकअप को सीधा बनाता है।
  • आप बाद में बिना री-आर्किटेक्ट किए अलग-अलग टेनेंट्स को मजबूत आइसोलेशन में अपग्रेड कर सकते हैं।
  • यह tenant_id + इंडेक्स-लीडिंग पैटर्न बड़े ग्राहक आधार तक स्केल करता है।

अवगुण

  • रो-लेवल आइसोलेशन शारीरिक डेटा पृथक्करण की मांग करने वाली विनियामक या संविदात्मक आवश्यकताओं के लिए पर्याप्त नहीं है।
  • एक ही नोइज़ी टेनेंट की भारी क्वेरीज़ उसी डेटाबेस पर अन्य टेनेंट्स को प्रभावित कर सकती हैं।
  • RLS नीति की गलतियाँ (जैसे प्रति रो लॉजिक का फिर से मूल्यांकन करना) चुपचाप प्रदर्शन को खराब कर सकती हैं।
  • बाद में रो-लेवल से स्कीमा-पर-टेनेंट या डेटाबेस-पर-टेनेंट की ओर माइग्रेट करना जटिल और जोखिम भरा है।
  • डेवलपर्स को हमेशा टेनेंट फ़िल्टर शामिल करने के लिए खुद को अनुशासित करना चाहिए — डेटाबेस मदद करता है, लेकिन एप्लिकेशन बग्स अभी भी संभव हैं।

सावधानी

यह लेख शैक्षिक है और सामान्य सर्वोत्तम प्रथाओं पर आधारित है। स्रोत सामग्री एक ब्लॉग पोस्ट से है; आर्किटेक्चरल निर्णय लेने से पहले मूल प्रकाशन और अपनी स्वयं की आवश्यकताओं के विरुद्ध दावों को सत्यापित किया जाना चाहिए। विनियामक और अनुपालन आवश्यकताएं उद्योग और क्षेत्राधिकार के अनुसार भिन्न होती हैं — अपने विशिष्ट उपयोग के मामले के लिए कानूनी और सुरक्षा विशेषज्ञों से परामर्श करें। अपने स्वयं के वातावरण में RLS नीतियों का अच्छी तरह से परीक्षण करें, विशेष रूप से बड़े पैमाने पर प्रदर्शन व्यवहार का। यह लेख मिशन-क्रिटिकल सिस्टम के लिए पेशेवर आर्किटेक्चर समीक्षा को प्रतिस्थापित नहीं करता है।

अक्सर पूछे जाने वाले प्रश्न

  • SaaS में मल्टी-टेनेंसी क्या है और यह क्यों मायने रखती है?
  • Postgres में रो-लेवल सिक्योरिटी टेनेंट्स के बीच डेटा लीक को कैसे रोकती है?
  • मुझे रो-लेवल टेनेंसी के बजाय स्कीमा-पर-टेनेंट का उपयोग कब करना चाहिए?
  • नोइज़ी-नेबर समस्या क्या है और यह SaaS आर्किटेक्चर को कैसे प्रभावित करती है?
  • मैं मौजूदा सिंगल-टेनेंट डेटाबेस में tenant_id कैसे जोड़ूँ?
  • क्या मैं रो-लेवल से शुरू कर सकता हूँ और बाद में डेटाबेस-पर-टेनेंट में अपग्रेड कर सकता हूँ?
  • स्केल पर RLS नीतियों के प्रदर्शन निहितार्थ क्या हैं?
  • मैं अपने एप्लिकेशन में मल्टी-टेनेंट आइसोलेशन का परीक्षण कैसे करूँ?

टैग

#saas #architecture #postgres #scaling #multitenant #database #security #rls

Free field guide

API Security Testing Checklist

A practical workflow for testing authentication, authorization, input handling, business logic, and evidence without losing track of scope.