पृथक्करण
सीमा जे डेटाबेस राखैत अछि, कोड नहि
हरेक CRM दावा करैत अछि जे ई मल्टी-टेनेंट अछि। दावा सस्ता अछि; महत्वपूर्ण ई अछि जे कोनो परत सीमा राखि रहल अछि। यदि उत्तर अछि "हमर एप्लिकेशन सदा सही फ़िल्टर जोड़ैत अछि", तँ गारंटी ओहि सबसँ कम आराम करैवाला डेवलपर जतना अच्छा अछि जे कखनो क्वेरी लिखने रहल।
iKonekt अपन पहिल माइग्रेशनसँ ही मल्टी-टेनेंट छल, बादमे जोड़ल नहि गेल, जे शेखी बघारब जकरा लागैत अछि आ वास्तवमे एकटा स्वीकारोक्ति अछि: एकरा बादमे जोड़नाय विश्वसनीय रूपसँ करबा लगभग असंभव अछि, आ जे कोनो प्रयास केने अछि, ओकर एकटा कहानी अछि।
पृथक्करण डेटाबेसमे निवास करैत अछि। छब्बीस टेबलसभमे सँ हरेक अपन टेनेंट राखैत अछि, आ एकरा जाँचैवाला नीति हरेक पढ़ाई आ हरेक लिखाई पर चलैत अछि, एप्लिकेशनसँ पूर्ण रूपसँ नीचा। जे क्वेरी सीमा बिसारि जाइत अछि, ओ कतहुँ अन्यक ग्राहकसभ नहि लाबैत। ओ किछु नहि लाबैत।
पंक्ति-स्तरीय सुरक्षा, बाध्य
कोनो परंपरा नहि, कोनो कोड समीक्षा नियम नहि। डेटाबेस अस्वीकार करैत अछि। बहत्तर नीतिसभ, एक-एक करि लिखल गेल, उत्पन्न नहि कएल गेल — किएक तँ उत्पन्न कएल गेल नीति ओहि नीति अछि जाहिकेँ कोनो नहि पढ़ने अछि।
संयुक्त कुंजीसभ
एकटा संतान अभिलेख अपन टेनेंट और अपन जनककेँ एक साथ, जोड़ीक रूपमे संदर्भित करैत अछि। गलत कंपनीक कोनो अनाथ पहचानकर्ता हल नहि होइत — ओ सरल वैध संदर्भ नहि अछि।
कोनो डिफ़ॉल्ट टेनेंट नहि, कखनो नहि
बिना स्कोपक अनुरोध चुपचाप टेनेंट शून्यक अनुरोध नहि बनि जाइत। ई डेटाबेस तक पहुँचबासँ पहिले अपवाद छोड़ैत अछि। "अनस्कोप्ड" मोड नहि अछि जाहिकेँ बंद करबाक बिसारि सकैत।
ओ बग जे अपनेकेँ घोषित नहि करि सकैत छल
जब किरायेदारी (टेनेंट) काज भै रहल छल, तखन अधिकांश गल्ती सभ लउकित (तेज) छलिह। दूटा कंपनी केँ ओही ग्राहक डोमेन आ डेटाबेस वस्तु तुरंत दिअ, त्रुटि कोड आ स्टैक ट्रेस संग; अहाँ दिनक भोजन सँ पहिने एकरा ठीक कए लेत।
एकटा चुपचाप रहल। संपादन योग्य प्रॉम्प्ट ओवरराइडक एकटा तालिका केवल प्रॉम्प्टक प्रकार पर कुंजीत (keyed) छल — किंड आ टेनेंट पर नहि। दोसर कंपनी अपन प्रतिलिपि संपादित करैत पहिल कंपनीक हुनका चुपचाप ओवरराइट कए देत, पूर्ण रूप सँ वैध SQL सँ, कोनो त्रुटि नहि, कोनो चेतावनी नहि, कोनो असफल टेस्ट नहि। ई तखन मिलल जब कुंजी बदलैक बाद प्रत्येक शेष अद्वितीय इंडेक्स केँ एक-एक कए अपन अनुमान पर पढ़ल गेल कि लउकित वालाक साथी सेहो भ सकत अछि।
हम ई कहै छी काहिक ई एहि काजक ईमानदार आकार अछि। पृथक्करण कोनो सुविधा नहि जे अहाँ चालू कए सकै छी; ई एकटा आदत अछि — स्कीमाक नीरस भाग सभ पढ़ब ई मानि कि ओहिमे किछु अहाँक संग असहमत अछि।
टेस्ट, रिकॉर्डक लेल: 942 टा, प्रत्येक परिवर्तन पर शून्य सँ फेर सँ बनाएल गेल डेटाबेस पर चलाएल जाइत अछि। ओ सभ एहि लेल नहि अछि कि डिजाइन चतुर अछि साबित करै। ओ सभ एहि लेल अछि कि एहि विशेष डिजाइनक असफलता चुप अछि, आ चुप असफलताक लेल कियोक चिल्लाए बोलनिहारक जरूरत होइछ।
पृथक्करण सँ एकटा साधारण व्यक्तिकेँ की लाभ भेटैत अछि
- एकटा समूह एकटा इंस्टॉल सँ अनेक कंपनी चला सकै छै, आ एकटामे रहल विक्रेता कखनो दोसरक ग्राहक नहि देखैत — नीति सँ नहि, रचना सँ नहि देखैत।
- एकटा साझेदार कार्यक्रम, प्रॉम्प्टक समूह, ग्राहक पर दावा: सबटा प्रति कंपनी दायरा (scoped) मे, ताकि एकटा टेनेंटक विन्यास सबके भ नहि जाए।
- मेटावैक अनुरोध साझा ढेर के बदले सीमाक भीतर पूरा कएल जाइत अछि, आहूँ एहि सँ ई संभव होइछ कि ईमानदारी सँ उत्तर देल जा सके।
- आ कियो केँ एकरा याद राखबाक जरूरत नहि। ईहे बिंदु अछि — याद राखब पर निर्भर गारंटी गारंटी नहि अछि।
आओर एकटा पंक्ति जे डेटाबेसक बारे मे नहि अछि
परिवारक प्रत्येक सहोदर सेवा अपन नामित क्रेडेंशियल राखैत अछि। किछु साझा क्रेडेंशियल सँ नहि बाजैत, ताकि कोनो सेवा गलती सँ दोसरक रूप मे काज नहि कए सके — एकटा छोट अनुशासन जे सीधा साझा टोकन राखला के बाद आ ओकर आनंद नहि लेबा सँ आएल।
ई डेटाबेस नियमक जहिना एहि अंतर्ज्ञान अछि। गलत बात केँ हतोत्साहित करबाक बदले असंभव बनाउ, आ अहाँ अपन ध्यान सतर्कता पर नहि, ग्राहक पर खर्च करै छी।
- 126 टा तालिकाप्रत्येक अपन टेनेंट बहन करैत अछि, जाँच बाध्य रूप सँ चालू।
- 272 टा नीतिअलग-अलग लिखल गेल, ताकि प्रत्येक केँ एक व्यक्ति पढ़ने रही।
- 3९४२ परीक्षणशून्य सँ फेर सँ बनाएल गेल डेटाबेस पर, प्रत्येक परिवर्तन पर।
- 40 डिफ़ॉल्ट टेनेंटबिना दायरा (scope) वाला अनुरोध कखनो डेटा तक नहि पहुँचैत।
लाइव बिल्ड पर मापल गेल

“हमर एप्लिकेशन सदा कंपनी अनुसार फ़िल्टर करैत अछि।”
ओ वाक्य मे 'सदा' बड़का काज कए रहल अछि।
सीमाकेँ डेटाबेस धरि नीचा ल जाउ आ भूलल WHERE खंड कियोक ग्राहकक बदले किछु नहि देत। खाली स्क्रीन कठिन परिचय सँ बेसी असफलता अछि।
अनेक ब्रांड चलाब निहित समूहक लेल →