Odporucanie na pracu s DB
- majo
- Člen | 21
Ahojte,
som zaciatocnik, ktory zacina trochu robit v nette (utiekol som od Laravelu). Zacal som pouzivat Doctrine 2 (kdyby/doctrine). Systemu chapem, ale trochu sa desim pripadu, ze proste projekt skonci a budem nahraty. V tomto pripade som zavisli na „kdyby“ a vyvojaroch Doctrine. Da sa zmysluplne pracovat aj na rozsiahlejsom projekte len s pomocou vstavanych funkcii nette (database, selection), resp. ake zadrhely by ma mohli cakat ? Resp. co by ste mi odporucili, alebo s cim robite vy?
- newPOPE
- Člen | 648
@majo neviem na akej urovni si resp. co vsetko mas za sebou. Ale ked si to dobre navrhnes (pojdes cestou hexagonal architecture resp. ports and adapters) tak je ti v zasadne jedno ci pouzijes Nette, Laravel, Zend,… a takisto ti bude jedno ci Nette\DB, Doctrine, Kdyby\Doctrine, …
- majo
- Člen | 21
tak zatial som zaciatocnik, s tym, ze chapem OOP, MVC, ORM a podobne novodobe moderne skratky :) . Co je hexagonal architecture netusim. Od Laravelu som utiekol, lebo som poriadne nechapal, odkial sa co berie, vsade same trait-y, v ktory su dalsie trait-y, bolo to tam trochu viac magicke akoby som chcel. Nette v tomto vyzera byt lepsie a zda sa mi, ze je aj o nieco rychlejsie (aspon podla tracy vs. php debug bar co som mal v Laravely). Takze to nie je pre mna jedno. Chcel by som sa poriadne naucit aspon jeden FW, pri ktorom budem chapat co sa deje aj na pozadi, ako ich vediet viac a pritom len tusit co sa asi deje. Ale momentalne mi ide o to, ci je mozne pracovat aj s Nette\DB podobne pohodlne ako napr. s Doctrine. Ci su tam nejake obmedzenia na ktore mozem v buducnosti narazit, a momentalne si ich neviem/nemozem predstavit. Ci je mozne efektivne vytvorit viacvrstvovy model ako v Doctrine atd..
- filsedla
- Člen | 101
Používám Nette database (Selection) na všechny projekty. Na velikosti podle mě tak nezáleží. Spíš jde o to, jestli chceš provozovat takový Databázově-centrický design (když programuju novou feature, nejdřív vyrobím tabulky), víceméně bez jakéhokoliv (ani vlastního) ORM. Pak je Nette database ideální.
@CZechBoY Jsem rád, že nejsem s takovým pocitem sám :-).
No, koukal jsem na kdyby\doctrine a je tam hodně kódu. Ten by potenciálně mohl ztratit synchronizaci jak s Doctrine tak s Nette. Osobně ale netuším, jestli se to může stát.
- Oli
- Člen | 1215
Ci je mozne efektivne vytvorit viacvrstvovy model ako v Doctrine atd..
Ve zkratce možné to není.
Nette\DB je jen obálka pro data. Když ti to vrátí data (reprezentovaný objektem ActiveRow), tak do nich nemůžeš zapisovat, jen je číst a pak ukládat data do databáze můžeš jako pole.
Doctrine je ORM, takže tě to odstřihne od databáze a ty pracuješ s PHP objekty. Pokud by jsi vyměnil mapper za nějaký jiný, tak můžeš pracovat se stejnými objekty a ukládat je třeba do XML.
Díky tomu, že pracuješ s objekty, tak mají metody normální get, set metody a můžou mít v sobě i nějakou logiku. Tu do ActiveRow nikdy nedostaneš.
I s NetteDB se nechá udělat pěkná aplikace, jen je mnohem víc svázaná s databází a přijdeš o jednu vrstvu modelu.
Editoval Oli (3. 2. 2017 11:15)
- andros
- Člen | 145
Pokud budete dělat třeba středně velký eshop , který má cca 10tis produktů (z toho 3k aktivních), cca 11k registrovaných zákazníků, průměrnou návštěvnost 500–1000 /den. K čemu by jste se přiklonili ?
Nette\Database – je vhodná i pro střední projekty, negeneruje zbytečně mnoho požadavků na DB ? U blogu na tom záležet nebude, ale pokud projekt časem poroste ?
Dibbi – právě pro psaní složitějších databázových dotazů ?
ORM Doctrine 2 ?
Nebo něco úplně jiného ?
- GEpic
- Člen | 566
Jednu poměrně „střední / větší“ aplikaci jsem psal a využil k tomu Nette\DB, jelikož to byla první apka co jsem psal a již prošla xxx refaktorama. Každopádně když jsem měl nějaký performance issue, nebyla potřeba nahrazovat ani Nette\DB, ani sahat po cache, ale většinou stačilo pořádně zoptimalizovat PHP kód. Nette\DB je doopravdy použitelná a hezky se s ní pracuje a pro začátečníka je ideální.
Jen je dobré vědět dopředu, jakým způsobem budeš řešit závislosti, aby si nemusel poté vymýšlet složité kejkle a dotazy. Takže pokud si navrhneš ke každé aplikaci návrh databáze a pořádně se nad ním zamyslíš, také to hodně pomůže.
Editoval GEpic (4. 2. 2017 0:24)