Basis van databases

Bij het wijzigen van gegevens leggen veel DBMS'en de wijzigingen vast in een log (journaal) en schrijven ze die log naar niet-vluchtige opslag vóór de database zelf (WAL: write-ahead logging). Wat is de belangrijkste reden voor deze aanpak?

  1. AOok na een storing kan met de log het werk van gecommitte wijzigingen opnieuw worden uitgevoerd en kunnen niet-gecommitte wijzigingen ongedaan worden gemaakt, zodat een correcte toestand wordt hersteld
  2. BDoor de log eerst te schrijven, wordt de database zelf kleiner
  3. CDe log kan bij zoekopdrachten met SELECT-statements als index worden gebruikt
Antwoord en toelichting tonen

Antwoord: A. Ook na een storing kan met de log het werk van gecommitte wijzigingen opnieuw worden uitgevoerd en kunnen niet-gecommitte wijzigingen ongedaan worden gemaakt, zodat een correcte toestand wordt hersteld

Om prestatieredenen worden databasepagina's in buffers in het geheugen gewijzigd en pas enige tijd later naar de opslag geschreven. Op het moment van een storing kan de opslag daarom een mengeling bevatten van gecommitte wijzigingen die nog niet zijn weggeschreven en niet-gecommitte wijzigingen die al wel zijn weggeschreven. Als van elke wijziging de waarde ervoor en erna in een log wordt vastgelegd en de log vóór de database zelf wordt geschreven, kan na een storing met de log het werk van gecommitte wijzigingen opnieuw worden uitgevoerd (rollforward, REDO) en kunnen niet-gecommitte wijzigingen ongedaan worden gemaakt (rollback, UNDO), zodat een correcte toestand wordt hersteld. Een commit kan als voltooid worden beschouwd zodra het commitrecord van de transactie in de log staat, dus databasepagina's hoeven niet elke keer direct te worden geschreven, wat de prestaties op peil houdt. Dit mechanisme ondersteunt de atomiciteit en duurzaamheid van de ACID-eigenschappen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van databases

  1. Er zijn transacties T1 tot T5, en vóór een storing is één checkpoint genomen. T1 is vóór het checkpoint begonnen en gecommit. T2 en T3 zijn vóór het checkpoint begonnen; T2 is na het checkpoint maar vóór de storing gecommit, en T3 was op het moment van de storing niet gecommit. T4 en T5 zijn na het checkpoint begonnen; T4 is vóór de storing gecommit, en T5 was niet gecommit. Welke transacties moeten bij het herstel na de storing met de log een rollforward krijgen?
  2. Op de kolom LidNr van de tabel Lid met 1 miljoen rijen is een index in de vorm van een B+-boom aangemaakt. Welke combinatie van het effect dat in het algemeen mag worden verwacht en de prijs daarvoor is juist?
  3. Voor de tabel Lid met 1 miljoen rijen wordt overwogen op elk van de kolommen LidNr (allemaal verschillend), Prefectuur (47 waarden) en Geslacht (2 waarden, ruwweg half om half) een B+-boomindex aan te maken. Op welke kolom is een index waarschijnlijk het minst effectief bij een zoekopdracht waarin in de WHERE-clausule een waarde voor één kolom wordt opgegeven?
  4. Welke beschrijving van de kenmerken van een key-value-store, een van de databases die NoSQL worden genoemd, is in het algemeen juist?
  5. Welke beschrijving van de CAP-stelling voor een gedistribueerde database die kopieën van gegevens op meerdere servers bewaart, is passend?