Gomez12 schreef op donderdag 02 oktober 2008 @ 00:53:
[...]
Hangt ervanaf hoe groot je site is, praktisch is er geen reden om niet meerdere persistent connections open te houden, je hebt alleen in je code een uitdaging om van persistent connection te switchen ( maar als je genoeg bezoekers hebt dan kan dit best de moeite lonen )
Er zijn situaties denkbaar waarbij persistent connections meer ellende veroorzaken dan ze goed doen, bijvoorbeeld bij het gebruik van transacties. Ben het verder met je eens dat het een uitdaging is om de queries over de juiste verbinding te sturen zonder direct de codebase te vervuilen.
Hangt ervanaf hoe groot je bent. Heb je het over 1 developer die voor alles verantwoordelijk is dan is het paranoide, heb je het over een aantal mensen die verantwoordelijk zijn voor de dbase en andere mensen die verantwoordelijk zijn voor de web-frontend dan vind ik het gewoon normaal.
Als dba heb ik geen zin om in de shit te komen als de frontenders ergens een fout maken zolang er geen goede reden voor is.
Ik denk niet dat dit op gaat voor de meeste hobbyprojectjes waar dit topic een vervolg van is. Maar bij een complexe database heb je sowieso al snel segmentatie en partitionering nodig echter bij een grote website wil je meestal je queries zo snel en simpel mogelijk houden.
Maar sowieso zie ik gewoon totaal geen reden voor frontenders om iets uit de dbase te verwijderen, delete rechten zijn gewoon totaal niet nodig. Frontenders of dba's maken maar gewoon een view die alleen de items zonder status verwijderd toont. Frontenders krijgen dan de data die ze willen, dbase heeft nog steeds de oude data staan voor als de shit echt uitbreekt... Stukje risico spreiding.
Hier ben ik het mee eens, ook in acht genomen dat een DELETE-statement relatief duur is. Toch moet ook hier weer je database niet geen vervuilen met allemaal loze views die enkel een beveiligingsgrondslag hebben, dan ben je echt bezig je beveiligingsmodel op de verkeerde plek toe te passen.
Op database niveau ga ik er altijd vanuit dat ik mijn codebase niet voldoende onder heb, ongeveer hetzelfde als dat ik er altijd vanuit ga dat mijn sloten op mijn deuren niet toereikend zijn en hiervoor sluit ik een verzekering af.
De database is natuurlijk de baas als het gaat om het beheer van de data, daar zal de applicatie zich naar moeten schikken. Tegelijkertijd moet je je database beschermen tegen de gebruiker in de applicatie. Dit spel speelt zich af in de verschillende lagen in een applicatie. Het doorbreken van dit model in het kader van een algehele beveiligingsmaatregel vind ik dan ook abject. Het is als een extra ducktape over een pleister heenplakken - het voegt niets toe en veroorzaakt alleen maar ellende.
Ik kan de oude dbase terughalen van backups, maar dat kost tijd. Als ik gewoon de situatie zoveel mogelijk voorkom kost het mij zo weinig mogelijk tijd..
Het is een beetje naïef om te stellen dat alle injecties zich zo makkelijk laten reconvalescentieëren. Je weet natuurlijk nooit precies wat er is gebeurd tenzij je de exact de transactielogs gaat napluizen, dat kan met een site waarbij enkele honderden transacties per seconde zijn een onmogelijke opgave vormen.