Komentáře k článku

Webdesignérův průvodce po HTML5: Databáze v prohlížečích

V dnešním dílu našeho průvodce po vymoženostech, které vývojářům webových stránek nabízejí nové technologie z rodiny HTML5, se po oblastech poměrně slušně podporovaných a použitelných dostáváme na nejistou půdu novinek, které budeme moci použít možná za rok, možná vůbec ne. Vítejte ve světě HTML5 databází.

Zpět na článek

20 komentářů k článku Webdesignérův průvodce po HTML5: Databáze v prohlížečích:

  1. blizzboz

    Re: Webdesignérův průvodce po HTML5: Databáze v prohlížečích

    a kde to využijem okrem intranetov? veď to ešte nepodporujú všetky browsery, btw neni lepšie pracovať priamo so serverovou DB cez ajax?

    1. Martin MalýAutor příspěvku

      Re: Webdesignérův průvodce po HTML5: Databáze v prohlížečích

      Přesně tak, píšu o tom v článku (a ani v intranetu bych to asi nenasadil). Berte informace spíš jako ukázku současného intenzivního dění v této oblasti. Dnes (a asi i v nejbližší budoucnosti) je práce se serverovou DB via AJAX asi rozumnější. Mimochodem, tuhle zajímavost znáte? http://zdrojak.root.cz/zpravicky/couchapp-web-primo-z-databaze-bez-http-serveru/

    2. BS-Harou

      Re: Webdesignérův průvodce po HTML5: Databáze v prohlížečích

      Ano i ne. Jeden z cílů těchto databází je podpořit práci offline. Třeba GMail tak může do takové databáze natahat maily a vy k nim pak máte přístup i offline, jakmile se připojíte začne zas tahat data z databáze na serveru. (Né že by to tak dělal, nebo o tom alespoň nevím, jen jsem se snažil ukázat možnost využití).
      Jinak je podle mě hloupost odsuzovat jednu či druhou databázi. Obě se můžou hodit a podle mě by se měli pánové od prohlížečů dohodnout, že všichni implementují všechno a ať si vývojáři zvolí co uznají za vhodné.

      1. alblaho

        Re: Webdesignérův průvodce po HTML5: Databáze v prohlížečích

        No gmail přesně takhle pracovat umí. Akorát k tomu doteď používal databázi z Google Gears.
        Zkoušel jsem to a fungovalo to dobře. Časem jsem ovšem Gears potratil, na počítačích jsem online pořád a na rychlé lince. U mobilních zařízení je to o něčem jiném.

        1. pkroh

          Re: Webdesignérův průvodce po HTML5: Databáze v prohlížečích

          GMail webová aplikace pro iPhone Web databázi v Safari používá. Vůbec, na iPhone je to cesta jak vytvářet off-line webové aplikace s „custom“ cachováním (v kombinaci s AppCache manifestem).

      2. eNj

        Re: Webdesignérův průvodce po HTML5: Databáze v prohlížečích

        Tak z tou domluvou vývojářů prohlížečů jsi to myslel vážně ? Bylo by to fajn. Rovnou, když už budou sedět u jednoho stolu, by se mohli domluvit a všichni stejně implementovat html a kaskády :D

  2. Jakub Kulhan

    API vyšší, nebo nižší úrovně?

    Myslím, že lidé od Mozilly to vzali s IndexedDB za správný konec, a je mi jich líto, že se na ně v odkazovaných článcích na hacks.mozilla.org snáší taková tvrdá kritika. Problém zní, jak ukládat data na klientovi. Jeden extrém je plně vybavená databáze s jedním modelem dat (relační databáze, jak ji specifikuje Web SQL Database), druhým extrémem by bylo dát na klientu přístup k souboru a celou databázi ať si vývojář napíše sám.

    IndexedDB je kdesi uprostřed – poskytuje funkce, které by bylo otravné implementovat (ukládání, výběry, indexy…), avšak nevnucuje vývojáři relační model dat (jako WebSQLDb).

    A jak vývojáři Mozilly píší: „We’d particularly welcome an implementation of the Web SQL Database API on top of IndexedDB […]“ Bohužel spoléhat na to, že to udělá někdo jiný, se mi nezdá dobré. Kdyby řekli: „Jo, WebSQLDb se nám nelíbí. Tady máte IndexedDB. Ale abyste tedy mohli používat WebSQLDb, my ji implementujeme nad IndexedDB,“ situace by byla ideální (v případě, že by IndexedDB nepoužívala jako úložiště SQLite), poněvadž WebSQLDb specifikace se dostala do slepé uličky hlavně kvůli tomu, že SQLite je dost dobrá na to, něž aby někdo chtěl implementovat jiný backend pro WebSQLDb. Specifikace z rodiny HTML5 potřebují alespoň dvě nezávislé (jestli si pamatuji dobře) implementace, aby se mohli posunout dále. WebSQLDb čeká, až někdo další implementuje její API nad něčím jiným než SQLite. Mohla by to být právě Mozilla s IndexedDB.

    1. David Grudl

      Re: API vyšší, nebo nižší úrovně?

      Implementovat SQL nad IndexedDB, kteréžto by interně používalo SQLite, je svým způsobem poetické :-)

      1. Jiří Kosek

        Re: API vyšší, nebo nižší úrovně?

        Já si vždycky říkal, že pro tebe je nejvíce poetická perverze.

    2. srigi

      Re: API vyšší, nebo nižší úrovně?

      Mne pride nazor Mozilly na SQlite troska nestastny. A to z toho dovodu, ze SQlite je deklarovanym úložišťom v Adobe AIR aplikaciach. AIR devels si uz na jeho API zvykli, je okolo toho kopec JS kniznic (jednoduche ORMka v JS) a toto vsetko sme teraz mohli mat v browseroch. Myslim, ze ich cesta nie je nastastnejsia.

  3. bauglir

    Škoda

    Pozici Mozilli a MS považuji za ohromně nešťastnou, do diskuze na Mozilla Hacks jsem se i zapojil… Důvody tam zmíněné jsou směšné v porovnání s tím, co by relační databáze v prohlížeči mohla nabídnout. A na rozdíl od p. Malého bych ji například do intranetu rozhodně nasadil (nic osobního, jenom nesouhlasím :)). Minimálně v intranetu je možné diktovat podmínky na browser. A ani u web aplikace bych se tomu nebránil, prohlížeč je prostě runtime (málokdo má problém s tím si naistalovat Javu, nebo .NET).
    Problém s IndexedDB je krásně vidět právě na Mozilla Hacks, kde jsou ukázky, jedna věc je mít objektové úložiště, druhá věc jsou dotazy spojující objekty (SQL joiny), ten příklad tam jasně ukazuje utrpení, kterým budou programátoři procházet. Implementace SQL nad IndexedDB je pouze a jenom teoretická možnost. BTree umí naprogramovat skoro každý, udělat klíčování více položek, joiny, triggery, apod. a především optimalizace je práce na léta, stačí se podívat, kolik vlastně použitelných DB serverů existuje.
    No co, ale je to Mozillí volba, vývojáři si také vyberou :)
    P.S. nemám rád konspirační teorie, ale MS má MSSQL, Mozilla úzce spolupracuje s Oracle… nasazení SQL do prohlížeče se jim asi moc nelíbí :)

    1. Martin MalýAutor příspěvku

      Re: Škoda

      Neberu to osobně, vůbec ne, a stručně vysvětlím, proč bych to dnes nenasadil ani na aplikaci určenou pro intranet:
      1. V intranetu nechápu moc potřebu offline úložiště – krom specifických případů „intranetu přes VPN“ apod. je připojení permanentní, navíc záměrem intranetu je většinou mít pro všechny stejná data…
      2. Sáhnul bych, když už, spíš k Web storage – SQL mi v intranetovém klientu připadá jako overkill (proč se nekomunikuje po lince rovnou se serverem?)
      3. Pamatuju se na intranety postavené nad „unikátními možnostmi, které nabízí IE4“ a „vyžadující IE5“ co jsou dnes jako koule na nohách, kvůli kterým musí firma řešit instalace specifických verzí IE apod.
      4. Systém, byť pro intranet, postavený na takhle okrajové technologii, je prakticky neprodejný jinam.
      Takže použitelné by to bylo snad v případě intranetu pro vlastní použití (a nikde jinde), distribuované jako speciální aplikace (zástupce Chrome na ploše apod.), v situaci, kdy často padá spojení nebo server a nelze to řešit jinak, a pro aplikace, které z nějakého důvodu potřebují dělat komplexní operace nad lokálním úložištěm. Po pravdě si takovou nedovedu moc představit.
      A ad utrpení: Ano, přesně tak. Když jsem koukal na tu ukázku JOIN v IndexedDB, tak jsem se zhrozil a předem litoval ty, co v tomhle budou muset vyvíjet

      1. bauglir

        Re: Škoda

        Chápu, ale myslím, že váš pohled vychází právě z pohledu na prohlížeč jako na prohlížeč :). Můj pohled opravdu vychází z použití prohlížeče jako application runtime. Běžně se píší firemní aplikace vyžadující JRE nebo .NET, a dobře se používají, stejně tak si myslím že je toto možné i s prohlížečem, jediný problém je překonat ono paradigma prohlížeče (http://www.webnt.cz/12-web-aplikace-ne-aplikace/). Aplikace běžně pracují v modu lokální data, synchronizace se serverem a k tomu by byla WebDB úpně dokonalá, na obou stranách stejné schéma, jednalo by se pouze o reflexe ServerDB ↔ ClientDB. Ano tato reflexe by byla možná i pto IndexedDB nebo Storage (stejně si ze serveru nebude nikdo generovat SQLka, které pak provede na klientovi), ale ani jedna s těchto variant nepřináší možnosti relací, dotaz přes 3 objektové struktury prostě bez SQL prostě zabije každého :)

        1. Martin MalýAutor příspěvku

          Re: Škoda

          Pokud budu DNES psát takovou aplikaci, napíšu ji spíš jako nativního tlustého klienta v běhovém prostředí, které je primárně určeno pro psaní nativních klientů s databází a UI, a ne v prostředí, které… atd. Ne?

          1. bauglir

            Re: Škoda

            Ano, takto píšu desktopové aplikace běžně, ale začínám se čím dál tím více přiklánět právě k prohlížeči. Jasně, existují aplikace, které bych pro prohlížeč nepsal, Delphi mi poskytnou MNOHEM více možností, ale pokud zvažují nejběžnější požadavky alespoň zákazníků, které mám, zjišťuji, že prohlížeč stačí a dokonce může některou práci ušetřit. Jediné, co mi tam teď chybí pro nejběžnější požadavky, je UI, ovládací prvky, ale to už vyřeší canvas :)
            Ale ano, shodneme se na tom, že pokud ji budu psát dnes, napíšu nativního klienta, ale mám za to, že použití prohlížeče je otázkou měsíců, nikoliv let.

            1. Martin MalýAutor příspěvku

              Re: Škoda

              Takže shoda je úplná… Není spor, jen rozdílný úhel pohledu. :) I já psal, že si na opravdu použitelnou technologii budeme muset nějaký čas počkat.
              Jen dodávám, že ani pro intranetové app mi zatím (!) nepřijde rozumné se do využití WebDB nějak hrnout, protože bůhví jak to s nimi bude dál a mohli bychom se dočkat instalací různých „sandboxed“ prohlížečů jako runtime… To už bych asi raději zvolil třeba AIR – viz http://zdrojak.root.cz/zpravicky/vytvareni-desktopovych-aplikaci-v-html-s-air/

              1. bauglir

                Re: Škoda

                Ano, je fakt, že čekám, než někdo z WebKitu udělá COM komponentu, abych ji mohl obalit normálním oknem a nevypadalo to jako prohlížeč, a HTML a JS a CSS zdrojáky si zakompilovat do exáče jako resources :)

  4. Hnus

    Zase něco vymýšlejí když něco je a funguje ….. to připojení do db je taky výborný
    var db = window.openDa­tabase(‚mydb‘, ‚1.0‘, ‚Database‘, 2 * 1024 * 1024);
    no mikrosoft jako by nestačil stará známý způsob
    $connect = mysql_connect($ser­ver, $login, $heslo);
    kolik toho ještě budou chtít vymyslet?

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3304