Archive for leden 2009
Programátorský oříšek
Aneb trochu humoru na víkend:
http://www.experts-exchange.com/Web_Development/Miscellaneous/Q_22031739.html
(via @fczbkk)
Kdy databáze nepoužívat naplno
Narazil jsem dnes na článek obsahující pozoruhodný mix nesouvisejících konceptů a zakončený bizarně nekompromisním prohlášením, že:
Dnešní rychlokvašná “MySQL generace” totiž vůbec neví, že databáze jsou určené k tomu, aby se v nich programovalo.
Stručný výtah pro ty, kdo se nechtějí celým pojednáním prokousávat:
- Nadstavby nad API pro komunikaci s databází (neboli autorovo slovníkem “databázové layery”) jsou špatné, pokud podporují více databázových systémů
- Tyto nadstavby mají smysl pro některé open-source projekty, kde je “rychlost nadřazena nad výkon a spolehlivost” (wtf?)
- Autor v TSQL vytvořil backend webu s návštěvností v řádu statisíc pageviews denně, a považuje to za správné
- Výše citované tvrzení o “MySQL generaci” je doplněno úvahou o tom, že nepsat backend webu v SQL dialektu o síle obdobné T-SQL často značí neznalost
Zvážit podporu více databází je pochopitelně namístě, pokud vyvíjíme produkt, který si uživatelé/zákazníci budou instalovat ve svém prostředí. Mimochodem, záhadou zůstává, z jakých důvodů autor původního článku tento smysl přiznává jen open-source projektům.
Více podporovaných databází znamená více potenciálních zákazníků. Jaké procento kódu se vyplatí psát pro každou databázi zvlášť je jistě věcí ekonomické úvahy zohledňující specifika konkrétního produktu. U “běžné databázové aplikace” se ale toto procento dle mého názoru bude blížit nule.
Takové “běžné databázové aplikace” si podle nasazení můžeme zjednodušeně rozdělit do tří skupin:
- Aplikace, která zdaleka nezatíží ani jeden server
- Aplikace, které jeden server zdaleka nestačí
- Aplikace, která perfektně vytíží právě jeden server, plus minus autobus
Co si budem povídat, u skupiny prvni je výkon získaný vykonáváním aplikační logiky v databázi nepodstatný.
U skupiny číslo dvě si uvědomíme, že horizontální škálování v zásadě bezstavové aplikační logiky je brnkačka, a případným zástupcům“rychlokvašné MySQL generaci” jen poděkujeme za prozíravé rozhodnutí do aplikační vrstvy nacpat co nejvíc logiky, kterou by rÁdobyprofesionál programoval v databázi.
Časem podobně jako třeba eBay stejně zjistíme, že na aplikační vrstvu budeme muset převést i operace, které by nás dřív nenapadly – třeba spojování tabulek.
Co se týče skupiny číslo tři, ať každý sám zváží, jak dlouho do ní jeho aplikace bude spadat.