Kezdőoldal » Számítástechnika » Programozás » PHP vagy MySQL oldalon érdemes...

PHP vagy MySQL oldalon érdemes számításokat végezni?

Figyelt kérdés

Szeretném tisztázni, hogy a kérdés jelenleg csak egy elméleti weboldalra vonatkozik, hogy nagyon tisztán meg tudjam fogalmazni a kérdésem. Ez néha olyan dolgokhoz vezethet, ami egy valós weboldalon biztos nem úgy működne, ahogy itt bemutatom.


Tegyük fel, hogy van egy könyveket árusító weboldal, ahol lehet értékelést hagyni egy könyv minőségéről (1 és 5 között). Mivel az oldal nagyon minimalista, ezt nem a szokásos ötcsillagos izével oldja meg, ahol minél nagyobb az értékelés, annál nagyobb része sárga a csillagoknak, hanem egyszerűen kerekíti az értékelések átlagát, és a kerekített értéknek megfelelő mennyiségű csillagot ír ki. Pl. ha egy könyv értékelése 4.2, akkor a cím mellett '****' jelenik meg, ha 2.8, akkor '***'.


Az adatbázisban el van tárolva minden értékelés, így ezeket átlagolni kell, majd a nekik megfelelő mennyiségű csillagot kiíratni. Erre alapvetően három lehetőséget látok:


1. Egy könyvhöz tartozó minden értékelést lekérni az adatbázisból, hogy ezeket a PHP átlagolja, majd a megfelelő mennyiségű csillagot kiírja.

2. Az átlagot(kerekítve) lekérni az adatbázisból, majd ezt a számot PHP-val csillaggá alakítani s kiírni.

3. Egy CASE segítségével a kiszámolt átlagból a MySQL hozza létre a csillagokat és küldi azokat a PHP-nek, ami nem csinál vele semmiféle logikát, csak kiírja azt.


Az 1. verziót elég nagy sületlenségnek tartom, sok értékelés esetén óriási mennyiségű adatot küldözgetünk fölöslegesen az adatbázis és PHP között. A 2. és 3. között viszont melyik a jobb? Gyorsabb valamelyik számottevően, vagy csak a kód érthetősége befolyásolja, melyikkel érdemes dolgozni?


Előre is köszönöm a válaszokat.



2018. júl. 18. 11:55
 1/6 anonim ***** válasza:

Pont ugyanannyi adatot kérsz le az 1-es és a 2-es esetben.

Tök mindegy, hogy az jön vissza, hogy 3 vagy 2,8.


A 3-as a sületlenség, olyat ne csinálj, hogy 2,8 helyett ez a string jön vissza: "***"

A formázás nem az adatbázis dolga.


Én azt csinálnám, hogy az oldalon látható könyveknek az értékeit kérném le.

Tehát nem 10 millió könyvét, hanem ha valaki rákeres Asimovra és megjelenik a képernyőn 60 tétel, akkor annak a 60 könyvnek.

Tehát az 1-esnek egy optimalizált változatát.

2018. júl. 18. 11:59
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
Ha ez a funkció csak itt kell, és a tárolt adatokból mindig egyértelműen következik, akkor én a MySQL szerverre bíznám. Ha máshol is felmerül ugyanez a feladat (és egy kódmódosításnak mindenütt érvényre kell jutnia), vagy valami egyéb feltételtől is függ az eredmény, akkor php-ben érdemes csinálni.
2018. júl. 18. 12:04
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:

"A formázás nem az adatbázis dolga."

Mondjuk ez is igaz.

2018. júl. 18. 12:05
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:

Mindenképpen 2.

1. esetében semmi értelme átpaszírozni egy rakás adatot, ha úgysem használod másra csak átlagolásra.

3. Meg marhasag. A megjelenítés nem a backend dolga.

2018. júl. 18. 12:25
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:

2-es megoldás.


Az 1-es ugye fölöslegesen sok adatot adna át, hisz neked csak az átlag kell.

A 3-as pedig megbontja a logikát. A kijelzés, formázás nem az adatbáziskezelő dolga. Azon kívül ha később pl nem sima csillagokat akarsz kirakni, hanem pl. ikonokat, sokkal könnyebb, ha az adatbázis csak a konkrét átlagot adja vissza.


Én amúgy még az átlag kerekítését is a PHP-re bíznám, de ez már egyéni preferencia.

2018. júl. 18. 14:29
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:
Köszönöm a válaszokat!
2018. júl. 19. 14:40

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!