Nejprve bych rád poděkoval za pěkný a erudovaný článek. Jen mě celkem podráždila věta "Co mne zaráží, je neaktivita vývojářů – přidat index je práce na deset minut, a zrychlení aplikace může být neuvěřitelné.".
Problém je v tom, že onen vývojář často aplikaci neprovozuje a ostatně by to tak i mělo správně být. Může samozřejmě udělat syntetické testy a navrhnout nějakou základní sadu indexů, určitě by neměly chybět indexy na referenční integritu apod., ale od finálního indexování je tu databázový administrátor. Od vývojáře se ani nedá očekávat stejná úroveň zkušeností s laděním výkonu, jako od administrátora. Optimálně by ale měli spolupracovat.
Kolik firem má databázového administrátora?
Vím, že se vývojáři nedostanou na produkci, a tam by se většinou dostat neměli - ale měli by být nastavené procesy tak, aby se potřebné informace dostaly k vývojářům zpátky, a vývojáři by je měli požadovat. Bez toho se databáze nemůžou dělat pořádně.
Koneckonců o tom bude další díl -tímto dílem jsem si jen připravoval půdu.
Musím říct, že teď jste mne docela překvapil. DB adminy měli zatím všichni moji zákazníci, většinou jich měli několik. A co si nevydupu, to zásadně nemám (myšleno performance data), navíc pokud nejde vysloveně o havarijní stav, tak je s každou i triviální změnou či žádostí o data potřeba projít schvalovacím procesem a počkat na nějakou formu servisního okna. Když nemám u zákazníka vybudované dobré vztahy, může jít klidně i o půl roku. V případě prostého indexu by se to asi podařilo ukecat i bez dobrých vztahů, ale pořád se pohybujeme v reakční době v řádu týdnů. Pokud to nepřijde jako žádost o schválení vytvoření nového indexu od aktivního admina, tak je to většinou v háji.
S dbadminy se setkávám u velkých firem s klasickým IT (jinak je často outsourcovaný) a u Oracle. U OS databází je to těžká výjimka (případně se za dbadmina považuje člověk, který má práva, ale většinou nemá znalosti). Na základní provoz těchto databází většinou nepotřebujete žádné znalosti a firmy na to pečou.
Vývojáři málokdy vědí, co chtít. Uživatelé málokdy vědí, co dát. Pak většinou, při prvních problémech se to povede nějak dořešit. Dneska už taky hromada developerů rovnou provozuje aplikace, takže potřebná data by mohli mít kdykoliv, kdyby je chtěli.
Jenze vyvoj neni ladeni. Neco jinyho je, kdyz firma pouziva nejaky specificky postup, a na ten se ladi vykon databaze, a neco jinyho, kdyz v databazi nejsou ani indexy na klicich.
Pro predstavu, v systemu je prehled dat, kterej otevre kazdej uzivatel tisickrat denne. Prehled se nad dostatecne velkou databazi otevira klidne i minuty vs mene nez sekundu. To nema nic spolecnyho s nejakym ladenim, to je neschopnost vyvojare.
Nemluve o tom, ze s blbe navrzenou databazi ani ty indexy nic nenadelaj. Krasnej priklad je treba to, ze system generuje logy v takovym mnoztvi, ze je nestiha ani odmazavat - za dobu smazani jednoho zaznamu jich vytvori 10.
Já bych taky rád Pavlovi poděkoval za zajímavé články a za snahu pomoci i někomu dalšímu.
Sice jsem s db už delší dobu nic (pracovně) nedělal, vždycky si rád přečtu každý jeho článek.
Jednak si tím alespoň trochu refreshnu, co jsem kdysi uměl, a jednak se rád dozvím, "co a jak", "co a jak ne-e" a "co je nového".
Takže ještě jednou - díky.
(a ať se daří)
„...ale od finálního indexování je tu databázový administrátor...“
Týjo, tak asi tomu moc nerozumím, ale měl jsem za to, že návrh databáze je součástí systému a vývojář by měl vědět, co s tou DB bude dělat, a tedy kde se index vyplatí a kde je na hovno. Aby do toho drbal nějaký chlápek jen podle toho, že se mu zdá, že někde něco jede pomalu, mi přijde docela drsné...