Baza podataka: projektovanje, ubrzavanje i migracija

Podaci se retko izgube odjednom. Prvo se razmnože po Excel tabelama, pa se ista informacija razlikuje na dva mesta, pa izveštaj počne da se čeka minutima, a onda se ispostavi da rezervnu kopiju niko nikada nije probao da vrati. Radim bazu koja to zaustavlja: strukturu, brzinu i oporavak.

Struktura

Jedan podatak, jedno mesto

Kupac, artikal ili nalog upisuju se na jednom mestu i odatle se čitaju. Kada isti podatak stoji u tri tabele, pre ili kasnije se razlikuje u sve tri.

Brzina

Brzina se meri, ne procenjuje

Pre zahvata se izmeri koliko traju najsporiji upiti, pa posle zahvata ponovo. Dobijate razliku u sekundama, a ne utisak da je „sada brže“.

Oporavak

Kopija koja se zaista vraća

Rezervna kopija vredi tek kada se jednom vrati na prazan server i izmeri koliko je to trajalo. Do tada je to samo datoteka za koju se nadate da valja.

Gde ovo ima smisla

Ovo su vrste poslova koje radim. Koji od njih je vaš i koliko traje, vidi se posle pregleda — tada dobijate rok i cenu, a ne procenu preko telefona.

Excel je prerastao sam sebe

Tabelu otvara više ljudi, kopije kruže mejlom, a niko ne zna koja je poslednja. Podaci se prebacuju u bazu, uz jednostavan ekran za unos i pretragu, tako da svako radi nad istim podacima i vidi ko je šta promenio. Kada ljudi ne žele da napuste Excel, unos ostaje u njemu preko Office dodatka, a baza stoji ispod.

Sistem je postao spor

Program je radio dok je podataka bilo malo, a sada se izveštaj čeka. Traže se najsporiji upiti, postavljaju indeksi koji nedostaju i prepravlja ono što baza ne može da ubrza sama. Program se pritom ne menja iznutra više nego što mora.

Nasleđena baza koju niko ne razume

Access, stari SQL Server ili baza čiji je autor odavno otišao. Struktura se popisuje i dokumentuje, a podaci se prenose u bazu koja se održava — sa spiskom onoga što je u prenosu ispravljeno i onoga što je moralo da ostane kako jeste.

Podaci u više programa

Prodaja u jednom sistemu, magacin u drugom, knjigovodstvo u trećem, a izveštaj neko sastavlja ručno. Podaci se povezuju preko zajedničkog ključa ili se prepisuju u jedno mesto za izveštavanje, pa se izveštaj dobija sam.


Sa čime radim

Radim sa relacionim bazama koje su mi svakodnevni alat. Izbor baze nije stvar ukusa nego onoga što već imate, koliko podataka ima i gde sistem stoji.

MySQL i MariaDB

Podrazumevani izbor za sajtove i veb aplikacije. Stoje na svakom ozbiljnijem hostingu, jeftine su za održavanje i na njima radi većina onoga što isporučujem.

Microsoft SQL Server

Uobičajen u firmama koje rade na Windows serverima i u poslovnim programima. Tu radim i rezervne kopije log datoteke, planove izvršavanja i poslove koji se izvršavaju noću.

PostgreSQL

Kada su podaci složeniji nego što relacioni model lepo pokriva: JSON u tabeli, geografija, zahtevniji izveštaji. Ozbiljna baza otvorenog koda bez licence po korisniku.

SQLite i baza uz program

Kada baza treba da putuje zajedno sa programom, na jednom računaru i bez servera. Dovoljno za alatke i dodatke, a prelazak na pravi server ostaje moguć kasnije.

Baza retko stoji sama: podatke neko unosi i nekome trebaju. Zato uz nju radim i program preko koga se radi, sajt koji je koristi, vezu sa sistemom iz koga podaci dolaze i, kada ima smisla, AI funkcije nad tim podacima.


Cene

Cifre stoje javno da biste odmah znali red veličine. Kod zahvata je to donja granica, jer obim zavisi od zatečenog stanja — tačnu cenu i rok dobijate posle pregleda, koji se plaća posebno i poručuje se prvi. Vidite i šta nije obuhvaćeno.

Prvi korak

Pregled baze podataka

Dva radna dana, fiksna cena, pisani nalaz koji ostaje vama.

30.000 RSD / 256 €

Pregled se plaća i poručuje prvi. Šta obuhvata i zašto se počinje njime.

Zahvati

Ubrzavanje baze i upita

Kada se izveštaj čeka, a program je nekada radio brzo.

  • Merenje pre zahvata, da se zna od čega se polazi.
  • Postavljanje indeksa koji nedostaju i uklanjanje onih koji samo usporavaju upis.
  • Prepravka najskupljih upita i izveštaja.
  • Podešavanje baze prema stvarnoj količini podataka i memoriji servera.
  • Ponovno merenje i pisani prikaz razlike.
Početna cena60.000 RSD / 511 €
Poručite pregled

Rezervne kopije i oporavak

Da kopija ne bude datoteka za koju se nadate da valja.

  • Dogovor o tome koliko sati rada smete da izgubite i koliko dugo smete da stojite.
  • Automatsko snimanje po tom dogovoru, uz snimanje log datoteke kada baza to traži.
  • Bar jedna kopija van servera na kome je baza.
  • Provera vraćanja na prazan server, sa izmerenim vremenom oporavka.
  • Obaveštenje kada snimanje otkaže, umesto tišine.
Početna cena45.000 RSD / 383 €
Poručite pregled

Prenos podataka u novu bazu

Iz Excel tabela, Access-a ili sistema koji se gasi.

  • Popis i dokumentovanje zatečene strukture.
  • Čišćenje podataka: isti kupac upisan na više načina, datumi kao tekst, prazna polja koja nešto znače.
  • Skripte za prenos koje mogu da se puste više puta, do poslednjeg probnog prenosa.
  • Provera: broj zapisa, zbirovi po ključnim kolonama i uzorak koji vi birate.
  • Stara baza ostaje netaknuta dok ne potvrdite da je novo stanje ispravno.
Početna cena90.000 RSD / 767 €
Poručite pregled

Projektovanje i izrada nove baze

Kada posao tek kreće ili se radi iznova, po meri.

  • Razgovor o poslu i popis onoga što se zaista evidentira.
  • Šema sa vezama i pravilima koja sprečavaju pogrešan unos.
  • Postavljanje baze na vaš server, sa pravima pristupa po ulogama.
  • Rezervne kopije i nadzor od prvog dana.
  • Dokumentacija šeme, tako da posao može da nastavi neko drugi.
Početna cena120.000 RSD / 1.022 €
Poručite pregled

Manje dorade na postojećoj bazi ne moraju da idu kroz zahvat: za njih postoji rad po satu, gde se plaća utrošeno vreme. Ceo cenovnik stoji na stranici cena.


Prvi korak: pregled baze

Ne dajem fiksnu cenu za bazu koju nisam video. Zato se počinje pregledom: dva radna dana, fiksna cena, i pisani nalaz koji ostaje vama bez obzira na to da li nastavljamo.

Nalaz odgovara na pet stvari:

  • Struktura. Šta se gde čuva, gde je isti podatak upisan dvaput i gde nedostaje veza koja bi sprečila greške pri unosu.
  • Brzina. Koji upiti troše najviše vremena, koji indeksi nedostaju i koliko se realno može dobiti — sa izmerenim vremenima pre zahvata.
  • Rezervne kopije. Da li postoje, koliko su stare i, važnije, da li se vraćaju. Vraćanje se proba, a ne pretpostavlja.
  • Pristup. Ko sve može da čita i menja podatke, da li se lozinke dele i šta se dešava kada neko ode iz firme.
  • Šta prvo. Spisak zahvata po redosledu, sa procenom vremena za svaki, tako da možete da stanete posle bilo kog koraka.

Nalaz kaže i ono što se retko čuje u ponudi: ako se vaš problem rešava jednim indeksom, sređivanjem podataka ili izmenom u izveštaju — jeftinije nego novom bazom — to će u nalazu i pisati.

Pregled je zasebna stavka sa svojom cenom i poručuje se odmah, jer su mu obim i rok unapred poznati:

Pregled baze podataka

Dva radna dana, fiksna cena, pisani nalaz koji ostaje vama.

30.000 RSD / 256 €

Ovaj iznos se odbija od cene zahvata ako nastavimo. Ako ne nastavimo, nalaz ostaje vama.


Na šta se obavezujem

  • Pre svakog zahvata pravi se rezervna kopija i piše put za povratak na staro stanje.
  • Zahvat se prvo izvodi nad kopijom, pa tek onda nad sistemom koji radi.
  • Brzina se meri pre i posle zahvata, pa razliku dobijate u sekundama.
  • Rezervna kopija se jednom stvarno vrati, da se zna da radi i koliko traje.
  • Šema, skripte i dokumentacija ostaju vama, tako da posao može da nastavi neko drugi.
  • Ako se problem rešava jeftinije nego što ste tražili, to piše u nalazu.

Šta nije obuhvaćeno cenom

Pišem ovo da biste cenu razumeli pre porudžbine, a ne posle. Sve sa spiska mogu da uradim, ali se dogovara i naplaćuje posebno.

  • Licence za baze i serverski softver, kao i zakup servera ili hostinga.
  • Program ili veb stranica preko koje se podaci unose i pretražuju — to je zaseban posao.
  • Ručno prekucavanje podataka sa papira ili iz skeniranih dokumenata.
  • Izmene u tuđem programu koji koristi bazu, kada je za njih potreban njegov autor.
  • Dežurstvo van radnog vremena i garantovani rok izlaska.
  • Oporavak podataka sa fizički oštećenog diska.

Šta da pripremite pre početka

  • Pristup bazi ili njena rezervna kopija, sa dozvolom da se radi nad kopijom.
  • Ime osobe koja poznaje posao — šta koja tabela znači u praksi, a ne samo kako se zove.
  • Podatak o tome koliko sati rada smete da izgubite i koliko dugo sistem sme da stoji.
  • Spisak programa i izveštaja koji čitaju iz te baze, da se ništa ne prekine u prolazu.
  • Termin u kome je dozvoljen kratak zastoj, ako je za zahvat potreban.

Šta ovo nije

Pošteno je reći i gde su granice, da ne biste plaćali pregled za posao koji ne radim.

Nisam dežurni administrator

Ne držim stražu nad vašim serverom danonoćno i ne garantujem izlazak u roku od sat vremena. Postavljam nadzor koji javlja kada nešto pukne, a dogovoreni odziv je u radno vreme.

Ne radim Oracle i Db2

Držim se baza koje svakodnevno koristim. Za Oracle i IBM Db2 postoje ljudi koji ih rade bolje od mene, pa ću vas radije uputiti nego učiti o vašem trošku.

Ne prodajem novu bazu po svaku cenu

Zamena baze je skupa i rizična. Ako se vaš problem rešava indeksom, izveštajem ili čišćenjem podataka, u nalazu će pisati to — i posao će biti manji nego što ste očekivali.


Vlasništvo, pristup i podaci

  • Baza, šema i skripte su vaši. Posle isporuke dobijate strukturu, skripte za migraciju i dokumentaciju, tako da posao može da nastavi neko drugi.
  • Nalozi i server glase na vaše ime. Hosting i pristupni podaci su vaši; ja radim sa svojim nalogom koji možete ugasiti kada poželite.
  • Radim nad kopijom dok god je moguće. Zahvati se prvo izvode na kopiji, pa tek onda na sistemu koji radi, i to u terminu koji vi odredite.
  • Pre svakog zahvata ide rezervna kopija. I put za povratak na staro stanje, napisan pre nego što se krene.
  • Vaše podatke ne iznosim. Ako je za rad potrebna kopija podataka, dogovara se unapred; osetljivi podaci se mogu zameniti izmišljenim pre nego što ih vidim.

Često postavljana pitanja

Najveći deo posla — merenje, analiza, pisanje skripti — radi se nad kopijom, dok sistem normalno radi. Zastoj je potreban samo za sam prelazak i za neke izmene nad velikim tabelama; koliko traje, piše u nalazu, a termin birate vi.

Prenos se ne završava prebacivanjem nego proverom: broj zapisa, zbirovi po ključnim kolonama i uzorak koji vi izaberete moraju da se poklope sa starim sistemom. Stara baza ostaje netaknuta dok ne potvrdite da je novo stanje ispravno.

Uglavnom može, ali oprezno. Indeksi i rezervne kopije se dodaju bez ikakvog rizika po tuđi program. Promena imena tabela i kolona traži izmenu i u programu, pa se u nalazu odvaja ono što se sme uraditi bez pipanja koda od onoga što traži i njegovog autora.

Zavisi od toga koliko sati rada smete da izgubite i koliko dugo smete da stojite. Ta dva broja određuju sve ostalo: koliko često se snima, koliko kopija se čuva i da li se snima i log. Njih zajedno postavljamo, jer to nije tehnička nego poslovna odluka. Bar jedna kopija uvek stoji van servera na kome je baza.

Možete, i to je čest posao. Teži deo nije prebacivanje nego čišćenje: isti kupac upisan na četiri načina, datumi kao tekst, prazna polja koja nešto znače. Pregled pokazuje koliko tog posla ima, pa se tek onda zna da li je u pitanju nekoliko dana ili nekoliko nedelja.

Baza sama po sebi nema ekran. Ako ga nemate, radim program ili veb stranicu preko koje se unosi i pretražuje. To je poseban posao sa svojom cenom i ne ulazi u zahvat nad bazom.

Niste sigurni šta vam je zapravo problem?

Opišite šta vas muči — sporost, duple podatke, strah od gubitka ili Excel koji je prerastao sam sebe. Odgovoriću da li se to rešava pregledom, manjom doradom ili uopšte ne treba da se dira.

Pošaljite upit

Uglavnom odgovaram isti dan.

Izrada baze podataka