Liste over minnedatabaser

1. Oversikt

Databaser i minnet er avhengige av systemminne i motsetning til diskplass for lagring av data. Fordi minnetilgang er raskere enn disktilgang, er disse databasene naturlig nok raskere.

Selvfølgelig kan vi bare bruke en database i minnet i applikasjoner og scenarier der data ikke trenger å vedvares eller for å utføre tester raskere. De kjøres ofte som innebygde databaser, noe som betyr at de opprettes når en prosess starter og kastes når prosessen avsluttes, noe som er veldig behagelig å teste fordi du ikke trenger å konfigurere en ekstern database.

I de følgende avsnittene, vi tar en titt på noen av de mest brukte minnedatabasene for Java-miljøet og konfigurasjonen som er nødvendig for hver av dem.

2. H2-database

H2 er en åpen kildekodedatabase skrevet i Java som støtter standard SQL for både innebygde og frittstående databaser. Den er veldig rask og inneholdt i en JAR på bare rundt 1,5 MB.

2.1. Maven avhengighet

Å bruke H2 databaser i et program, må vi legge til følgende avhengighet:

 com.h2database h2 1.4.194 

Den siste versjonen av H2 databasen kan lastes ned fra Maven Central.

2.2. Konfigurasjon

For å koble til en H2 i minnedatabasen, kan vi bruke en tilkobling String med protokollen mem, etterfulgt av databasenavnet. De driverClassName, URL, brukernavn og passord eiendommer kan plasseres i en .eiendommer filen som skal leses av søknaden vår:

driverClassName = org.h2.Driver url = jdbc: h2: mem: myDb; DB_CLOSE_DELAY = -1 brukernavn = sa passord = sa

Disse egenskapene sikrer myDb databasen opprettes automatisk ved oppstart av applikasjonen.

Når en forbindelse til databasen er lukket, lukkes databasen som standard også. Hvis vi vil at databasen skal vare så lenge JVM kjører, kan vi spesifisere eiendommen DB_CLOSE_DELAY = -1

Hvis vi bruker databasen med dvalemodus, må vi også spesifisere dvalemodus:

hibernate.dialect = org.hibernate.dialect.H2Dialect

H2 databasen vedlikeholdes regelmessig og gir en mer detaljert dokumentasjon på h2database.com.

3. HSQLDB (HyperSQL Database)

HSQLDB er et open source-prosjekt, også skrevet på Java, som representerer en relasjonsdatabase. Den følger SQL- og JDBC-standardene og støtter SQL-funksjoner som lagrede prosedyrer og utløsere.

Den kan brukes i minnemodus, eller den kan konfigureres til å bruke disklagring.

3.1. Maven avhengighet

Å utvikle en applikasjon ved hjelp av HSQLDB, trenger vi Maven-avhengigheten:

 org.hsqldb hsqldb 2.3.4 

Du finner den siste versjonen av HSQLDB på Maven Central.

3.2. Konfigurasjon

Tilkoblingsegenskapene vi trenger har følgende format:

driverClassName = org.hsqldb.jdbc.JDBCDriver url = jdbc: hsqldb: mem: myDb brukernavn = sa passord = sa

Dette sikrer at databasen blir opprettet automatisk ved oppstart, ligger i minnet så lenge applikasjonen varer, og blir slettet når prosessen avsluttes.

De Dvalemodus dialekt eiendom for HSQLDB er:

hibernate.dialect = org.hibernate.dialect.HSQLDialect

JAR-filen inneholder også en Database Manager med en GUI. Mer informasjon finner du på nettstedet hsqldb.org.

4. Apache Derby-database

Apache Derby er et annet open source-prosjekt som inneholder et relasjonelt databasestyringssystem opprettet av Apache Software Foundation.

Derby er basert på SQL- og JDBC-standarder og brukes hovedsakelig som en innebygd database, men den kan også kjøres i klientservermodus ved å bruke Derby Network Server rammeverk.

4.1. Maven avhengighet

Å bruke en Derby database i et program, må vi legge til følgende Maven-avhengighet:

 org.apache.derby derby 10.13.1.1 

Den siste versjonen av Derby databasen finnes på Maven Central.

4.2. Konfigurasjon

Tilkoblingsstrengen bruker hukommelse protokoll:

driverClassName = org.apache.derby.jdbc.EmbeddedDriver url = jdbc: derby: minne: myDb; create = true username = sa password = sa

For at databasen skal opprettes automatisk ved oppstart, må vi spesifisere skape = sant i tilkoblingsstrengen. Databasen stenges og slippes som standard ved JVM-avslutning.

Hvis du bruker databasen med Dvalemodus, må vi definere dialekten:

hibernate.dialect = org.hibernate.dialect.DerbyDialect

Du kan lese mer om Derby database på db.apache.org/derby.

5. SQLite-database

SQLite er en SQL-database som bare kjører i innebygd modus, enten i minnet eller lagret som en fil. Den er skrevet på C-språket, men kan også brukes med Java.

5.1. Maven avhengighet

Å bruke en SQLite database, må vi legge til JDBC-driveren JAR:

 org.xerial sqlite-jdbc 3.16.1 

Avhengigheten til sqlite-jdbc kan lastes ned fra Maven Central.

5.2. Konfigurasjon

Tilkoblingsegenskapene bruker org.sqlite.JDBC førerklasse og hukommelse protokoll for tilkoblingsstrengen:

driverClassName = org.sqlite.JDBC url = jdbc: sqlite: minne: myDb brukernavn = sa passord = sa

Dette vil skape myDb databasen automatisk hvis den ikke eksisterer.

For tiden, Dvalemodus gir ikke en dialekt for SQLite, selv om det veldig sannsynlig vil gjøre det i fremtiden. Hvis du vil bruke SQLite med Dvalemodus, må du lage din Dvalemodus klasse.

For å finne ut mer om SQLite, gå til sqlite.org.

6. In-Memory Databases in Spring Boot

Spring Boot gjør det spesielt enkelt å bruke en database i minnet - fordi den kan opprette konfigurasjonen automatisk for H2, HSQLDB, og Derby.

Alt vi trenger å gjøre for å bruke en database av en av de tre typene i Spring Boot, er å legge dens avhengighet til pom.xml. Når rammeverket møter avhengigheten av klassestien, konfigureres databasen automatisk.

7. Konklusjon

I denne artikkelen så vi raskt på de mest brukte minnedatabasene i Java-økosystemet, sammen med deres grunnleggende konfigurasjoner. Selv om de er nyttige for testing, må du huske at de i mange tilfeller ikke gir nøyaktig samme funksjonalitet som de originale frittstående.

Du kan finne kodeeksemplene som brukes i denne artikkelen på Github.


$config[zx-auto] not found$config[zx-overlay] not found