Avatar billede rocha_dk Nybegynder
23. juli 2005 - 09:44 Der er 7 kommentarer og
2 løsninger

fil eller database?

Jeg er igang med at lave et større system, som efterhånden er ved at have en del databasekald her og der. For at undgå alle disse kald har jeg lavet nogle filer som bliver læst ind med fopen, fgets... men jeg er kommet i tvivl om det overhovedet er en hurtigere måde, eller om det blot sænker sidens performance. Er der nogen som kender noget til database vs. fil ?
Avatar billede arne_v Ekspert
23. juli 2005 - 10:01 #1
Du kan hvis du strukturerer det fornuftigt (kun en fil, læse med store buffere etc.)
opnå bedre performance for readonly data ved at bruge fil fremfor database.

Men du skal ikke kode meget forkert førend databasen performer bedst også
ved readonly.

Og snakker vi data som skal modificeres vil databasen både performe bedst og spare
dig for en masse kode.

Det er normalt også nemmest administrationsmæssigt kun at have software+database
fremfor software+diverse filer+database (backup etc.).

Trenden idag er absolut database.
Avatar billede nielle Nybegynder
23. juli 2005 - 10:03 #2
Hvis alle dine potentielle databasekald er af typen:

"SELECT * FROM dinTabel"

Så er det nok hurtigst at hente de tilsvarende data fra en fil. I den forbindelse har du dog det problem at du bagefter skal konverter dem til den datatype di skal bruge i de enkelte tilfælde – tekst, tal, datoer osv.

Hvis du begynder at skulle have bare lidt mere struktur på dine potentielle kald:

"SELECT * FROM dinTabel WHERE tilmeldt>#2005-07-23#"
"SELECT * FROM dinTabel WHERE fornavn LIKE 'N%'"
"SELECT * FROM dinTabel ORDER BY rand()"

- så begynder databasekald at være en meget alvorlig konkurrent til fladfiler.
Avatar billede nielle Nybegynder
23. juli 2005 - 10:07 #3
Hvis du skal til at modificere data:

"DELETE FROM dinTabel WHERE tilmeldt<#2004-01-01#"

- eller:

"UPDAET dinTabel SET guldKunde=true WHERE tilmeldt<#2004-01-01#"

- så er det meget hurtigere med databasen.
Avatar billede rocha_dk Nybegynder
23. juli 2005 - 14:15 #4
tusind tak for svarene. Jeg har lige fundet en anden mulighed, som jeg gerne vil dele med jer og se om i synes om :)
Hvis jeg laver koden som generer filerne, til at være en php fil, som echo'er et stykke tekst ud, og så includer dem, ville det ikke være det hurtigste?

Filerne indeholder bannerkoder til tre sæt bannere, som administratoren af siden gerne vil kunne styre selv. Der er en fil til hvert banner.
Avatar billede rocha_dk Nybegynder
23. juli 2005 - 14:15 #5
..til at generere en php fil... skulle der ha' stået
Avatar billede arne_v Ekspert
23. juli 2005 - 14:22 #6
generere PHP filer er (så vidt jeg ved med mit beskedne PHP kendskab) en hyppigt
anvendt optimerings teknik i PHP

så performance må antages at være god

principielt er jeg lidt bekymret ved tanken on at scripts har write adgang til sig selv,
men det kan vel laves sikkert alligevel
Avatar billede rocha_dk Nybegynder
23. juli 2005 - 15:22 #7
scriptet skal nu heller ikke skrive til sig selv, men til 3 eksterne filer. I skal ha' mange tak for hjælpen, hvis i smider et svar deler jeg pointene 50/50.
Avatar billede arne_v Ekspert
23. juli 2005 - 15:39 #8
.
Avatar billede nielle Nybegynder
24. juli 2005 - 07:53 #9
På sites, som virkelig oplever tung trafik, kan man benytte en teknik som lidt ligner det du beskriver – men det er ikke nødvendigvis bundet op på at det lige er PHP det forefår i; Sider, på sitet, som oplever et ekstraordinært stort load, som f.eks. forsiden på sitet, bliver simpelthen genereret på forhånd. Når en besøgene går ind på sitet ser hun derfor den præ-generede side i stedet for at denne genereres hver gang via kald til databasen. Hvor tit forsiden genereres afhænger simpelthen af hvor statisk den er – f.eks. kan en nyhedsside nøjes med at genreres en gang for hver nyhed (som er så stor at den ryger på forsiden).

... og et svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester