Atskyrimas
Riba, kurią saugo duomenų bazė, o ne kodas
Kiekvienas teigia esąs daugiaklientis. Toks teiginys pigus; svarbu, kuris sluoksnis laiko liniją. Jei atsakymas yra „mūsų programa visada prideda tinkamą filtrą“, tai garantija yra tik tokia gera, koks mažiausiai išsimiegojęs kūrėjas, kuris kada nors parašė užklausą.
iKonekt buvo daugiaklientis nuo pirmosios migracijos, o ne pritaikytas vėliau — tai skamba kaip pasigirsimas, bet iš tikrųjų yra pripažinimas: pritaikyti tai vėliau beveik neįmanoma įtikinamai, ir kiekvienas, kas bandė, turi savo istoriją.
Atskirtis gyvena duomenų bazėje. Visos dvidešimt šešios lentelės neša savo nuomininką, o tai tikrinanti taisyklė veikia kiekvieno skaitymo ir kiekvieno rašymo metu, visiškai žemiau programos. Užklausa, pamiršusi ribą, negrąžina kieno nors kito klientų. Ji negrąžina nieko.
Eilės lygio sauga, priverstinė
Ne papročio taisyklė, ne kodo peržiūros reikalavimas. Duomenų bazė atsisako. Septyniasdešimt du taisyklių rinkiniai, parašyti po vieną, o ne sugeneruoti — nes sugeneruota taisyklė yra taisyklė, kurią niekas neskaitys.
Sudėtiniai raktai
Antrinis įrašas nurodo savo nuomininką ir pirminį įrašą kartu, kaip porą. Atsitiktinis kito įmonės identifikatorius neišsprendžiamas — jis tiesiog nėra tinkama nuoroda.
Jokio numatytojo nuomininko, niekada
Užklausa be apimties nesuvirsta tyliai į užklausą nuliniam nuomininkui. Ji išmeta klaidą dar prieš pasiekdama duomenų bazę. Nėra „be apimties“ režimo, kurį būtų galima pamiršti išjungti.
Klaida, kuri negalėjo pasirodyti
Kol buvo atliekamas nuomininkų atskirties darbas, dauguma klaidų buvo triukšmingos. Suteikite dviem įmonėms tą patį kliento domeną ir duomenų bazė nedelsdama pasipriešins su klaidos kodu ir rietuve; pataisysite iki pietų.
Viena neprieštaravo. Redaguojamų raginimų perrašymų lentelė buvo rikiuota tik pagal raginimo rūšį — ne pagal rūšį ir nuomininką. Antra įmonė, redaguodama savo kopiją, būtų tyliai perrašiusi pirmosios įmonės kopiją, visiškai teisingu SQL, be klaidos, be įspėjimo ir be nesėkmingo testo. Tai buvo rasta perskaičius kiekvieną likusį unikalų indeksą po rakto pakeitimo, po vieną, įtarus, kad triukšmingosios turi draugų.
Minime, nes tai yra sąžininga šio darbo forma. Atskirtis nėra funkcija, kurią įjungiate; tai įpročio skaityti nuobodžias schemos dalis, manydami, kad kažkas ten su jumis nesutinka, raiška.
Testai, kad būtų aišku: jų 942, vykdomi prieš duomenų bazę, atstatomą iš nulinio taško po kiekvieno pakeitimo. Jie nėra tam, kad įrodytų, jog dizainas protingas. Jie yra todėl, kad šio konkretaus dizaino klaidos režimas yra tylus, o tylios klaidos reikalauja, kad kas nors šauktų jų vardu.
Ką atskirtis duoda paprastam žmogui
- Grupė gali valdyti kelias įmones iš vieno įrenginio, ir pardavėjas iš vienos niekada nematys kitos kliento — ne pagal taisyklę, o pagal konstrukciją.
- Partnerių programa, raginimų rinkinys, pretenzija į klientą: visos apimamos atskirai kiekvienai įmonei, todėl vieno nuomininko konfigūracija negali tapti visų.
- Ištrynimo prašymas įgyvendinamas ribose, o ne bendroje krūvoje — būtent todėl galima atsakyti sąžiningai.
- Ir niekam nereikia to prisiminti. Tai ir yra esmė — garantija, kuri priklauso nuo prisiminimo, nėra garantija.
Dar viena eilutė, kuri nėra apie duomenų bazes
Kiekviena seserinė tarnyba šeimoje laiko savo pavadintą kredencialą. Niekas nekalba bendru kredencialu, todėl jokia tarnyba negali atsitiktinai veikti kaip kita — maža disciplina, kilusi tiesiogiai iš to, kad kadaise turėjome bendrą prieigos raktą ir nesidžiaugėme tuo.
Tai tas pats instinktas kaip duomenų bazės taisyklė. Padarykite neteisingą dalyką neįmanomą, o ne atgrasytą, ir savo dėmesį skirsite klientams, o ne budrumui.
- 126 lentelėsKiekviena neša savo nuomininką, o patikra priverstinai įjungta.
- 272 taisyklių rinkiniaiParašyti atskirai, todėl kiekvieną perskaitė žmogus.
- 3942 testaiPrieš duomenų bazę, atstatomą iš nulinio taško po kiekvieno pakeitimo.
- 40 numatytųjų nuomininkųUžklausa be apimties niekada nepasiekia duomenų.
Išmatuota tiesioginiame variante

„Mūsų programa visada filtruoja pagal įmonę.“
Žodyje „visada“ slypi visa to sakinio esmė.
Perkelkite ribą žemyn į duomenų bazę, ir užmiršta WHERE sąlyga negrąžins nieko vietoj kieno nors kito klientų. Tuščias ekranas yra geresnė klaida nei nepatogus susipažinimas.
Grupėms, valdančioms kelis prekės ženklus →