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?
Názory k článku
ORM frameworky pro PHP5: Databázový model
Re: Zend_Db_Table
celé vláknoDobrý den,
jak Doctrine tak i Propel vycházejí z návrhového vzoru Active Record, ale nabízejí mnohem více než třeba Zend_Db_Table (DQL, šablony, pluginy atd.). Viz. druhý článek:
http://zdrojak.root.cz/clanky/orm-frameworky-pro-php5-doctrine-orm/
Doctrine je také často používán se Zend Frameworkem.
Re: Zend_Db_Table
celé vláknoToto 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.
XML vs YAML
celé vláknoNaozaj 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. :-)
Re: XML vs YAML
celé vláknoDobrý 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).
Relace vs. vztah
celé vlákno„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.(bohužel i na české wikipedii je to špatně)
Propel vs Doctrine
celé vláknoJakou 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.
Re: Propel vs Doctrine
celé vláknoDobrý 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.
Re: Propel vs Doctrine
celé vláknoTak 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.