Hva er databasede motorer?

Hva er en databasemotor? Definisjon og grunnleggende prinsipper

En databasemotor, også kalt lagringsmotor eller storage engine, er det underliggende programvarekomponentet som håndterer all fysisk lagring, gjenfinning og manipulering av data i et databasesystem. For å forstå dette bedre kan du se på en database som et bibliotek: selve databasesystemet er bygningen og reglene for å låne bøker, mens databasemotoren er selve hyllesystemet som avgjør hvordan bøker sorteres, hvor de plasseres og hvordan du finner dem raskt. Motoren bestemmer hvordan data organiseres på disken – enten som rader i tabeller, dokumenter i samlinger eller som nøkkel-verdi-par i enkle strukturer. Uten motoren ville databasesystemet bare være en tom skal uten evne til å lagre data permanent. Ifølge Wikipedia sin definisjon er en databasemotor ansvarlig for å administrere opprettelse, lagring, gjenfinning og manipulasjon av data i et databasehåndteringssystem (DBMS). Det er altså motoren som gjør at sporringene dine faktisk gir resultater.

Hovedfunksjonene til en databasemotor

Databasemotoren utfører flere kritiske oppgaver som sikrer at dataene dine er tilgjengelige, konsistente og trygge. Den mest sentrale funksjonen er lagring i seg selv: motoren bestemmer nøyaktig hvordan data skrives til harddisk eller SSD, med hvilken struktur (for eksempel B-trær for indekserte tabeller) og hvordan ledig plass gjenbrukes når data slettes. Videre håndterer motoren transaksjoner – det vil si grupper av operasjoner som må utføres helt eller ikke i det hele tatt. Dette er avgjørende i systemer som bankoverføringer, der det ikke er akseptabelt at penger forsvinner halvveis. Transaksjonsstøtte innebærer ofte logging av endringer, slik at systemet kan rulles tilbake ved feil. Motoren er også ansvarlig for samtidighetskontroll: den må sørge for at flere brukere eller applikasjoner leser og skriver uten å ødelegge hverandres data. Dette gjøres med låser, versjonsstyring eller en kombinasjon. Integritetskontroll er en annen viktig funksjon: motoren sørger for at fremmednøkler, unike krav og andre begrensninger overholdes hver gang data endres. I tillegg vedlikeholder den interne kataloger som holder oversikt over tabeller, kolonner og indekser. AppMaster sitt leksikon understreker at disse funksjonene – lagring, transaksjonshåndtering, gjenoppretting og katalogadministrasjon – er det som skiller en god motor fra en dårlig en.

Hva er databasede motorer? - 1

Typer databasemotorer og eksempler

Databasemotorer deles grovt inn i to kategorier basert på datamodellen de bruker: relasjonelle motorer og ikke-relasjonelle motorer. De relasjonelle motorene er designet for tradisjonelle tabellstrukturer og bruker ofte SQL som spørrespråk. InnoDB er den mest populære motoren i MySQL og støtter transaksjoner med ACID-egenskaper (atomaritet, konsistens, isolasjon, varighet). MyISAM, en eldre motor i MySQL, er raskere på lesing, men mangler transaksjonsstøtte. På den ikke-relasjonelle siden finner du motorene som MongoDB (dokumentbasert), Cassandra (bredkolonne) og Redis (nøkkel-verdi). Disse er laget for fleksible skjemaer, horisontal skalerbarhet og høy ytelse på store datamengder. Det finnes også blandingsmotorer, som noen moderne databaser bruker for å støtte både relasjonelle og dokumentmodeller. Valget av motor påvirker alt fra hvordan data indekseres til om du har støtte for aggregeringsfunksjoner. Profissão Cloud forklarer i sin definisjon at motoren er den delen som faktisk håndterer den fysiske lagringen, enten det er tabeller, dokumenter eller nøkkelverdi-par.

Her er en liste over fem vanlige databasemotorer med korte karakteristikker:

Hva er databasede motorer? - 2
  • InnoDB – Transaksjonssikker motor med støtte for fremmednøkler, radebaserte låser og gjenoppretting. Brukes mye i MySQL og MariaDB.
  • MyISAM – Eldre motor i MySQL, rask på lesing, men uten transaksjoner og med tabellåser. Passer for lesetunge applikasjoner med lite samtidig skriving.
  • MongoDBs WiredTiger – Dokumentbasert motor med transaksjonsstøtte, komprimering og samtidighetskontroll. Optimalisert for store datamengder.
  • Cassandras LSM-tree – Skriveoptimalisert motor for bredkolonne-databaser. Bruker Log-Structured Merge-tree for høy skriveytelse på tvers av mange noder.
  • SQLite – Innebygd relasjonsmotor som lagrer hele databasen i én enkelt fil. Vanlig i mobile enheter og små applikasjoner.

Nedenfor er en tabell som sammenligner tre sentrale egenskaper ved InnoDB, MyISAM og MongoDBs WiredTiger:

Egenskap InnoDB MyISAM WiredTiger (MongoDB)
Transaksjonsstøtte (ACID) Ja Nei Ja
Låsemekanisme Radebaserte låser Tabellåser Dokumentlåser + MVCC
Typisk bruksområde Webapplikasjoner med krav til dataintegritet Lesetunge arkiveringsløsninger Store datamengder med fleksibelt skjema

Forskjellen mellom et databasesystem (DBMS) og en databasemotor

Mange forveksler databasemotoren med selve databasesystemet, men det er en viktig distinksjon. Databasestyringssystemet (DBMS) er det komplette programmet som tilbyr verktøy for å administrere, spørre og manipulere data – det inkluderer alt fra grensesnitt for SQL-spørringer til brukeradministrasjon og sikkerhet. Databasemotoren er derimot den interne komponenten som faktisk utfører lagrings- og gjenfinningsarbeidet under panseret. DBMS er bilen, motoren er det som får den til å bevege seg. For eksempel kan MySQL som DBMS bruke flere forskjellige motorer – InnoDB, MyISAM, Memory – og du kan bytte motor for en bestemt tabell uten å endre selve databasesystemet. Looqbox forklarer i sin guide at motoren er ansvarlig for den fysiske interaksjonen med lagringsmediet, mens DBMS håndterer logikken, spørringene og grensesnittet mot brukeren. Denne separasjonen gir fleksibilitet: utviklere kan velge motor basert på ytelsesbehov, uten å skifte ut hele databasesystemet.

Hva er databasede motorer? - 3

Hvordan motoren påvirker ytelsen

Ytelsen til en databaseapplikasjon er sterkt avhengig av hvilken motor du velger. Motoren bestemmer for eksempel lese- og skrivehastighet, måten indekser bygges på, og hvordan minne og disk brukes. InnoDB bruker en buffer pool for å holde ofte brukte data i minnet, noe som drastisk forbedrer leseoperasjoner. MyISAM lagrer indekser i separate filer og har egen cache for indeksblokker, men cacher ikke selve dataene på samme måte. Dette gjør MyISAM raskere på enkle SELECT-spørringer, men langsommere på samtidige skriveoperasjoner. Motorer med transaksjonsstøtte må logge alle endringer for å kunne rulle tilbake ved feil, noe som gir en viss overhead. Ikke-relasjonelle motorer som MongoDBs WiredTiger bruker avanserte komprimeringsteknikker og multiversjonskontroll (MVCC) for å håndtere høye skrivevolumer. Cassandra bruker en LSM-tre-struktur som omgår tradisjonelle B-trær for å oppnå høy skriveytelse på distribuerte systemer. DevMedia understreker at valg av motor direkte påvirker ressursbruken – en motor som er optimalisert for lesing, kan bruke mer minne på indekser, mens en skriveoptimalisert motor kan ha høyere diskaktivitet. For å få mest mulig ut av maskinvaren din er det viktig å forstå hvordan motoren din håndterer caching, låsing og gjenvinning. Du kan lese mer om dette i DevMedias artikkel om MySQL-motorer.

Hvordan velge riktig motor for ditt prosjekt

Når du skal velge databasemotor, bør du først kartlegge arbeidsbelastningen din. Dersom applikasjonen din har krav til sterke transaksjoner – for eksempel i finanssystemer eller e-handel – er en motor med full ACID-støtte som InnoDB eller PostgreSQLs egen motor et naturlig valg. For lesetunge rapporteringssystemer som sjelden oppdateres, kan MyISAM eller en spesialisert kolonnebasert motor som ClickHouse gi bedre ytelse. I moderne webutvikling med hyppige oppdateringer og mange samtidige brukere er InnoDB ofte foretrukket på grunn av radebaserte låser og god gjenoppretting. For store datamengder som ikke passer inn i et strengt skjema, bør du vurdere en dokumentmotor som MongoDB eller en distribusjonsvennlig motor som Cassandra. Husk også at noen DBMS-er som MySQL lar deg blande motorer på tabellnivå – du kan for eksempel ha transaksjonssikre tabeller for ordrer og leseoptimaliserte tabeller for produktkataloger. Uansett valg er det lurt å teste ytelsen med din egen datamengde og belastning, fordi benchmarks fra leverandører ikke alltid gjenspeiler din spesifikke bruk.

Hva er databasede motorer? - 4

Referanser

Kildene som er brukt i denne artikkelen:

Wikipedia – "Mecanismo de armazenamento": https://pt.wikipedia.org/wiki/Mecanismo_de_armazenamento

Hva er databasede motorer? - 5

AppMaster – "Motor de base de dados": https://appmaster.io/pt/glossary/motor-de-base-de-dados

Profissão Cloud – "O que é engine de banco de dados": https://profissaocloud.com.br/glossario/o-que-e-engine-de-banco-de-dados/

Looqbox – "O que são bancos de dados e para que servem?": https://looqbox.com/blog/banco-de-dados/

DevMedia – "MySQL Engine: conhecendo as engines do MySQL": https://www.devmedia.com.br/conhecendo-as-engines-do-mysql/37433

database databasede motorer SQL ytelse lagring spørringer databasesystemer
Merk Informasjonen er kun for generelle formål og kan variere mellom ulike databasesystemer.
Forfatter

Stefano Barcellos

Bidragsyter på Visite Barbados.

« Forrige innlegg
Lett og rask nettleser for bedre surfing

Relaterte innlegg