વિભાજન
ડેટાબેઝ જે સીમા જાળવે છે, કોડ નહીં
દરેક CRM મલ્ટી-ટેનન્ટ હોવાનો દાવો કરે છે. દાવો સસ્તો છે; અગત્યનું એ છે કે કઈ સ્તર સીમા જાળવી રાખે છે. જો જવાબ "અમારી એપ્લિકેશન હંમેશા યોગ્ય ફિલ્ટર ઉમેરે છે" હોય, તો વચન એટલું જ મજબૂત છે જેટલો ક્યારેય ક્વેરી લખનાર સૌથી ઓછો આરામ કરેલ ડેવલપર.
iKonekt પાછળથી ઉમેરવામાં આવેલ નથી પણ પહેલા માઇગ્રેશનથી જ મલ્ટી-ટેનન્ટ હતું, જે અહંકાર લાગે છે અને ખરેખર કબૂલાત છે: તે પાછળથી સમજાવટભરી રીતે કરવું લગભગ અશક્ય છે, અને જેણે પ્રયાસ કરેલ છે તેની પાસે કોઈ વાર્તા છે.
અલગાવ ડેટાબેઝમાં રહેલો છે. છવ્વીસ ટેબલમાંના દરેક પર તે કયા ટેનન્ટનો છે તે નોંધેલ છે, અને તે તપાસતી નીતિ દરેક વાંચન અને દરેક લેખન પર, એપ્લિકેશનથી સંપૂર્ણ નીચે ચાલે છે. સીમા ભૂલી જતી ક્વેરી બીજાના ગ્રાહકો પરત કરતી નથી. તે કંઈ પરત કરતી નથી.
રો-લેવલ સુરક્ષા, ફરજિયાત
કોઈ પરંપરા નથી, કોઈ કોડ સમીક્ષાનો નિયમ નથી. ડેટાબેઝ નકારી દે છે. ત્રેત્રીસ નહીં, બોવન નીતિઓ, એક પછી એક લખાયેલી છે, જનરેટ થયેલી નહીં — કારણ કે જનરેટ થયેલી નીતિ એવી નીતિ છે જેને કોઈએ વાંચી ન હોય.
કમ્પોઝિટ કી
ચાઇલ્ડ રેકોર્ડ પોતાના ટેનન્ટનો સંદર્ભ અને પોતાના પેરેન્ટનો સંદર્ભ, બંનેને જોડી તરીકે ધરે છે. ખોટી કંપનીનો કોઈ છૂટો આઇડેન્ટિફાયર રિઝોલ્વ થતો નથી — તે ફક્ત માન્ય સંદર્ભ જ નથી.
ક્યારેય કોઈ ડિફૉલ્ટ ટેનન્ટ નહીં
સ્કોપ વિનાની વિનંતી ચૂપચાપ ટેનન્ટ ઝીરો માટેની વિનંતી નથી બનતી. તે ડેટાબેઝ સુધી પહોંચે તે પહેલાં જ એક્સેપ્શન ફેંકે છે. ભૂલી જવાની શક્યતા હોય તેવો કોઈ "અનસ્કોપ્ડ" મોડ જ નથી.
એ બગ જે પોતાની જાણ કરી શક્યો નહોતો
ટેનન્સીનું કામ ચાલુ હતું ત્યારે મોટાભાગની ભૂલો ઘોંઘાટી હતી. બે કંપનીઓને એક જ કસ્ટમર ડોમેઇન આપો અને ડેટાબેઝ તરત વિરોધ કરે છે, એરર કોડ અને સ્ટેક ટ્રેસ સાથે; તમે તેને બપોર પહેલાં જ ઠીક કરી નાખો છો.
એકે વિરોધ કર્યો નહીં. એડિટેબલ પ્રોમ્પ્ટ ઓવરરાઇડ્સનું એક ટેબલ ફક્ત પ્રોમ્પ્ટના કાઇન્ડ પર કી થયેલું હતું — કાઇન્ડ અને ટેનન્ટ પર નહીં. બીજી કંપની પોતાની નકલ એડિટ કરે તો તે ચૂપચાપ પહેલી કંપનીની નકલ પર લખાઈ જાત, સંપૂર્ણ માન્ય SQL થી, કોઈ એરર વગર, કોઈ ચેતવણી વગર અને કોઈ ફેલ થતો ટેસ્ટ વગર. તે શોધાયું એટલા શંકા પર કે ઘોંઘાટીયા ભાગો એકલા નહીં હોય, કી બદલ્યા પછી બાકી રહેલા દરેક યુનિક ઇન્ડેક્સ વાંચીને, એક પછી એક.
અમે તેનો ઉલ્લેખ કરીએ છીએ કારણ કે આ કામનો પ્રામાણિક આકાર એ જ છે. વિભાજન એ કોઈ ફીચર નથી જે તમે ચાલુ કરો; તે સ્કીમાના નીરસ ભાગો વાંચવાની એવી ટેવ છે કે તેમાં કંઈક તમારી સાથે અસહમત હોઈ શકે તેવી ધારણા સાથે.
ટેસ્ટ્સ, રેકોર્ડ માટે: 942 ટેસ્ટ્સ, દરેક ફેરફાર પર શૂન્યથી ફરી બનાવેલા ડેટાબેઝ સામે ચાલે છે. તે એ સાબિત કરવા નથી કે ડિઝાઇન ચતુર છે. તે એટલા માટે છે કારણ કે આ ડિઝાઇનની નિષ્ફળતા ચૂપ હોય છે, અને ચૂપ નિષ્ફળતાઓની વતી કોઈએ બૂમ પાડવી પડે.
વિભાજન એક સામાન્ય માણસને શું આપે છે
- એક જ ઇન્સ્ટોલ પરથી ગ્રુપ ઘણી કંપનીઓ ચલાવી શકે છે, અને એકમાંનો વેચાણકર્તા બીજી કંપનીના કસ્ટમરને ક્યારેય જોશે નહીં — નીતિથી નહીં, બંધારણથી.
- પાર્ટનર પ્રોગ્રામ, પ્રોમ્પ્ટ્સનો સમૂહ, કસ્ટમર પરનો ક્લેઇમ: બધું પ્રતિ કંપની સ્કોપ થયેલું છે, જેથી એક ટેનન્ટની કૉન્ફિગરેશન બધાની ન બની જાય.
- માહિતી કાઢી નાખવાની વિનંતી શેર થયેલા ઢગલા પર નહીં પણ એક સીમાની અંદર પૂરી થાય છે, અને એ જ છે જે તેનો પ્રામાણિક જવાબ આપવાનું શક્ય બનાવે છે.
- અને કોઈએ તે કંઈ યાદ રાખવું નથી. એ જ મુદ્દો છે — યાદ રાખવા પર આધારિત ગેરંટી ગેરંટી નથી.
ડેટાબેઝ વિશે ન હોય તેવી એક વધુ વાત
પરિવારની દરેક સિબલિંગ સર્વિસ પોતાનું નામ વાળું ક્રેડેન્શિયલ ધરે છે. કોઈ શેર થયેલું ક્રેડેન્શિયલ વાપરીને બોલતું નથી, જેથી કોઈ સર્વિસ ભૂલથી બીજી સર્વિસ તરીકે કામ ન કરી શકે — એક નાની શિસ્ત, જે સીધી એ અનુભવમાંથી આવી કે અમારી પાસે એક વખત શેર થયેલું ટોકન હતું અને એ ગમ્યું નહોતું.
તે ડેટાબેઝના નિયમ જેવો જ સ્વભાવ છે. ખોટી વાત નિરાશાદાયક નહીં પણ અશક્ય બનાવો, અને તમે તમારું ધ્યાન સતર્કતા પર નહીં પણ ગ્રાહકો પર વેચાય છે.
- 126 ટેબલદરેક પોતાનો ટેનન્ટ ધરે છે, ચેક ફરજિયાત ચાલુ સાથે.
- 272 નીતિઓઅલગ-અલગ લખાયેલી, જેથી દરેક માણસે વાંચેલી હોય.
- 3942 ટેસ્ટશૂન્યથી ફરી બનાવેલા ડેટાબેઝ સામે, દરેક ફેરફાર પર.
- 40 ડિફૉલ્ટ ટેનન્ટસ્કોપ વિનાની વિનંતી ડેટા સુધી ક્યારેય પહોંચતી નથી.
લાઇવ બિલ્ડ પર માપેલું

“અમારી એપ્લિકેશન હંમેશાં કંપની પ્રમાણે ફિલ્ટર કરે છે.”
આ વાક્યમાં “હંમેશાં” શબ્દ ઘણું બધું કામ કરી રહ્યો છે.
સીમાને ડેટાબેઝમાં નીચે ખસેડો અને ભૂલાઈ ગયેલો WHERE ક્લોઝ કોઈના બીજા ગ્રાહકોને બદલે કંઈ જ પરત કરતો નથી. ખાલી સ્ક્રીન કરતાં સારી નિષ્ફળતા એ અણઘડ પરિચય કરતાં સારી છે.
ઘણા બ્રાન્ડ ચલાવતા ગ્રુપ માટે →