Relacna databaza, miliony zaznamov a PHP

Programovacie jazyky, rady, poradňa...
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa jorg22 »

Vie mi prosim niekto poradit akym smerom sa mam uberat ak chcem pracovat s desiatkami milionov zaznamov v relacnej databaze?
Aktualne pracujem v PHP v kombinacii s MySQL databazou a zacinam narazat na limity. V porovnani s MSSQL mam vyrazne horsie vysledky.
Indexy mam poctivo vytovorene, databazu normalizovanu, innodb_buffer_pool_size optimalizovany tak aby sa mi tam zmestila cela tabulka, s ktorou chcem pracovat. SSD je samozrejmost.

Napr. pri pocitani riadkov s GROUP BY to trva okolo 2 sekund.
Chcel by som bez cachovacich metod dospiet niekde k cislu do 300-500ms. Totiz v buducnosti nad tymi datami chcem robit rozne operacie a tie by mohli trvat extremne dlho.

MSSQL ma ocarilo svojimi optimalizaciami, rychlostou a rozsiahlejsimi datovymi typmi oproti MySQL. Ale pripajat sa na neho z PHP je horor. Skusal som rozne drivery ale stale je tam problem s rychlostou lebo tieto drivery niesu dostatocne vyladene.

Ake mam teda moznosti? Najlepsie ak by s tym vedela aj Doctrine pracovat. Mam nejaku slusnu moznost na dosiahnutie pozadovanych vysledkov v PHP? Alebo jedina moznost je prejst na C#+MSSQL pripadne Java+Oracle?

Pripadne nejaka alternativa mimo relacnych databaz? Ale to si neviem velmi predstavit kedze potrebujem zachovat co najvyssiu integritu dat co si bez cudzich klucov, constraintov, atd. neviem predstavit.
eMPiko
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2412
Registrovaný: 11 jan 2007, 16:40

Re: Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa eMPiko »

Mozes skusit postgreSQL, to malo par rokov na MySQL navrch, aj ked tusim ze sa MySQL uz celkom dotiahlo, tak neviem ako velmi ti to pomoze. Musis to jedine otestovat.

Mozes nam pripadne prizradit nieco blizsie ku use casom, ktore potrebujes riesit. Takto ti asi nikto nebude vediet pomoct, 1) ci ich mas teraz efektivne implementovane a, 2) aku noSQL alternativu by si mohol pouzit.
harrison314
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4853
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa harrison314 »

Proste pouzi cokolvek ine ako MySQL. Ak chces zostat pri PHP tak asi Postgres.

Ono to je tym, ze MySQL je objektivne najhorsia databaza - je hrozne pomala, neda sa v nej nic optimalizovat, nedosoziava SQL standardy, mozes sa rozhodnut ci chces fulltext alebo cudzie kluce, pri insertovani ti povie OK aj na data, ktore realne neulozi (ale vvlozi defaultne hodnoty), dlho nevedela nic ine ako LoopJoin, nevie DESC indexy, pri insertovani ti datum automaticky konvertuje do UTC ale pri dopyte uz nie... A tento stav je tam uz odkedy som ja ucil PHP (6-8 rokov).

Parkrat sa mi MySQL podarilo zabit self joinom nad tabulkou, kde boli trapne dva miliony zaznomv.

Osobne vsade kde sa da pouzivam MS SQL, prave kvoli mnozstvu a kvalite funkcionality a vykonu.
Co sa tyka NoSQL databaz tak pomozu pokial chces horizontalnu skalovatelnost, ale nie pokial chces richlost (nedavno som experimentoval s Geo datami, porovnaval som si rienie postavene na MongoDB a MS SQL 2017 na datach z geonames datasetu, MS SQL insertovalo data do databazy 3-krat richlejsie, a samotne spracovanie geodat bolo 100-krat richlejsie ako v MongoDB).

PS:Co tak skusit .Net Core?
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Re: Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa jorg22 »

PostgresSQL je zaujimavy napad. Podporuje ho Doctrine. Mas nejake skusenosti s pripajanim z PHP? Je to vsetko bezproblemove?

.Net ma velmi laka ale urcite vies aky dlhy proces to je prechadzat z jedneho zauzivaneho jazyka na dalsi.

Co by mi podla teba mohlo najviac chybat v PostgresSQL oproti MSSQL?

Mimochodom aky je dovod, ze PostgresSQL je o tolko menej popularny ako MySQL podla tohoto rebricka?
https://db-engines.com/en/ranking

Mam tam cakat nejaky zadrhel?
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa Michaelo »

Postgres pouzivame v praci a osobne od kedy som s nim zacal, tak ho pouzivam vsade aj na osobnych projektoch. MySQL s amoze ist absolutne zahrabat.

Popularnost MySQL spociva v tom, ze ju pouzilo par CMS a na bezne webiky, kde nemas vela dat, alebo nepotrebujes viac ako 5 datovych typov, alebo nedajboze ORDER BY v subquery (totalne WTF ze to nedava), je plne postacujuca.
Taktiez hlavny dovod bol, ze srala na standardy a nejaku striktnost. Az ked som nastupil do prace som pochopil, ze selectovat 5 stlpcov ale gupovat len podla 2ch je blbost a nedava zmysel. Samozrejme hadaj ktora DB s tym nemala ziadny problem a doselectovavala tam nahodne data :D


Pouzitelnost postgresu z PHP mi pride identicka ako MySQL, hlavne ked pouzivas Doctrine alebo aspon PDO. Uz len blby jsonb v Postgrese je nadherny a umoznuje znacne ulahcenie struktury dat.
harrison314
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4853
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa harrison314 »

jorg22 napísal:PostgresSQL je zaujimavy napad. Podporuje ho Doctrine. Mas nejake skusenosti s pripajanim z PHP? Je to vsetko bezproblemove?
Osobne s PostgresSQL v kombinacii s PHP skusnosti nemam, PostgresSQL som pouzival s plnym .Netom a cez EF a tam fungovalo vsteko ako malo. Ale ceo pocuvam od znamich PHP-ckarov, nie je s tym ziaden problem.
jorg22 napísal:.Net ma velmi laka ale urcite vies aky dlhy proces to je prechadzat z jedneho zauzivaneho jazyka na dalsi.
To viem, nadruhej strane C# je velmi intuitivny a vdaka intelisnse a tomu, ze API je dobre pomenovane to ide lahko. Osobne som sa ho po veceroch ucil asi mesiac. A neskor som sa chcel naucit v nom robit weby, webovu stranku, ktoru som v PHP robil dva mesiace som v ASP.NET MVC 3 vtedy spravil za 5 hodin a to som sa na tom ucil.
A pokial chces richlost tak PHP naozaj nie.
jorg22 napísal:Co by mi podla teba mohlo najviac chybat v PostgresSQL oproti MSSQL?
Ak pouzivas ORM-ko, neoptimalizujes, nerobis fulltext (MS SQL podporuje slovencinu na velmi dobrej urovni, neviem ako je na tom Postgre), alebo zlozitejsie agregacne polady tak nic.
Na druhu stranu, ak by si pracoval z datatami nad 2GB tak by ti mohol pomoct In Memory OLTP a Column Store Index alebo Grafovi engin.
jorg22 napísal:Mimochodom aky je dovod, ze PostgresSQL je o tolko menej popularny ako MySQL podla tohoto rebricka?
Lebo vsteky tutorialy, instalatory PHP serverov (WAMP, XAMP, LAMP) a free hostingy ponukaju PHP+MySQL, a tym padom plno ludi s nimi pracuje a zda sa im to normalne. (Moj kolega posmesne hovori, ze nevedia ako trpia :D ) MySQL takmer nejako noebmedzuje, ani im nehadze chyby a to je na zaciatok fajn, jej richlost staci pokial clovek vytahuje podla id-cka a tak na veci ako prezentacne weby, CMS a male e-shopy staci. Narazat clovek zacne v momentke ked tam chce spracovavat data, potrebuje konzistenciu a bezpecnost. No vtedy mnoho ludi nasadne na dalsi hype a namiesto toho aby siahlo po lepsej databaze tak siahne po NoSQL.
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Re: Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa jorg22 »

Michaelo: S akym velkym setom dat pracujete a aku rychlu odozvu pozadujete?
Okrem toho sa MySQL tiez vyvija, takze ten priklad s GROUP BY uz nieje pravda, kedze ma defaultne zapnute aby ti nepovolil selectovat neagregovane stlpce.

Ake datove typy ti v MySQL chybaju?

harrison314: Potrebujem pracovat s datami, ktore maju viac ako 2GB. Tam uz bude problem pri PostgreSQL?
Co myslis tym "neoptimalizujes"? Praveze si davam zalezat aby bol vyuzity co najvyssi vykon a zachovana integrita dat. Vytvaram indexy, unique constrainty, cudzie kluce a snazim sa navrhovat spravne normalizovanu databazu.

To ze pouzivam ORM neznamena ze neoptimalizujem. Aj tam sa da optimalizovat. Na vykonovo narocne casti kodu ORM nepouzivam, pripadne ho pouzivam len ciastocne.
harrison314
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4853
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa harrison314 »

jorg22 napísal:harrison314: Potrebujem pracovat s datami, ktore maju viac ako 2GB. Tam uz bude problem pri PostgreSQL?
Co myslis tym "neoptimalizujes"? Praveze si davam zalezat aby bol vyuzity co najvyssi vykon a zachovana integrita dat. Vytvaram indexy, unique constrainty, cudzie kluce a snazim sa navrhovat spravne normalizovanu databazu.

To ze pouzivam ORM neznamena ze neoptimalizujem. Aj tam sa da optimalizovat. Na vykonovo narocne casti kodu ORM nepouzivam, pripadne ho pouzivam len ciastocne.
Toci to zvladne zalzi co s nimi chces robit, byt tebou vyskusal by som si to na nejakych vygenerovanych datach a uvidis.

Doctrine nepoznam, ale moje skunosti s ORM v PHP su dost zle, aj tak to skoncilo, ze som si selekty musel pisat sam.

2GB som myslel tak, ze In memory OLTP a Column Store indexy sa v MS SQL oplati pouzit ak mas nad 2GB dat na danu tabulku.
Optimalizaciu som nemyslel len indexy, mal som skor na mysli stored procedury, CTE, window funkcie a materializovane pohlady, s nimi mam dobre skunosti v MS SQL (plus SSMS ponuka milardu funkcii na ladenie vykonu, od live query plan, query store, regresnu analyzu dopytov a triliardu dalsich diagnostickych pomocok), v Postgre sa daju pisat tiez ale nemam s nimi tolko skusnosti a tiez ten ekosystem okolo sa mi zda o dost chudobenjsi.
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Re: Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa jorg22 »

Tieto pojmy co tu spominas su pre mna celkom nove. Idem si to nastudovat aby som zistil ci to vobec potrebujem.

Necudujem sa, ze s ORM v PHP mas zle skusenosti. Totiz Doctrine je najlepsi a bohuzial aj jediny pouzitelny. Je to naozaj hamba pre PHP ale je to tak.
To ci sa moze Doctrine porovnavat s ORM v inych jazykoch neviem povedat ale rad to otestujem.

Keby som chcel zacat v .Net Core pisat nejaky web tak kde by si mi odporucal zacat? Nejaky nastroj ktory je vhodny pre zaciatocnika ale zaroven v nom vies robit profesionalne weby?
Ake ORM mi odporucis v .Net Core?
harrison314
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4853
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa harrison314 »

jorg22 napísal:Keby som chcel zacat v .Net Core pisat nejaky web tak kde by si mi odporucal zacat? Nejaky nastroj ktory je vhodny pre zaciatocnika ale zaroven v nom vies robit profesionalne weby?
odporucam oficialnu dokumentaciu je v nej vsteko https://docs.microsoft.com/en-us/aspnet ... etcore-2.2.
Ked si prejdes veci v lavom menu tak je tam popisane od principov, cez MVC, Web API, real time apps az po deployment.

Potom pozri aj https://docs.microsoft.com/en-us/dotnet ... bs=windows
a https://docs.microsoft.com/en-us/aspnet ... ual-studio

Ak mas radsej navody vo videach a v cestine:
https://www.wug.cz/zaznamy/342-WUG-Days ... it-testing
https://www.wug.cz/zaznamy/423-Programu ... T-Core-2-0


Ak myslis nastrojom IDE, tak jednoznacne Visual Studio Comunity edition, ale ak bezis na nejakom inom operacnom systeme ako windows tak staci Visual Studio Code (s pluginom pre .Net Core) alebo akykolvek editor. Na samotnu kompilaciu, inicializaciu projektov, instalciu balickov ti staci par CMD prikazov (dotnet run, dotnet build, dotnet new ..., dotnet package add).
jorg22 napísal:Ake ORM mi odporucis v .Net Core?
Jednoznacne Entity Framework Core (verzia aspon 2.1) je to plnotucne ORL, ktore ale podporuje aj specility roznych databaz (napriklad LiHo pattern alebo In Memory Oltp).
Ak chces ale vyssi vykon a nevadi ti pisat si SQL sam, tak potom pozri aj na Dapper, ale to je mikroORM.

Keby mas nejake problemy kludne napis, .Net Core sa venujem od jeho vzniku, rad odpoviem.

//autoeditácia príspevku (02 Feb 2019, 12:14)
Inac cez vianoce, som chcel napisat tutorial o tom ako pisat aplikacie v .Net Core pre vysoku dostupnost, ale neprisiel som ake API (aby nebolo prilis komplikovane na tutorial, sucasne aby to nebol len CRUD, bolo procesorovo aj IO narocne).
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa Michaelo »

Ano, o tom group by viem, kedze nove verzie su defaultne v strict mode, ale stale sa moze stat ze niekde na hostingu ti nahodia MySQL bez strict modu a potom sa v buducnosti budes cudovat preco ti nieco nejde, ked tvoja MySQL ti to zozrala.

Tych veci co mi na MySQL chybaju je viac. Nehovorim ze ich tam pomaly nepridavaju, ale IMO rovnako rychlo dostava nove featury aj Postgres... https://di.nmfay.com/postgres-vs-mysql
Ako hovorim, uz len taky ORDER BY x LIMIT 1 v sub query mi pride ako absolutny zaklad (pricom sa nepovazujam za nejak extra dobreho v SQL) a nechapem ze to MySQL ani MariaDB nemaju.
Pre bezne weby mi pride MySQL v strict rezime ok, ale nevidim velmi dovod nepouzivat Postgres s PgBouncerom namiesto MySQL.

Nase data niesu az take velke, jeden z projektov ma okolo 60 GB dump (nezazipovany) a u queries zalezi co tam chces robit, ked su pomale, tak je v 99.9% pripadoch problem, ze sa jedna o takmer 10 rokov staru architekturu na ktoru sa stale nieco pridava a lepi a tej uz nepomoze nic, len to napisat cele znovu od zaciatku, s tym ze teraz uz by to slo na vrhnut o dost lepsie.
harrison314
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4853
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Relacna databaza, miliony zaznamov a PHP

Príspevok od používateľa harrison314 »

jorg22: Ktorym smerom si sa nakoniec vydal a ako to dopadlo?
Napísať odpoveď