Kodulehed
[382] - Andmebaasid I (ITI0206) (kevad 2022)
Esiletöstetud Kiirvalik
Lisainfo Kõige olulisemate tegevuste kiirvalik. Failide saatmiseks valige Vastamine alt sobiv ülesanne.
Üldist
Materjalid
LisainfoMaterjalide kataloogid
Isiklik
Lisainfo Info ainult Sulle - teised kasutajad seda ei näe
Abi
Lisainfo Võimalus küsida õppejõult abi (nagu foorum, kus saab küsida küsimusi ja kommenteerida vastuseid)
Mitmesugust
Abi / Kasutajatugi / Andmebaasi kavandamise sisulised küsimused

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Erki Eessaar (27.09.2022 01:01):
Kas olemasolevates "päriselu" SQL-andmebaasides jõustatakse välisvõtme kitsendusi?
Vastus (12.10.2022 11:51): Mitte nii palju kui peaks.

B. Karwini SQL-andmebaasi disaini antimustrite raamatu peatükis 5 (Keyless Entry) esitatakse antimuster Leave Out the Constraints, et andmebaasis puuduvad välisvõtme kitsendused.

M. Blaha 2001. aasta artiklis A Retrospective on Industrial Database Reverse Engineering Projects-Part 2 uuris 35 pöördprojekteeritud andmebaasi. Ta tõdes, et vaid 10% andmebaasidest deklareerib välisvõtmeid ning isegi nendes, kus välisvõtmeid deklareeritakse, on osad puudu.

Artiklis Managing Technical Debt in Database Schemas of Critical Software räägitakse andmebaasi tehnilisest võlast ja võla näitena kasutatakse välisvõtme kitsenduste puudumist andmebaasist. Autorid viitavad OSCAR Electronic Medical Record tarkvarale, mida kasutavad sajad Kanada tervishoiuasutused. Selle andmebaasis on üle 450 tabeli ja mõnes tabelis on üle tuhande veeru.  Autorid täheldasid, et suhteliselt palju välisvõtme kitsendusi on andmebaasist puudu ja andmebaasis on seega palju üksteisega sidumata tabeleid. Kasutatav andmebaasisüsteem toetab välisvõtme kitsenduste deklareerimist. Viidete terviklikkuse kontroll toimub enamasti rakenduses.

Artiklis Feral Concurrency Control: An Empirical Investigation of Modern Application Integrity kirjeldati Ruby on Rails raamistikus loodud 67 avatud lähtekoodiga rakenduse uurimise tulemusi. Artiklis uuritakse unikaalsuse ja viidete terviklikkuse kitsenduste jõustamist rakenduse tasemel olukorras, kus andmeid muudab korraga mitu kasutajat.

Stressitestil väga suure samaaegsete kasutajate arvuga (64) muutus rakenduse tasemel realiseeritud viidete terviklikkuse kontroll peaaegu väärtusetuks, sest andmebaasi jõudis väga palju viidete terviklikkust rikkuvaid andmeid. Samas, kui tabelites olid deklareeritud välisvõtme kitsendused, siis ei juhtunud seda kunagi.  Artikli järeldustes tõdeti: "Andmete samaaegse kasutamise reguleerimise lahenduste sisseehitamine rakendusraamistikesse või üksikutesse rakendustesse on kallis, veaohtlik ja raske ettevõtmine, mis eirab andmebaaside valdkonnas aastakümneid sellel suunal tehtud tööd. Kuigi see lähenemine on piisav, et tagada meie analüüsitud süsteemide puhul umbes 87% kitsenduste korrektne jõustamine, võib ülejäänute puhul andmete kontrollimine paljudes kaasaegsete ORMides viia kitsendustele mittevastavate andmete registreerimiseni."

Bakalaureusetöös "Ettevõttesisese tarkvara täiendamine - kasutajaliidese ja andmebaasi kavandamine ning sobivuse hindamine" täiendati tuntud ettevõtte poolt enda tarbeks loodud tarkvara inimressursside planeerimise funktsionaalsusega. Töö üheks osaks oli olemasoleva andmebaasi dokumenteerimine (dokumentatsioon puudus) ja selle andmebaasi analüüsimine disainiprobleemide seisukohalt. Autorid leidsid 20 erinevat tüüpi probleemi (vt jaotis 4.2). Üks nendes probleemidest (vt jaotis 4.2.14) on mõned puuduvad välisvõtme kitsendused (st enamik nendest kitsendustest on siiski jõustatud).

Bakalaureusetöös "Andmebaasi loogilise ja füüsilise disaini antimustrite esinemine mõnedes vaba tarkvara poolt kasutatavates SQL-andmebaasides" otsitakse andmebaasi disaini antimustrite esinemisi avatud lähtekoodiga rakenduste Postbooks (ettevõtte ressursside planeerimise süsteem; andmebaas tehtud PostgreSQLis) ja OpenEMR (arstipraksise haldustarkvara; andmebaas tehtud MySQLis) andmebaasidest. Autor leidis uuritud andmebaasides 12 erineva andmebaasi disaini antimustri esinemisi. Autor kirjutas xTuple Postbooks kohta: "Välisvõtmed on üldiselt deklareeritud, samas on palju kohti, kus oleks võinud kasutada välisvõtit." Samas OpenEMR andmebaasis välisvõtme kitsendused puudusid.

PostgreSQL andmebaaside disainivigade otsimise päringute abil tehtud uurimuste kohta kirjutatud teadusartiklites (Eessaar, 2021; Eessaar, 2022) on uuritud nelja pika arenduse ajalooga ja endiselt aktiivselt kasutuses oleva rakenduse PostgreSQL andmebaasi. Kolm nendest rakendustest on avatud lähtekoodiga. Need programmid on FusionForge (avatud lähtekoodiga arenduse haldamise tarkvara; andmebaasis 206 baastabelit), LedgerSMB (avatud lähtekoodiga ettevõtte ressursside planeerimise tarkvara; andmebaasis 162 baastabelit), OTRS Community Edition (avatud lähtekoodiga lahendamist vajavate probleemide haldamise tarkvara; andmebaasis 116 baastabelit) ja Stansoft (finantsarvestuse tarkvara; andmebaasis 174 baastabelit). Eessaar (2021) leidis, et Stansofti andmebaasis ei ole ühtegi välisvõtme kitsendust deklareeritud. Ülejäänud andmebaasides on välisvõtme kitsendusi deklareeritud, kuid uuring leidis, et kindlasti on paljud kitsendused deklareerimata. Näiteks on FusionForge andmebaasis 31.6% (65), OTRS andmebaasis 15.5% (18) ja LedgerSMB andmebaasis 4.9% (8) tabelitest sellised, mis on justkui saared - nendes ei ole ühtegi välisvõtme kitsendust ja nendele ei viita mitte ükski välisvõtme kitsendus. Olemasolevate unikaalsuse kitsenduste ja veerunimede alusel leiti, et FusionForge andmebaasis on 7.9% (87), Stansofti andmebaasis on 4.4% (84), OTRS andmebaasis on 3.7% (36) ja LedgerSMB andmebaasis on 3% (29) veergudest sellised, millel puudub välisvõtme kitsendus.

Artiklis Documenting Database Usages and Schema Constraints in Database-Centric Applications analüüsisid autorid 3113 avatud lähtekoodiga andmebaasirakendust, mis suhtlevad andmebaasisüsteemiga JDBC draiveri vahendusel ja mille korral tuleb andmebaasi skeem luua SQL lausete käivitamise tulemusel, mitte ei looda skeemi automaatselt ORM vahendi poolt. Igal rakendusel oli üks või rohkem SQL faili. Autorid leidsid välisvõtme deklaratsioone 2196 SQL failist. Välisvõtmeid deklareeriti 379 rakenduse korral, mis on 12.17% kõigist vaadeldud rakendustest.

Miks neid kitsendusi siis ei jõustata? Mõned põhjused.
  • Andmebaasis juba kasutusel olevate lahenduste jäljendamine uute arendajate poolt.
  • Soov realiseerida andmebaasi läbivalt ühes stiilis.
  • Üldine käegalöömine – teised lasevad üle jala, mis siis minagi pingutan.
  • MySQLi MyISAM salvestusmootor, mis oli MySQLis vaikimisi valik kuni 2009. aasta detsembrini ja on ühe valikuna kasutusel praeguseni, ei toeta välisvõtme kitsendusi. InnoDB salvestusmootor, mis on praegu vaikimisi valik, toetab välisvõtme kitsendusi. Välisvõtmed võivad mõnikord puududa ka vanast harjumusest ja teadmatusest uute võimaluste kohta. Artiklis Managing Technical Debt in Database Schemas of Critical Software nimetatakse üleminekut MyISAM salvestusmootorilt InnoDB salvestusmootorile, kui võimalikku põhjust, miks tervishoiutarkvara Oscar andmebaasis on suhteliselt palju välisvõtme kitsendusi puudu - salvestusmootori muutumisel ei muudetud andmebaasi skeemi.
  • Internetiavarustes kohtab endiselt küsimusi, kas välisvõtme kitsendused halvendavad andmete muutmise operatsioonide töökiirust ja arvamusi, et halvendavad ja seega ei peaks neid deklareerima. Kes nii arvavad ei võta muidugi arvesse, et viidete terviklikkuse kontroll rakenduses nõuab päringuid andmebaasist ja kuidas see saaks olla eriliselt kiirem. Samuti ei arvesta niimoodi arvajad, et välisvõtme kitsendused garanteerivad andmebaasisüsteemi jaoks andmete vastavust viidete terviklikkuse reeglile ja võimaldavad selle kaudu andmebaasisüsteemil rakendada tabeli elimineerimise teisendust, mis on üks päringute optimeerimise meetod. Seega väga väike mõju andmete registreerimise kiirusele on igati sobiv hind, et hiljem oleksid päringud nende andmete põhjal kiiremad. Ütleksin, et välisvõtme kitsenduste puudumine on teatud maailmavaate (andmebaas on passiivne koht andmete hoidmiseks, kogu töö andmetega käigu rakenduses), arenduskultuuri ja arendusfilosoofia tunnuseks. Eelnimetatud Oscar tarkvara puhul viidatakse juhtarendajate rakendusekesksele maailmavaatele, kui põhjusele, miks viidete terviklikkuse kontroll selles süsteemis toimub suures osas rakenduse tasemel.

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!