[oop] objecten meegeven?
Pagina: « vorige 1 2 3 4 volgende »
Ozzie PHP:
De voordelen van een database snap ik
? In die 5 minuten een hersenspoeling gehad?
Ozzie PHP op 14/04/2013 19:53:25:
Ja, tot zover snap ik het allemaal wel... maar ik ben dus benieuwd waarom je de gegevens die je cachet zou opslaan in een database in plaats van in een bestand? Dat is het enige wat ik graag wil weten.
Ik snap in het algemeen de voordelen van een database. Maar niet als het om cachen gaat. Waarom zou je de gecachete gegevens in de database opslaan en niet in een bestand?
Gewijzigd op 14/04/2013 19:58:11 door Wouter J
"Omdat een database relationeel opslaat en een bestand plain."
Wat bedoel je hiermee?
Offtopic:
Merk op dat een database ook een bestand kan zijn, zie bijv. sqlite
Hmm, oké... maar ik heb een paar keer gezien dat grote bedrijven gewoon gecachte bestanden wegschrijven in een bestand. Meestal als een geserialisede array. En volgens mij is het sneller om bijv. de 10 laatst toegevoegde nieuwsberichten uit een dergelijk bestand te trekken dan uit een database. Waarom zouden ze dat anders doen?
Omdat dat waarschijnlijk in hun situatie sneller was. Dat hoeft nog niks te zeggen over jouw situatie. Dus bekijk het zelf, test veel en kijk welke cache methode voor welke situatie in jouw geval het beste is om te gebruiken.
En hoe gaat cachen in een database eigenlijk te werk? Heb je een tabel "cache" en dan 2 velden waarvan 1 een key en de 2e de cachegegevens?
Zo heb je nog een leuke use-case voor je service provider, je db cache IS AFHANKELIJK van de database. :-)
Wat bedoel je hiermee?
Maar nog steeds zie ik niet het praktijkvoordeel om iets in een database te cachen ipv in een bestand. Kan iemand een praktijkvoorbeeld geven?
(Overigens... het tijdelijk opslaan van een winkelmandje heeft toch niks met cachen te maken?)
Een redelijk dom voorbeeld maar; als je nogal veel cached kan je schijfruimte nogal snel vol geraken en dan is het gewoon handiger om een database te gebruiken.
Ozzie PHP op 14/04/2013 20:48:07:
(Overigens... het tijdelijk opslaan van een winkelmandje heeft toch niks met cachen te maken?)
En nee, het opslaan van een winkelmandje heeft niks te maken met cachen. Daarvoor heb je sessions en cookies.
Toevoeging op 14/04/2013 21:20:02:
Je kunt het ook proberen met de alom bekende "weegschaaltest", zet je database op een USB-stickje. Hetzelfde voor je files. Weeg nu afzonderlijk de twee sticks en je zult zien wat het lichtste weegt.
Maar goed, jouw eerdere veronderstelling is dus een niet vaststaande aanname.
Vreemd genoeg heb ik nog geen enkel vaststaand voorbeeld gehoord waarom een databse geschikter zou zijn dan een bestand om gegevens te cachen. Er wordt veel gezegd, maar de praktijkvoorbeelden blijven jammer genoeg achterwege.
Ozzie volgens mij heb ik van Wouter alleen al 3 redenen gehoord.. En het aller belangrijkste je moet het voor jezelf testen. Het kan zo zijn dat je het een keer in de DB moet stoppen en de andere keer in een bestand omdat het de performance verbetert en kwa laadtijd niets uitmaakt en de andere keer neem je dan de ander omdat performance weer een lage prioriteit heeft ( wat ik in jou geval betwijfel aangezien je altijd voor performance schijnt te willen gaan )
De reden die ik van Wouter heb gehoord is dat een database relationair is, en dus is mijn vraag... wat kun je dan met een database wel cachen wat je met een bestand niet kunt cachen. Wat is het verschil. Wanneer gebruik je het een, en wanneer het ander. Ik zou zeggen dat iets uitlezen uit een bestand altijd sneller is dan iets uitlezen uit een database.
Voor de goede orde, ik probeer hier niet om m'n gelijk te halen. Ik probeer te begrijpen wat het voordeel van het een is ten opzichte van het ander. En graag ook aangevuld met een (praktijk)voorbeeld.
Het is heel makkelijk om te zeggen dat het een beter is dan het ander, maar dan wil ik graag het waarom horen. Wanneer kun je iets beter opslaan in een bestand, en wanneer beter in een database.
Iedereen schijnt hier te weten dat iets cachen in een database in sommige gevallen een voordeel biedt ten opzichte van iets cachen in een bestand... maar als ik dan vraag om een voorbeeld, dan is er tot op heden niemand die een voorbeeld kan noemen. Dat is toch vreemd? Dat zou hetzelfde zijn als ik een verkoper ben en ik jou een koffiezetapparaat zou moeten verkopen en ik tegen jou zou zeggen "nou, in het ene geval is merk A beter en in het andere geval merk B". Jouw logische vraag zou dan zijn "Oh ja? Wanneer is merk A dan beter en wanneer merk B?" En dat ik dan zou zeggen "Tja, eh... daar kan ik geen antwoord op geven".
Maar dat is nu wat ik graag zou weten, jij hebt het over verschillende cases. Daarmee sla je de spijker op z'n kop, want dat is nu waar ik benieuwd naar ben. Kun je een voorbeeld noemen waarbij je naar een file zou cachen en een voorbeeld waarbij je naar de database zou cachen? Je mag het ook verzinnen, maar ik zou graag weten waarop je je keuze baseert. "Maar net waar je zin in hebt" vind ik een beetje vreemd. Je kiest toch bewust voor een bapaalde methode? Of zeg jij nu dat het helemaal niks uitmaakt of je naar de database of naar een bestand cachet?
Ozzie PHP op 15/04/2013 00:49:00:
Maar dat is nu wat ik graag zou weten, jij hebt het over verschillende cases. Daarmee sla je de spijker op z'n kop, want dat is nu waar ik benieuwd naar ben. Kun je een voorbeeld noemen waarbij je naar een file zou cachen en een voorbeeld waarbij je naar de database zou cachen?
• File cache. Ik heb een productfeed die dynamisch wordt gegenereerd met databasegegevens. De database verandert vaak maar één of twee keer per dag, soms ook een hele dag niet. Het bleek veel efficiënter om bij een databasewijziging een CSV-bestand op schijf bij te werken dan bij elk verzoek een nieuw CSV-bestand te genereren.
• Database cache. Ik heb een mediadatabase waarin op uiteenlopende metadata en tekst wordt gezocht. De meeste zoekopdrachten bestaan uit zoekwoorden (full-text search) plus aanvullende metadata (vakgebied, onderwerp, auteursrechthebbende, tijdvak). De zoekopdrachten trokken toch al zo'n wissel op de database dat het efficiënter bleek om meteen een compleet mediabestand op te slaan in de database.
Als wij nu allerlei voorbeelden gaan verzinnen kom jij toch alleen maar met 'ja maar's. Daar heb ik in elk geval geen zin in.