Kritika ODBC rubrika: Databáze: SQL

9 Taco
položil/-a 30.8.2017
 
upravil/-a 31.8.2017

Citace: "ODBC a "dosaď si svůj oblíbený DB engine" je vždycky špatná kombinace :-)"

Zajímalo by mě, co byste tomu vytkli.

Je to příliš stará technologie? Špatně navržená? Něco jiného?

Edit:

Možná uveďte důvody. Proč je ODBC driver horší volba, než nějaký jiný.

odkaz
8 rmaslo
odpověděl/-a 31.8.2017
 
upravil/-a 31.8.2017

ODBC mělo ze začátku obrovské ambice. Mělo sjednotit přístup k datovým zdrojům.

  1. Počínaje .CSV a .XLS pro které měl driver obsahovat celý "zbrusu nový" engine.
  2. Přes .DBF a další lokální db kde se mělo spolupracovat s proprientárními vlastnostmi (indexy, ...) těchto souborových db.
  3. Konče serverovými SQL databázemi, kde se měl provádět SQL překlad.
    Taková práce je ovšem obrovská a pokud akceptujeme, že se vlastnosti db enginů mění (zlepšují) tak i nekonečná. Podle mě si ukousli větší koláč než na který stačili.

Na druhou stranu je potřeba se na vznik ODBC podívat tehdejší perspektivou, tj. perspektivou vzniku Win. Před vznikem Win. byl jeden z hlavních problémů při psaní programu tisk. Ke každému (DOSovému) programu, který měl tisknout bylo potřeba vytvořit drivery na všechny tiskárny na kterých měl mít možnost tisknout. Což bylo dost šílené. Pak přišly Win., MS udělal pár jednoduchých driverů (v grafickém režimu a pomalých) nicméně i to byl pro programátory obrovský pokrok. Načež se MS podařilo, že si drivery pro Win začaly vytvářet jednotliví výrobci tiskáren, protože si tím konkurovali čí tiskárna je lepší (rychlejší atd...). To byla pro MS obrovská výhra neboť vlastně definovat standart, tvůrci aplikací a tiskáren jej akceptovali a zákazníci si prostě Win (jehož byl standart součástí) museli koupit.

V ODBC driverech se MS (který za nimi hlavně v začátku stál) pokusil o něco podobného. Pokusili se oddělit db engine a aplikační formuláře s tím, že by komunikovaly přes nějakou jejich vrstvu. Napsali pár jednoduchých driverů a ukazovali jak "hromadná korespondence" ve Wordu funguje pro malý počet záznamů v Excelu, pro větší počet z dat v .dbf a pro největší z nějakého SQL serveru.
Jenomže teorie, že někdo bude psát třeba účetnictví na ODBC driver a zákazník co má 100 faktur pojede na .CSV, co jich má 1000 pojede na .DBF (či access, paradox) a kdo jich má 100.000 pojede na SQL serveru se ukázala jako úplná blbost. Ono totiž účetnictví pro 100.000 faktur vypadá o dost jinak než účetnictví na 100 faktur.
Jako první to asi pochopili výrobci SW kteří stále psali pro konkrétní db. Výrobci db enginů se tedy do vylepšovaní MS driverů nijak extra nehrnuli a ty získaly pověst pomalých. MS zřejmě zkusil podpořit (hlavně znalostmi, certifikáty atd...) nějaké "třetí firmy", které psaly ODBC drivery a prodávaly je. Ale zájem nebyl nijak převratný a velká část z nich zanikla.
Pak tomu sice trochu vdechla život java a JDBC, jenomže naopak praktické používání ODBC/JDBC vedlo k rozbití standartu na jednotlivé databázové dialekty (aby se využili všechny funkce db enginu), takže původní idea stejné komunikace s jakýmkoliv zdrojem se v podstatě rozpadla.

Podle mě je to špatně navržená technologie, protože praxe ukázala, že rozdělení vrstev neodpovídá požadavkům praxe. Aplikační požadavky jsou více databázově závislé než se očekávalo. To, ale asi ze začátku nikdo nemohl tušit. To jak jsou aplikační požadavky databázově specifické nakonec korunoval SAP, který si vytvořil vlastní db. Navíc formuláře se připojují k aplikačnímu serveru, nikoliv k databázovému.
Ale to, že by ODBC nesloží k tomu k čemu bylo navržené neznamená, že by bylo nepoužitelné. Třeba noční čerpání dat mezi apliakcemi přes ODBC bych nezavrhoval. A pokud je celý řetěz (db engine, ODBC, formulářový klient) od jednoho výrobce, který jej aktivně ladí tak to taky snad bude fungovat ok.
Ale původní představa univerzálního skládání aplikací z libovolného databázového a "zásobníku formulářů" serveru spojeného přes ODBC je podle mě totálně chcíplá.

Komentáře

  • Taco : Díky za příspěvek. 31.8.2017
  • rmaslo : nz. prostě tu dobu ještě pamatuju :-). A až do příchodu Win. jsem se živil psaním (či počešťovánim) těch tiskových driverů pro různé programy (hlavně WordPerfect). A z počátku to fakt vypadalo, že to není nesmysl a že se to MS povede. A že svět bude vypadat tak, že si prostě BFU sáhne do účetnictví, najde si firmy.dbf nebo faktury.dbf, vytahá si data a něco s nima třeba v Excelu udělá aniž by potřeboval nějakou spolupráci tvůrce aplikace. Ale prostě se to nepovedlo. Hlavně asi protože rozhraním aplikace není databázový server, ale aplikační server. Databázový server je rozhraním aplikace jen pokud je aplikační logika v trigrech. Pokud je v objektech tak je potřeba se připojit až za ně. 1.9.2017
  • Taco : Pochopil jsem z toho, že zatímco ovladače pro tiskárny se povedli, protože tiskárny jsou tak nějak nerozšiřitelné - prostě nic lepšího než tisk tam asi nevymyslíš. Tak DB může bejt mnohonásoběn komplexnější a každý si pod tím navíc může představovat všelicos. Viz třeba boom poslední doby NoSQL databází. 1.9.2017
  • harrison314 : Na druhej strane ORM sa uchitilo, sice jeho primarnou ulohou nie je unifikacia uloziska, ale mnohe sa tym chvalia. 1.9.2017
  • pavel.stehule : @rmaslo: Já si naopak myslím, že se toho povedlo hodně - možná víc než MS čekal - minimálně u téměř všech SQL databází není problém se k nim z Excelu připojit a vytáhnout si data pomocí SQL - případně nějakého grafického nástroje. Na to je to super - a čekat víc je utopie. Je fakt ODBC je technologie přelomu 80/90 let, takže se vlastně ještě prošlapávaly cesty - tehdy se vlastně stabilizovalo SQLko, primárně jely souborové databáze - ODBC je jedna z prvních takových technologií ještě s Cčkovým přístupem. Pro Microsoft překonaná už koncem 90 let, kdy MS přišel s ADO, posléze s ADO.NET. Při troše štěstí by nikdo soudný dneska ODBC nepoužil - bohužel k něčemu nejsou jiné drivery. S ODBC MS honil příliš mnoho zající - od podpory hloupých formátů, přes souborové db, po SQL servery. Tuším, že se myslelo i na práci online, offline, .. hodně z toho už je dneska historie. 1.9.2017

Pro zobrazení všech 6 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.