వేరుచేయడం
కోడ్ కాదు, డేటాబేస్ కాపాడే సరిహద్దు
ప్రతి CRM తనను తాను మల్టీ-టెనెంట్గా పేర్కొంటుంది. ఆ వాదన సులభం; ముఖ్యమైనది ఏ లేయర్ ఈ గీతను కాపాడుతోందనేది. సమాధానం "మా అప్లికేషన్ ఎప్పుడూ సరైన ఫిల్టర్ను జోడిస్తుంది" అయితే, ఆ హామీ ఒక క్వెరీ రాసిన అతి తక్కువ విశ్రాంతి పొందిన డెవలపర్ స్థాయికే పరిమితం.
iKonekt తర్వాత జోడించబడింది కాదు, దాని మొదటి మైగ్రేషన్ నుండే మల్టీ-టెనెంట్, ఇది ఒక గర్వకారణంగా అనిపించినా నిజంగా ఒప్పుకోలు: దీన్ని తర్వాత జోడించడం ఒప్పగించేలా చేయడం దాదాపు అసాధ్యం, ప్రయత్నించిన ప్రతి ఒక్కరికీ ఒక కథ ఉంది.
విభజన డేటాబేస్లో నివసిస్తుంది. మొత్తం ఇరవై ఆరు టేబుల్స్లో ప్రతి ఒక్కటి తనకు చెందిన టెనెంట్ను మోస్తుంది, దాన్ని తనిఖీ చేసే పాలసీ ప్రతి రీడ్ మరియు ప్రతి రైట్లో, అప్లికేషన్ పూర్తిగా దిగువన నడుస్తుంది. సరిహద్దును మరచిపోయిన క్వెరీ ఎవరైనా ఇతరుల కస్టమర్లను తిరిగి ఇవ్వదు. అది ఏమీ తిరిగి ఇవ్వదు.
రో-లెవెల్ సెక్యూరిటీ, నిర్బంధంగా
ఒక సంప్రదాయం కాదు, ఒక కోడ్ రివ్యూ నియమం కాదు. డేటాబేస్ నిరాకరిస్తుంది. డెబ్బై రెండు పాలసీలు, సృష్టించబడకుండా ఒక్కొక్కటిగా రాయబడ్డాయి — ఎందుకంటే సృష్టించబడిన పాలసీని ఎవరూ చదవలేదు.
సంయుక్త కీలు
చైల్డ్ రికార్డ్ దాని టెనెంట్ను మరియు దాని పేరెంట్ను జతగా సూచిస్తుంది. తప్పు కంపెనీకి చెందిన ఒక విచక్షణాత్మక గుర్తింపు పరిష్కరించబడదు — అది సాధారణంగా చెల్లుబాటు కాని సూచన కాదు.
డిఫాల్ట్ టెనెంట్ లేదు, ఎప్పుడూ లేదు
స్కోప్ లేని అభ్యర్థన నిశ్శబ్దంగా టెనెంట్ జీరో కోసం అభ్యర్థనగా మారదు. అది డేటాబేస్కు చేరువాకముందే విఫలమవుతుంది. మరచిపోయే "అన్స్కోప్డ్" మోడ్ అస్సలు లేదు.
తనను తాను ప్రకటించుకోలేని బగ్
టెనెన్సీ పని జరుగుతున్న సమయంలో, ఎక్కువ తప్పులు చప్పుడుగా వెలువడ్డాయి. రెండు కంపెనీలకు ఒకే కస్టమర్ డొమైన్ ఇస్తే, డేటాబేస్ ఆబ్జెక్ట్లు వెంటనే లోపం కోడ్ మరియు స్టాక్ ట్రేస్తో కనిపిస్తాయి; మీరు భోజనానికి ముందే వాటిని సరిచేస్తారు.
ఒకటి అభ్యంతరం చెప్పలేదు. సవరించగల ప్రాంప్ట్ ఓవర్రైడ్ల పట్టిక ప్రాంప్ట్ యొక్క రకం మాత్రమే — రకం మరియు టెనెంట్ రెండూ కాకుండా — ఆధారంగా ఉండేది. రెండవ కంపెనీ తమ స్వంత కాపీని సవరిస్తే, మొదటి కంపెనీ వాటిని పూర్తిగా చెల్లుబాటు అయ్యే SQL ద్వారా, ఏ లోపం లేకుండా, ఏ హెచ్చరిక లేకుండా, విఫలమయ్యే పరీక్ష లేకుండా నిశ్శబ్దంగా ఓవర్రైట్ చేసేది. ఒక కీని మార్చిన తర్వాత, చప్పుడైన వాటికి తోడు ఉందేమో అన్న అనుమానంతో, మిగిలిన ప్రతి ప్రత్యేక ఇండెక్స్ను ఒక్కొక్కటిగా చదవడం ద్వారా ఇది కనుగొనబడింది.
ఇది ఈ పని యొక్క నిజాయితీ రూపం కాబట్టి మేము దీన్ని పేర్కొంటున్నాము. విభజన మీరు స్విచ్ చేసే ఒక ఫీచర్ కాదు; స్కీమాలోని బోరింగ్ భాగాలను చదవడం అనే అలవాటు, అందులో ఏదో మీతో విభేదిస్తుందని భావించి చదవడం.
రికార్డు కోసం పరీక్షలు: 942 ఉన్నాయి, ప్రతి మార్పుపై సున్నా నుండి పునర్నిర్మించిన డేటాబేస్పై నడుపుతాము. అవి డిజైన్ తెలివైనదేనని నిరూపించడానికి లేవు. ఈ నిర్దిష్ట డిజైన్ వైఫల్య రీతి నిశ్శబ్దంగా ఉంటుంది, నిశ్శబ్ద వైఫల్యాల తరపున ఎవరైనా అరుపులు తీసుకోవాలి కాబట్టి అవి ఉన్నాయి.
విభజన ఒక సాధారణ వ్యక్తికి ఏమిస్తుంది
- ఒక సమూహం ఒకే ఇన్స్టాల్ నుండి అనేక కంపెనీలను నడిపించగలదు, ఒకదానిలోని విక్రేత మరొకదాని కస్టమర్ను ఎప్పుడూ చూడడు — విధానం ద్వారా కాదు, నిర్మాణం ద్వారా.
- ఒక భాగస్వామ్య కార్యక్రమం, ప్రాంప్ట్ల సమితి, కస్టమర్పై హక్కు: అన్నీ కంపెనీకి పరిమితమై ఉంటాయి, కాబట్టి ఒక టెనెంట్ కాన్ఫిగరేషన్ అందరిది కాలేదు.
- డేటా తొలగింపు అభ్యర్థన ఒక సాధారణ రాశి అంతటా కాకుండా, ఒక సరిహద్దు లోపల గౌరవించబడుతుంది — నిజాయితీగా సమాధానం ఇవ్వగలిగేది ఇదే.
- మరియు ఏ సిబ్బందికీ ఏమీ గుర్తుంచుకోవాల్సిన అవసరం లేదు. ఇదే ఉద్దేశం — గుర్తుంచుకోవడంపై ఆధారపడిన హామీ హామీ కాదు.
డేటాబేస్ల గురించి కాని మరో పంక్తి
కుటుంబంలోని ప్రతి సోదర సేవ తన స్వంత పేరున్న క్రెడెన్షియల్ను కలిగి ఉంటుంది. ఏదీ సాధారణ క్రెడెన్షియల్తో మాట్లాడదు, కాబట్టి ఒక సేవ మరొకటిలా అనుకోకుండా పనిచేయలేదు — ఒకప్పుడు సాధారణ టోకెన్ ఉంచి దానిని అనుభవించడం ఇష్టం లేకపోవడం నుండి నేరుగా వచ్చిన చిన్న శిస్తు.
ఇది డేటాబేస్ నియమంతో ఒకే ప్రవృత్తి. తప్పు చేసిన దాన్ని నిరాసక్తికి గురిచేయడం కంటే అసాధ్యం చేయండి, అప్పుడు మీ దృష్టిని జాగ్రత్తపడటం మీద కాకుండా కస్టమర్ల మీద వెచ్చించండి.
- 126 టేబుల్లుప్రతి ఒక్కటి దాని టెనెంట్ను మోస్తుంది, చెక్ నిర్బంధంగా ఆన్లో ఉంటుంది.
- 272 పాలసీలుప్రతిదానినీ వ్యక్తిగతంగా రాయడం జరిగింది, కాబట్టి ఒక్కొక్కటి ఒక వ్యక్తి చేత చదవబడింది.
- 3942 పరీక్షలుప్రతి మార్పుపై, సున్నా నుండి పునర్నిర్మించిన డేటాబేస్పై.
- 40 డిఫాల్ట్ టెనెంట్లుపరిధి లేని అభ్యర్థన డేటాను ఎప్పుడూ చేరదు.
ప్రత్యక్ష బిల్డ్పై కొలవబడింది

“మా అప్లికేషన్ ఎప్పుడూ కంపెనీ ద్వారా ఫిల్టర్ చేస్తుంది.”
ఆ వాక్యంలో “ఎప్పుడూ” అనే పదం చాలా భారం మోస్తోంది.
సరిహద్దును డేటాబేస్ లోపలికి తరలిస్తే, మర్చిపోయిన WHERE వాక్యం మరొకరి కస్టమర్లను కాకుండా శూన్యాన్ని తిరిగి ఇస్తుంది. ఖాళీ తెర ఒక కఠిన పరిచయం కంటే మెరుగైన వైఫల్యం.
అనేక బ్రాండ్లను నడిపే సమూహాల కోసం →