database onderhoud?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Ozzie PHP

Ozzie PHP

28/07/2011 18:29:36
Quote Anchor link
Hallo,

Een vraagje...
Ik ga een cms systeem maken en nu wil ik daar een tooltje in maken waarmee gebruikers van het cms systeem een notitie / memo voor zichzelf kunnen maken. Zo kunnen ze er bijvoorbeeld als notitie in zetten "Morgen om 10:00 uur afspraak met Meneer Jansen".

Stel 30 mensen werken met het CMS en die kunnen allemaal hun eigen notities maken. Dan zou het kunnen dat er op een gegeven moment honderden notities in de database staan.

Nu vraag ik me het volgende af. Moet ik dan een maximum aantal notities instellen, zodat men bijvoorbeeld niet meer dan 50 notities kan maken? Of moet ik notities die ouder zijn dan een maand automatisch weggooien?

Ik ben benieuwd hoe jullie daar mee omgaan (of niet?). Hetzelfde geldt bijvoorbeeld op een website met nieuwsberichten. Stel er komen dagelijks 30 berichten op te staan (denk bijvoorbeeld aan deze site). Na verloop van tijd zit de database dan toch "vol"? Hoe los je dit dan op?
 
PHP hulp

PHP hulp

05/11/2024 15:40:05
 
- Ariën  -
Beheerder

- Ariën -

28/07/2011 18:37:45
Quote Anchor link
Databases raken niet snel vol....

Vergeet niet dat een database een hoop kan hebben. Je kan altijd een opruimronde houden om oude notities te verwijderen.
 
Joren de Wit

Joren de Wit

28/07/2011 18:49:41
Quote Anchor link
Vergelijk een notitie voor het gemak even met een bericht op een willekeurig forum. Pak dan even een van de grotere fora en tel het aantal berichten. Dat zullen er vele malen meer zijn dan het aantal waar jij nu over spreekt, en die databases hebben daar totaal geen probleem mee.

Miljoenen records heeft een database absoluut geen moeite mee. Als het alleen zo uit de klauwen loopt, moet je wel e.e.a. aan database optimalisatie gaan doen, zodat hij niet zo traag als dikke *** wordt...

Kortom, de aantallen die jij noemt, enkelen honderden of duizende records, daar zou ik me geen zorgen over maken.
Gewijzigd op 28/07/2011 18:50:16 door Joren de Wit
 
- Ariën  -
Beheerder

- Ariën -

28/07/2011 18:53:05
Quote Anchor link
Even een leuke opmerking. Sinds gisteren heeft het Fok!forum 100. mln posts gehaald, en dat op een MySQL database.
 
Joren de Wit

Joren de Wit

28/07/2011 18:55:55
Quote Anchor link
Als ik me niet vergis draait Tweakers.net ook op een MySQL database. Dus het kan wel gewoon ;-)
 
- Ariën  -
Beheerder

- Ariën -

28/07/2011 20:10:52
Quote Anchor link
Klopt, en ook op PostGreSQL en MongoDB.
 
Ozzie PHP

Ozzie PHP

28/07/2011 20:29:05
Quote Anchor link
Ah oke... thanks... :)

Maareh... neem nu even voor het gemak het voorbeeld van de notities... moet je die dan onbeperkt laten staan? Of een limiet op zetten? Of automatisch na zoveel tijd verwijderen?

Aar. jij zegt "Je kan altijd een opruimronde houden om oude notities te verwijderen." Maar dat is toch ook raar? Dan zou ik die handmatig, of via een script moeten verwijderen ofzo??? ...en dan is iedereen ineens z'n notities kwijt. Ik zoek eigenlijk een soort systeem waardoor de database zichzelf "opruimt", maar dan wel op een voor de gebruiker vriendelijke manier. En dat is een beetje waar ik mee zit. Moet ik tegen de gebruiker zeggen dat hij / zij maximaal 50 notities mag hebben? Of is het beter idee om tegen de gebruiker te zeggen dat notities ouder dan x maanden automatisch worden verwijderd? Ik wil zeg maar voorkomen dat de database van het cms gedeelte ongemerkt volloopt. Hebben jullie nog andere tips eventueel?
 
- Ariën  -
Beheerder

- Ariën -

28/07/2011 21:05:17
Quote Anchor link
Nogmaals, vollopen zal een database heus niet.
Je kan ongebruikte data verwijderen als ze bijv. ouder zijn dan een half jaar. Dit kan prima met MySQL.

Vermeld dit wel aan de gebruikers als ze nog zicht hebben op oude notities. Desnoods kan je werken met een 'mappen'-systeem dat ze notities naar een 'saved'-map kunnen verhuizen waar nooit automatisch in geleegd wordt.
Gewijzigd op 28/07/2011 21:06:11 door - Ariën -
 
Ozzie PHP

Ozzie PHP

28/07/2011 21:18:54
Quote Anchor link
Ik zou op de pagina's waar ze notities kunnen plaatsen een opmerking kunnen zetten: let op, notities ouder dan 6 maanden worden automatisch verwijderd. Is dat een goed plan dan?

(Controleer je zoiets gewoon in de code, of het ouder is dan een half jaar, of doe je dat met een cron job?)
 
- SanThe -

- SanThe -

28/07/2011 21:24:35
Quote Anchor link
Ik heb het idee dat jij je veel te veel zorgen maakt om iets wat volgens mij nooit vol zal lopen. Hoe groot verwacht jij dat de database zal gaan worden?
 
The Force

The Force

28/07/2011 21:25:11
Quote Anchor link
Houd gewoon geen opruimronde. Je zal het echt niet nodig hebben. Scheelt je ook een hoop gedoe. Dat er 30 mensen aan je CMS werken is vrij onwaarschijnlijk, meestal is slechts één iemand administrator. Sterker nog, ik heb een CMS geschreven voor één van de grootste Indonesische kranten en daar beheren maximaal 3 mensen de website. Maar stel dat er 100 mensen je website beheren. Allemaal zijn ze chronisch verslaafd aan notities maken, waardoor ze uiteindelijk gemiddeld zo'n 1000 notities hebben gemaakt (per persoon). Zelfs dan kan je database dat gemakkelijk aan. Zelfs als er duizend mensen op je CMS zitten is het geen probleem (met wat indexes e.d.). Bovendien introduceer je ongemakken aan de gebruiker. Omdat hij daarnaast het gevoel heeft dat hij de notities alleen tijdelijk op kan slaan zal hij het niet echt gaan gebruiken. Ik vraag me sowieso af wie die notities nou zullen gaan gebruiken, gezien de vele manieren waarop mensen notities kunnen maken.

Moraal van het verhaal: bespaar je de moeite! K.I.S.S.
 
- SanThe -

- SanThe -

28/07/2011 21:35:45
Quote Anchor link
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Bovenstaande tekst van 250 bytes maal 50 posts per persoon maal 30 personen is 375000 bytes is 375 kbyte is nog geen 0,4 MB oftewel bijna niks.
 
Ozzie PHP

Ozzie PHP

28/07/2011 21:49:50
Quote Anchor link
@The Force: oké thanks... het maken van notities is gewoon een handigheidje... in plaats van al die memo's op je bureau.... maar misschien is het vooral heel handig voor mezelf :)

@SanThe: bedankt voor het voorbeeld. Dat is inderdaad bijna niks en valt dus erg mee.

Even over nadenken wat ik dan ga doen... ik kan me nu in ieder geval beter een voorstelling maken van hoeveel schijfruimte dit nu echt kost (niet veel dus). Thanks!
 
Jack Sierkstra

Jack Sierkstra

29/07/2011 09:27:00
Quote Anchor link
Als je toch evengoed wilt dat de notities opgeruimd worden:
Misschien de datum van een notitie bijhouden. Indien ouder als 6 maanden, dat de gebruiker een bericht krijgt dat er oude notities in staan? Welke vervolgens de mogelijkheid heeft om het zelf te verwijderen.
 
Ozzie PHP

Ozzie PHP

29/07/2011 09:33:27
Quote Anchor link
Ja zoiets misschien... gezien de opmerking van SanThe kan ik ze misschien langer laten staan, een jaar ofzo... en dat er dan na 51 weken een melding komt dat ze notities hebben die volgende week automatisch worden verwijderd. Zoiets? Een jaar is wel lang genoeg lijkt me :)

Nu ik erover nadenk... misschien is een combinatie ook wel mogelijk. Bijvoorbeeld, "U kunt maximaal 100 notities opslaan. Notities ouder dan een jaar worden automatisch verwijderd." Dat lijkt me ook wel wat. En dan een week van tevoren waarschuwen zoals ik net beschreef. Is dat een goed idee?
 
Joren de Wit

Joren de Wit

29/07/2011 10:24:49
Quote Anchor link
Ik sluit me helemaal aan bij The Force, niet verwijderen die notities...

Voor de database is het niet nodig, het maakt je script alleen maar complexer, voor de gebruiker kan het een ongemakkelijk gevoel geven. Kortom, volgens mij zijn er geen echte voordelen?

Sowieso ben ik altijd heel terughoudend met DELETE queries op de database. Wil ik de gebruiker iets kunnen laten 'verwijderen', dan betekent dat bij mij in de meeste geval dat het betreffende record een FALSE krijg in de kolom 'active' (of een TRUE in de kolom 'deleted' for that matter).
 
Ozzie PHP

Ozzie PHP

29/07/2011 10:31:16
Quote Anchor link
Oké, maar even extreme situatie dan. 100 gebruikers, maken allemaal 1.000 notities per jaar... en het zijn flinke notities. Dan wordt op een gegeven moment je database toch te groot? En dan zit na 2 jaar ineens de database vol? :-s
Ja, dan kun je inderdaad alles handmatig gaan verwijderen, maar dan is het toch handiger om een systeem te hebben dat zichzelf onderhoudt?

Waarom ben je terughoudend met DELETE queries? Bedoel je dat je liever helemaal geen DELETE queries uitvoert, of bedoel je dat je dit liever niet overlaat aan de standaard gebruiker maar uitsluitend aan de webmaster?
 
Tobias Tobias

Tobias Tobias

29/07/2011 10:33:42
Quote Anchor link
Om het voorbeeld van Joren te gebruiken:
Je zou eens in de zoveel tijd alle records die in de kolom 'active' FALSE hebben staan kunnen verwijderen.
Op die manier wordt er door de users nooit iets 'per ongeluk' weggegooid, en hou je zelf de controle over de grootte van je database
 
Ozzie PHP

Ozzie PHP

29/07/2011 10:39:02
Quote Anchor link
Mja, dat zou inderdaad kunnen... maar dan nog steeds blijft de database volstromen als de gebruikers hun notitities niet weggooien... :-s
 
Joren de Wit

Joren de Wit

29/07/2011 10:41:53
Quote Anchor link
100 gebruikers * 1000 notities * 10 jaar (voor het gemak) = 1.000.000 notities. Dat is dus nog helemaal niet veel (vergelijk met het FOK forum voorbeeld met 100 mln reacties)...

DELETE queries zijn altijd helemaal definitief (tenzij je backups wilt gaan terugzetten). Hoe vaak komt het niet voor dat een gebruiker toch iets niet had willen verwijderen? Bij mij krijgt de gebruiker nooit direct de beschikking over een DELETE functie, die krijgt hooguit UPDATE rechten. Bouw je een module in die in database onderhoud kan voorzien, dan is dat een plaats waar je DELETE functies terug zou kunnen zien. Maar dat is enkel voorbestemd aan de beheerder en zal dus nooit gebruikt worden tijdens het dagelijks gebruik van de applicatie.

Tenslotte: uiteraard programmeer je natuurlijk heel netjes en zitten er geen lekken in je scripts. Maar stel nu dat je onverhoopt een sql injectie lek in een DELETE query hebt. Dan is het kinderspel om je hele database leeg te gooien!
 
Ozzie PHP

Ozzie PHP

29/07/2011 10:46:15
Quote Anchor link
Oké, thanks... maar hoe gaat dat dan eigenlijk in "normale" situaties? Denk inderdaad aan FOK, of bijvoorbeeld hier op PHPhulp? Dat zijn toch ook heeeeeeeel erg veel berichten en reacties etc.? Op een gegeven moment is je schijfruimte toch gewoon vol? Hoe los je dat dan op? Ga je dan alsnog handmatig dingen verwijderen? Of ga je webruimten bij kopen?
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.