Märge
Oma märkmed ja andmebaas: millal mõte vajab tabelit

Mul on märkmeid paberil, failides, sõnumites ja paaris tabelis. See märge on sellest, kuidas ma mõtlen oma märkmete ja andmebaasi vahelisest piirist, millal üks märge vajab struktuuri ja millal mitte ning mida ma kolmeteistkümne blogi süsteemi pealt selle kohta õppinud olen.
Märge ja andmed ei ole sama asi
Märge on mõte. See võib olla pooleli, segane või vastuoluline. Andmed on midagi, mida saab otsida, sorteerida ja võrrelda. Pikka aega hoidsin neid samas kohas, sest nii oli lihtne. Iga uus mõte läks samasse faili, iga uus number samasse vihikusse. Mõne aja pärast ei leidnud ma enam kumbagi.
Paberimärkmete ja failide vahet olen varem kirjutanud artiklis Paberimärkmed versus fail: kuidas ma oma mõtteid tegelikult hoian. Siin lähen sammu edasi: mis juhtub, kui märkmeid on nii palju, et need vajavad andmebaasi, ja kuidas seda teha nii, et märge ei kaotaks oma mõtet.
Kui märge muutub andmeks
Hea näide on minu blogisüsteem. Kolmteist saiti, igaühel viiskümmend teemat, igal postitusel pealkiri, kuupäev, sildid ja pilt. Alguses hoidsin seda kõike peas ja mõnes tekstifailis. Kui postitusi sai üle saja, ei olnud see enam võimalik. Pidin teadma, milline teema on juba kirjutatud, millisel kuupäeval ja millise pildiga.
Siis muutus märge andmeks. Iga postitus sai kirje: domeen, kuupäev, teema number, pealkiri, ID ja pildi aadress. See ei ole keeruline andmebaas, pigem lihtne tabel või JSON-fail. Aga see vahetus muutis töö palju rahulikumaks. Ma ei pea enam meenutama, ma saan vaadata.
Sellest, kuidas see API üldse valmis sai, kirjutasin artiklis Kuidas üks API kolmeteistkümnele blogile valmis sai.
Mis jääb märkmeks
Kõik ei pea olema andmebaasis. Mõte, miks ma mõnda projekti teen, ei mahu tabelisse. Kahtlus, kas üks sait on üldse vajalik, ei ole väli, mida saab täita. Need jäävad märkmeteks: vabas vormis, sageli pooleli.
Minu reegel on lihtne. Kui ma pean midagi hiljem otsima või võrdlema, läheb see struktuuri. Kui ma pean selle üle hiljem mõtlema, jääb see märkmeks. Mõnikord on samal asjal mõlemad pooled: tabelis on postituse andmed, märkmes on see, miks ma selle teema valisin.
Struktuur, mis ei sega
Kõige suurem oht, mida ma andmebaasi juures näen, on liiga palju välju. Alguses tundub, et iga detail võib hiljem kasulik olla. Kiusatus on lisada väli tuju, ilma, kellaaja ja tööriista jaoks. Tõenäoliselt täidaksin mõne nädala pärast ainult kolme ja ülejäänud jääksid tühjaks. Tühjad väljad teevad tabeli raskemaks lugeda ja tekitavad süütunnet.
Seepärast alustan võimalikult väheste väljadega. Kui mõni väli osutub vajalikuks, lisan selle. Kui mõnda välja pole kuu aega täidetud, kustutan selle. Struktuur peab teenima tööd, mitte vastupidi.
Failid, mida ma päriselt kasutan
Minu märkmete süsteem on igav. Tekstifailid kaustades, mille nimed ütlevad, mis seal on. Mõned tabelid. Mõned JSON-failid, mida skriptid loevad. Varukoopiad, millest kirjutasin artiklis Varukoopia, mida ma päriselt teen.
Keeruline märkmerakendus, mis lubab kõike siduda kõigega, ei ole minu jaoks. Sellise puhul tunnen ohtu, et kulutaksin rohkem aega süsteemi korrastamisele kui märkmete kirjutamisele. Lihtne fail on minu jaoks vastupidavam. Seda saab avada iga programmiga ka kümne aasta pärast.
See ei tähenda, et keerulised rakendused on halvad. Need sobivad inimestele, kellel on teistsugune töö. Minu töö on pigem lineaarne: kirjutan, avaldan, kontrollin, arhiveerin.
Andmebaas kui mälu
Üks asi, mida ma andmebaasi juures hindan, on see, et see ei unusta. Inimmälu kipub lugu ilusamaks tegema. Kui ma mäletan, et mõni projekt läks hästi, võib tabel näidata, et tegelikult oli seal mitu viga. Kui ma arvan, et kirjutasin mõnest teemast juba, võib tabel öelda, et ei kirjutanud.
See on eriti oluline esimeses isikus kirjutades. Pardikesel kirjutan, mida ma tegin. Kui mul on andmed, saan kontrollida, kas mäletan õigesti. Kui andmeid pole, kirjutan, et see on mälu järgi, ja jätan kuupäevad välja.
Märge, mis viitab andmetele
Parim kombinatsioon, mida olen leidnud, on märge, mis viitab andmetele. Näiteks võiks märge olla selline: „Avaldasin pildimehe seitse postitust, ID-d on tabelis 135–141.“ Märge annab konteksti, andmed annavad täpsuse. Kumbki ei pea teist kordama.
Sama põhimõtet kasutan ka blogipostitustes. Kui kirjutan teisel saidil midagi, mis on seotud Pardikese märkmega, panen lingi. Nii on kõik seotud, kuid igaüks oma kohas.
Kuidas ma tabelit loen
Tabel ise ei ütle midagi, kui ma seda ei vaata. Seepärast on mul harjumus vaadata seda iga kord enne, kui uue postituse kallal hakkan tööle. Kontrollin, milliseid teemasid on juba kasutatud, millal viimati ühel saidil postitus ilmus ja kas mõni rida on poolik. Poolik rida tähendab tavaliselt, et midagi läks avaldamisel valesti ja see vajab tähelepanu.
See kontroll võtab paar minutit, kuid säästab mind kordustest. Kahe sama teemaga postituse avaldamine ühel saidil oleks väike viga, kuid lugeja märkaks seda. Tabel aitab mul olla järjepidev ilma, et peaksin kõike meeles pidama. Ja kui midagi ikkagi läheb valesti, näitab tabel, kus see juhtus.
Mida ma veel ei tea
Ma ei ole kindel, kuidas hoida märkmeid, mis on mitme projekti vahel. Praegu kordan neid mõnikord mitmes kaustas, mis tekitab segadust. Võib-olla vajan ühte üldist kausta, kuhu panen kõik, mis ei kuulu ühele projektile. Võib-olla vajan siltide süsteemi. Ma pole veel otsustanud.
Ma ei ole ka kindel, kui kaua märkmeid alles hoida. Mõned vanad märkmed on täiesti kasutud, teised on üllatavalt väärtuslikud. Praegu hoian kõike, sest ruumi on piisavalt, kuid otsimine muutub raskemaks. Võib-olla on lahendus kord aastas üle vaadata, mida ma viimase aasta jooksul avasin, ja ülejäänu eraldi arhiivi tõsta. See on katse, mida ma pole veel teinud.
Väike nimekiri iseendale
Kui alustan uut projekti, küsin nüüd neid küsimusi. Mida ma pean hiljem otsima? See läheb tabelisse. Mida ma pean hiljem mõtlema? See läheb märkmesse. Kus on varukoopia? See peab olema enne esimest kirjet selge. Mitu välja on mul vaja? Nii vähe kui võimalik.
Kokkuvõtteks
Märge ja andmed on erinevad, kuid töötavad koos. Mõte jääb märkmeks, otsitav asi läheb struktuuri. Alustan väheste väljadega, kasutan lihtsaid faile ja lasen andmetel parandada oma mälu. See ei ole täiuslik süsteem, kuid see on minu oma ja see töötab praegu piisavalt hästi, et ma saaksin keskenduda kirjutamisele.
Kui kirjutad ise blogi ja mõtled, kuidas oma postitusi hallata, võib abiks olla Blog.ee artikkel RSS ja kes seda veel peab: Eesti blogide voogude seis. Voog on samuti omamoodi andmebaas, mis näitab, mis kunagi ilmus.