Komentáře k článku

ORM frameworky pro PHP5: Databázový model

V posledním díle miniseriálu o ORM knihovnách pro PHP5 si ukážeme definici databázového modelu. Příblížíme si důvody definice pro ORM frameworky a ukážeme si nástroje pro jejich zápis. Kromě obecně známých nástrojů se seznámíme i s novým nástrojem ORM Designer, který je zaměřen na ORM frameworky a nabízí plnou podporu pro frameworky Propel a Doctrine.

Zpět na článek

9 komentářů k článku ORM frameworky pro PHP5: Databázový model:

  1. bezejmenný

    Zend_Db_Table

    Omlouvám se za svou neznalost, ale to co je tu popisováno je obdoba Zend_Db_Table (tedy obyčejný Active Record) nebo je to v něčem víc?

    1. Srigi

      Re: Zend_Db_Table

      Toto je casty omyl, ku ktoremu ludia od ZF dojdu. Pravda je taka, ze Doctrine ide omnoho dalej ako Zend_Db_Table. Zend_Db_Table predstavuje iba tu najnizsiu uroven (low level) pristupu k tabulke. ORM ale dokaze abstrahovat celu biznis logiku. Ak si myslite ze trepem, skuste si to v ZF sami – clovek casto pochopi az ked uvidi/vyskusa.

  2. Avatar

    XML vs YAML

    Naozaj nerozumiem tej averzii voči XML. Takmer každý editor napr. Eclipse vám pri dodanej XSD definícii dokumentu automaticky napovedá, aké vnorené elementy sa môžu vyskytovať v parent elemente. CTRL + SHIFT + F a dokument máte pekne vizuálne sformátovaný. Mne teda žiaden YAML , JSON, XYZ formát nepripadá v PRAXI ani zrozumiteľnejší, ani krajší než XML. Možno na nejaké piďi mini projektíky, ale ani futbal sa nehrá na krásu. :-)

    1. frantisek.troster

      Re: XML vs YAML

      Dobrý den,

      nemám v žádném případě problém s XML. Bohužel jak pro Doctrine tak ani pro Propel nebylo v době, kdy jsem řešil volbu formátu, dostupné XSD. Navíc je to asi můj subjektivní pocit, ale konfigurace (ať už ORM nebo frameworku Symfony, který také hojně využívá YML) jsou pro mě snáze čitelné. Na druhou stranu nepopírám, že YML je snadno náchylné k překlepům. Myslím, že definice DB je už vyloženě na hraně použitelnosti YML (proto také vznikl ORM Designer).

  3. František Kučera

    Relace vs. vztah

    „Ten je nutné ručně projít a doplnit nebo upravit názvy relací (příp. M:N relace), sloupce apod.“

    Místo „relace“ by zde bylo vhodnější používat slovo „vztah“, protože pojem relace znamená v relačních databázích něco jiného. Polopaticky je to vysvětleno třeba tady: manualy.net.(bo­hužel i na české wikipedii je to špatně)

  4. newman

    Propel vs Doctrine

    Jakou mate zkusenost s vykonem Doctrine vs. Propel?
    iz pomerne dlouho pouzivame Propel, ale pro jeden (vetsi) projekt jsme chteli vyzkouset Doctrine. Vsude je vychvalovan a oznacovan jako lepsi nez Propel. O rychlosti nikde zadna zminka, tak jsme to nepovazovali za velky problem (s ohledem na jeho fungovani). V realu se nam bohuzel ukazalo, ze propel je cca 5× rychlejsi nez Doctrine.

    1. frantisek.troster

      Re: Propel vs Doctrine

      Dobrý den,

      určitě mohu doporučit Doctrine. Vím, že proběhly měření rychlosti zpracování dotazu a Propel 1.3 vycházel o něco rychlejší než Doctrine. Podle mého názoru ale nezáleží na zpracování jednoduchého dotazu, protože ty aplikaci nezpomalí, největší zátěž jsou komplexní dotazy. Obrovskou výhodou jak již bylo zmíněno v článku je možnost použít v Doctrine jazyk DQL pro dotazy, je tak možné mnohem efektivněji pracovat s databází. U Propelu buďto budete bojovat s „Criteriony“ nebo použijete PDO nebo Creole, což vás ale připraví o výhody ORM (objekty, posluchače atd.).

      Právě ty slepé uličky, do kterých se člověk na větších projektech s Propelem dostane, nás přesvědčily o nutnosti migrovat projekty na Doctrine. A musím říct, že i přes občasné škobrtnutí, nás co se stability a flexibility týče Doctrine nazklamala. Pokud pracujete na projektu, který má být nasazen do produkčního prostředí až za několik měsíců, zvažte zda nepoužít Doctrine 2 (momentálně alfa verze, ale již nyní použitelná pro vývoj). Dokumentace již existuje a rozrůstá se i komunita pracující s tímto frameworkem.

      1. newman

        Re: Propel vs Doctrine

        Tak my jsme prave pouzili na jednom vetsim projektu Doctrine (kvuli podobne oslavnym clankum) a po velkem prekvapeni nad neocekavanou pomalosti systemu jsme po spouste debugovani, profilovani a logovani zjistili, ze problem je v Doctrine. Takze jsme udelali migraci na Propel, ktery pouzivame vsude jinde. V kritickych castech byl Propel i 10× rychlejsi nez Doctrine, obecne je cely system nyni 5× rychlejsi s vyrazne mensi pametovou narocnosti (2×QuadCore, 8GB pameti a pokles zatizeni z 85% na <20%). Podotykam, ze chyba nebyla ve spatne spatne nastavenem lazy nacitani objektu, ale vykon se ztracel na parsovani dql a generovani objektu.

        Co se tyce propelu, tak tam zatim spokojenost. Nikdy jsme se nedostali do neresitelne situace, problematicke casti byly stejne problematicke jako v Dql (slozitejsi subselecty atd.). Creole je vec 3 roky stareho propelu 1.2 (aktualni verze 1.4.1). Na zadne jine problemy jsme nenarazili za ty roky, co jej pouzivame. Aktualne je i vyvoj velmi svizny a slibny. Jedina velka vyhoda Doctrine tedy je dokumentace, kde propel doopravdy pokulhava.

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=3162