Datu bāze vai datu izgāztuve?

oktobris 24, 2007

Šī raksta oriģināls ir angliski un atrodams šeit. Tā kā tas ir manis paša rakstīts, tad ar autortiesībām viss ir kārtībāJ

Katrs no mums ir vairāk vai mazāk pazīstams ar datu bāzēm. Sākot ar vecu lapiņu jūkli ar telefonu numuriem un draugu dzimšanas dienām, un beidzot ar relāciju datu bāzu vadības sistēmām, kuras satur miljoniem ierakstu un terabaitiem datu.

Lielākā daļa cilvēku domā, ka nezin, kas ir datu izgāztuves. Bet patiesībā tā nemaz nav!

Kas tad ir datu izgāztuve?

Īsumā tā ir datu bāze, kurā nav definētu noteiktu algoritmu, kā iegūt korektus datus un dati ir pretrunīgi. Ja tā ir jūsu papīru kaudzīte vai tas ir jūsu dators, kas satur jums vien saprotamā haosā esošas datnes, tad tā ir tikai un vienīgi jūsu problēma. Bet, ja tā ir datu bāze, ko lieto desmitiem un simtiem lietotāju, kas nodrošina ar informāciju veselas organizācijas un pat valstis, tad, protams, situācija ir daudz sliktāka.

Kā jau tas parasts – apzināšanās, ka esat bedrē, ir jau pirmais solis ārā no bedres 🙂

Tāpēc sākumā parunāsim, kādi ir datu izgāztuves simptomi, bet tālāk kādas tam ir potenciāli sliktas sekas.

Kā no tā tikt vaļā – lūk tas jau ir krietni sarežģītāks jautājums. Diemžēl, kā jau parasti nesalīdzināmi daudz vieglāk ir ķezā neiekulties, nekā mēģināt no tās tikt ārā.

Datu izgāztuves simptomi

Šeit esmu centies apkopot plašāk izplatītos datu izgāztuvju simptomus. Lielākā daļa no tiem nav tīri jā/nē tipa jautājumi un atbildes, bet jo vairāk jums šādu simptomu ir pēc skaita un jo spēcīgāk jums tie izpaužas, jo lielāka iespēja, ka agrāk vai vēlāk jums nāksies sastapties ar negatīvām sekām.

Lai gan atsauces lielākoties ir saistītas ar Oracle datu bāzi, šie simptomi ir attiecināmi uz jebkuru datu bāzi, neatkarīgi no tā kādā vidē tā ir izstrādāta, ja vien šī datubāze nodrošina kaut ko vairāk, nekā iespēju glabāt datus tabulās.

1. Dokumentācijas neesamība

Ko es saprotu ar dokumentāciju? Es šeit nedomāju tikai un vienīgi dokumentus MS Word formātā atbilstoši kādam vispārpieņemtam standartam, kaut gan tā ir viena no ļoti reālām iespējām. Patiesībā dokumentācija var būt ļoti dažāda veida:

1) programmatūras projektējuma apraksts atbilstoši LVS standartam;

2) atsevišķs dokuments ko var nosaukt piemēram par datubāzes projektējuma aprakstu;

3) komentāri datubāzē pie katras tabulas un kolonas.

Ir ļoti svarīgi atcerēties, ka galvenais dokumentācijas mērķis nav iegūt visu tabulu un kolonu uzskaitījumu, bet ka galvenais mērķis ir darīt zināmu, kāpēc šāda tabula vai kolona ir izveidota, kādas ir tās iespējamās vērtības, ko katra vērtība nozīmē, kāda ir tabulas/kolonas sūtība.

Ir ļoti viegli noģenerēt kolonu un/vai tabulu sarakstu no datubāzes, ir ļoti viegli izgūt visām tabulām primārās atslēgas, sasvstarpējās relācijas un citus ierobežojumus, izmantojot datu vārdnīcu, bet daudz grūtāk ir saprast ko katrs no šiem objektiem dara un kādam mērķim kalpo. Piemēram, ir diezgan bezjēdzīgi kolonas komentāros rakstīt, ka tā ir ārējā atslēga uz tabulu X, bet nepaskaidrot tās biznesa nozīmi. To, ka šī kolona ir ārējā atslēga, ir ļoti viegli noskaidrot izmantojot datu vārdnīcu vai (kas būtu vēl labāk) pēc nosaukuma, kas atbilst attiecīgām vadlīnijām. Tai pašā laikā ne vienmēr ir acīmredzami, kāda ir biznesa nozīme šādai ārējai atslēgai.

Turpmākā lasāmviela:

1.New Media (Oracle) Database Design Template(Ļoti laba datubāzes projektējuma apraksta veidne).

2. Vienīgā zinošā persona nesen mainīja darbu

Kopā ar Dokumentācijas neesamība (1) un Visa loģika aplikācijā / datubāzē ir tikai tabulas (5) ir ļoti lielas problēmas, ja sistēmā ir nepieciešamas izmaiņas vai no sistēmas ir jāizgūst dati. Tādā gadījumā vienīgā izeja ir analizēt datu modeli, analizēt datus un aplikācijas kodu (ja ir pieejams pirmkods). Tas prasa laiku. Tas prasa ļoti daudz laiku un resursus. Un nav nekādas garantijas, ka veiktās izmaiņas neizsauks pilnīgi neprognozētas sekas kaut kur citur. Iespējams, ka jūs tikai pēc kāda laika uzzināsiet, ka jūsu veiktās izmaiņas rada kļūdu kādā speciālā gadījumā vai vēl sliktāk – nemanāmi sabojā jūsu datus. Tāpēc rūpējieties un neizturieties pavirši pret jūsu vienīgo zinošo personu, bet tai pašā laikā piespiediet viņu atrisināt Dokumentācijas neesamības problēmu vai vismaz nodot savas zināšanas citiem kolēģiem.

3. Sākotnējā projektējuma trūkums

Jebkas, kas nav triviāls vai neskaitāmas reizes jau paveikts un kļuvis par absolūtu rutīnu prasa sākotnējo projektējumu. Saskaņā ar būvniecības noteikumiem Latvijā nevienu māju nav iespējams uzbūvēt bez projekta. Diemžēl nez kāpēc cilvēkiem liekas, ka Informāciju tehnoloģijās tas nav spēkā un ka ir iespējams ietaupīt laiku un resursus projektējumu neveicot. Patiesībā vismaz ilgtermiņā tas ir daudz dārgāk. Jo tuvāk projekta sākumam tiek pieļauta kļūda, jo dārgāk tā izmaksās. Ja datu modelis ir nekorekts jau pašā sākumā, neviens pasaules ģeniālākais programmētājs nespēs panākt, lai jūsu aplikācija darbojas pieņemamā ātrumā un arī paši “niknākie dzelži” tur būs bezspēcīgi.

Turpmākā lasāmviela:
Loģiskā modelēšana:

1. Data Model Patterns: Conventions of Thought by David C. Hay, ISBN: 0932633293;

2. The Data Model Resource Book, Vol. 1: A Library of Universal Data Models for All Enterprises by Len Silverston, ISBN: 0471380237;

3. Requirements Analysis: From Business Views to Architecture by David C. Hay, ISBN: 0130282286;

4. http://www.phlonx.com/resources/nf3/ – Ieskats datubāzes normalizācijā;

5.http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:6692296628899 – piemērs kā nevajag darīt;

6. Oracle Insights Tales of the Oak Table, Chapter 11 Bad CaRMa by Tim Gorman, ISBN: 1590593871;

7. http://www.learndatamodeling.com/ – īss pārskatas par datu modelēšanu.

8. http://www.tdan.com/edatt1_archive.htm – rakstu arhīvs. Var meklēt piemēram David Hay; viņam ir vairāki vērtīgi raksti šajā vietnē.

9. ievads datu modelēšanā un relāciju modelēšanā.

 Fiziskā modelēšana Oraclei:

1. Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions by Thomas Kyte, ISBN: 1590595300;

2. Effective Oracle by Design (Osborne ORACLE Press Series) by Thomas Kyte, ISBN: 0072230657;

3. Oracle Insights Tales of the Oak Table, Chapter 10 Design Disasters by Jonathan Lewis, ISBN: 1590593871;

4. http://asktom.oracle.com – Thomas Kyte atbildes uz daudziem un dažādiem jautājumiem.

 

Raksta otrā daļa, trešā daļa.


Oracle problēmu risināšana

oktobris 10, 2007

Agrāk vai vēlāk darbojoties ar Oracle ikviens sastopas ar kādu problēmu, ko nav iespējams atrisināt paša spēkiem. Tālākie scenāriji ir vairāki:

  1. Nedarīt neko, pacelt rokas un laisties dibenā. Problēma – jūsu darba devējs ar laiku var sākt kļūt neapmierināts un problēma tā arī paliek neatrisināta 😉
  2. Jautāt kolēģiem. Notiekti krietni labāka doma kā iepriekšējā, bet ir pāris mīnusu tik un tā – ar laiku kolēģim var apnikt un var, protams, gadīties, ka neviena zinoša kolēģa nav.
  3. Pa taisno bez domāšanas atvērt kādu forumu vai e-pasta listi un bliezt iekšā jautājumu un iespējams saņemt gatavu atbildi no kāda laba cilvēka. Mīnusi – nav nekādas garantijas, ka atbilde (vispār) tiks saņemta un gatavs risinājums parasti nepalielina esošo zināšanu krājumu.

Es ieteiktu izmantot 4. veidu, kas manuprāt ir vissakarīgākais no visiem, jo:

  • māca kā atrast informāciju,
  • palielina esošo zināšanu bāzi,
  • pārlieku nenoslogo un “nebesī” citus cilvēkus.

Tātad pirmais solis ir izmantot Oracle dokumentāciju. Ir divi veidi kā pie tās tikt:

  • mana iemīļotā lapa ar indeksu uz Datu bāzes (un ne tikai) dokumentāciju dažādām versijām. Izvēlamies vajadzīgo DB versiju un aidā!
  • krietni nopietnāks indekss ar norādēm uz vairāk versijām un produktiem, bet man parasti nav nepieciešams.

Kā strādāt ar Oracle dokumentāciju?
10g versija satur vairāk kā 400 dokumentus un protams neviens mirstīgais nav spējīgs caurskatīt tos visus. Taču bez panikas – galvenais ir atcerēties dažus svarīgākos dokumentus:

  • Concepts – apraksts par Oracle uzbūvi, arhitektūru, atmiņu, failu sistēmu, transakcijām, shēmas objektiem, drošību, datu integritāti u.c. galvenajiem konceptiem. Ikvienam, kas gatavojas nopietni darboties ar Oracle datu bāzi būtu pienākums šo dokumentu vismaz pārskatīt.
  • SQL Reference – ja ir problēmas ar konkrēta SQL teikuma sintaksi vai nav skaidras šī SQL teikuma iespējas, tad tas ir īstais dokuments. Tāpat tajā ir informācija par visiem iebūvētajiem datu tipiem, hintiem, pseidokolonām, operatoriem un funkcijām. Saturs šim dokumentam nebūt nav tik liels, lai tam nevarētu nepilnas minūtes laikā pārskriet pāri un ar to iepazīties.
  • Application Developer’s Guide – Fundamentals – Vispārējas vadlīnijas db un uz tās balstīta produkta izstrādē, paskaidroti piemēram datu integritātes ierobežojumi, SQL procesēšana, datu tipu izvēle utml lietas.
  • PL/SQL User’s Guide and Reference – ja plānojat kaut ko programmēt izmantojot PL/SQLu – obligāti ieteicamā literatūra.
  • Performance Tuning Guide – izstrādes un konfigurēšanas vadlīnijas, lai jūsu izveidotā aplikācija strādātu saprātīgā ātrumā arī tad, kad to lietos vairāk kā viens lietotājs.
  • Reference – visi inicializācijas parametri un datu vārdnīcas skatījumi.
  • 2 Day DBA un Administrator’s Guide – īss un pilnīgs pārskats par Oracle datubāzes administrēšanu un uzturēšanu, ieskaitot instalēšanu, konfigurēšanu, rezerves kopiju veidošanu un atjaunošanu, skaņošanu utt.
  • New Features Guide – lietas, kas nākušas klāt kopš iepriekšējās versijas.
  • Licensing Information – informācija par Oracle db licencēšanas mehānismu.
  • Data Warehousing Guide – dažādas ļoti interesantas lietas, kas attiecas ne tikai uz datu noliktavām – particionēšana, materializētie skatījumi, analītiskās funkcijas, paralēlā izpilde utt.

Ja nu gadījumā ar dokumentāciju vien cauri netiekat vai nu tāpēc, ka nevarat atrast kur meklēt jūsu problēmas atrisinājumu, vai arī tāpēc, ka problēmas atrisinājums dokumentācijā tiešām nav atrodams, tad nākošais solis ir doties uz lapu ko uztur vīrs vārdā Thomas Kyte. Šeit ir ļoti daudz populāru jautājumu un ļoti daudz vērtīgu atbilžu, kaut vai piemēram, kā Oraclē var lapoties cauri rezultātam un var tikai apbrīnot kā viens cilvēks spēj atbildēt uz tik daudz jautājumiem un pa vidu vēl sarakstīt vērtīgas grāmatas…

Ja nu tomēr izrādās, ka jūsu jautājums ir absolūti unikāls, jauns, īpašs un nekad vēl neredzēts, tad trešajā solī varat doties uz Oracle forumiem izvēlēties atbilstošu kategoriju, drošības pēc pameklēt – varbūt tomēr kāds jūsu superunikālo jautājumu jau ir atbildējis – un, ja ne, tad uzdot foruma lietotājiem mīklu. Kas zina, viss var gadīties un viņi rod jūsu mīklai atbildi 😉

Tātad šai trīssoļu kombinācijai es neminu vēl 2 acīmredzamas lietas:

  • Lietojiet google, cilvēka labāko draugu.
  • Atcerieties, ka Oracle piedāvā arī oficiālu uzturēšanu un ir tāda lapa, kas gan ir pieejama tikai tad, ja jums ir spēkā esošs uzturēšanas līgums.