Liste over In-Memory-databaser

1. Oversigt

In-memory databaser er afhængige af systemhukommelse i modsætning til diskplads til lagring af data. Fordi hukommelsesadgang er hurtigere end diskadgang, er disse databaser naturligvis hurtigere.

Selvfølgelig kan vi kun bruge en hukommelsesdatabase i applikationer og scenarier, hvor data ikke behøver at være vedvarende eller med det formål at udføre tests hurtigere. De køres ofte som indlejrede databaser, hvilket betyder, at de oprettes, når en proces starter og kasseres, når processen slutter, hvilket er super behageligt til test, fordi du ikke behøver at konfigurere en ekstern database.

I de følgende afsnit, vi tager et kig på nogle af de mest almindeligt anvendte hukommelsesdatabaser til Java-miljøet og den nødvendige konfiguration til hver af dem.

2. H2-database

H2 er en open source-database skrevet i Java, der understøtter standard SQL til både indlejrede og enkeltstående databaser. Det er meget hurtigt og indeholdt i en JAR på kun omkring 1,5 MB.

2.1. Maven afhængighed

At bruge H2 databaser i en applikation, skal vi tilføje følgende afhængighed:

 com.h2database h2 1.4.194 

Den seneste version af H2 database kan downloades fra Maven Central.

2.2. Konfiguration

For at oprette forbindelse til en H2 i hukommelsesdatabase kan vi bruge en forbindelse Snor med protokollen mem, efterfulgt af databasens navn. Det driverClassName, URL, brugernavn og adgangskode egenskaber kan placeres i en .ejendomme fil, der skal læses af vores ansøgning:

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

Disse egenskaber sikrer, at myDb database oprettes automatisk ved opstart af applikationen.

Når en forbindelse til databasen er lukket, lukkes databasen som standard også. Hvis vi ønsker, at databasen skal vare, så længe JVM kører, kan vi specificere egenskaben DB_CLOSE_DELAY = -1

Hvis vi bruger databasen med dvale, er vi også nødt til at specificere dvale-dialekten:

hibernate.dialect = org.hibernate.dialect.H2Dialect

H2 databasen vedligeholdes regelmæssigt og giver en mere detaljeret dokumentation på h2database.com.

3. HSQLDB (HyperSQL Database)

HSQLDB er et open source-projekt, også skrevet i Java, der repræsenterer en relationsdatabase. Det følger SQL- og JDBC-standarderne og understøtter SQL-funktioner såsom lagrede procedurer og udløsere.

Det kan bruges i hukommelsestilstand, eller det kan konfigureres til at bruge disklagring.

3.1. Maven afhængighed

At udvikle en applikation ved hjælp af HSQLDB, vi har brug for Maven-afhængighed:

 org.hsqldb hsqldb 2.3.4 

Du kan finde den nyeste version af HSQLDB på Maven Central.

3.2. Konfiguration

Forbindelsesegenskaberne, vi har brug for, har følgende format:

driverClassName = org.hsqldb.jdbc.JDBCDriver url = jdbc: hsqldb: mem: myDb brugernavn = sa adgangskode = sa

Dette sikrer, at databasen oprettes automatisk ved opstart, opbevares i hukommelsen i applikationens varighed og slettes, når processen slutter.

Det Dvale dialekt ejendom til HSQLDB er:

hibernate.dialect = org.hibernate.dialect.HSQLDialect

JAR-filen indeholder også en Database Manager med en GUI. Flere oplysninger kan findes på hsqldb.org-webstedet.

4. Apache Derby-database

Apache Derby er et andet open source-projekt, der indeholder et relationsdatabasehåndteringssystem oprettet af Apache Software Foundation.

Derby er baseret på SQL- og JDBC-standarder og bruges hovedsageligt som en integreret database, men den kan også køres i klientservertilstand ved hjælp af Derby netværksserver ramme.

4.1. Maven afhængighed

At bruge en Derby database i en applikation, skal vi tilføje følgende Maven-afhængighed:

 org.apache.derby derby 10.13.1.1 

Den seneste version af Derby database kan findes på Maven Central.

4.2. Konfiguration

Forbindelsesstrengen bruger hukommelse protokol:

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

For at databasen oprettes automatisk ved opstart, skal vi specificere skabe = sandt i forbindelsesstrengen. Databasen lukkes og slettes som standard ved JVM-afslutning.

Hvis du bruger databasen med Dvale, vi er nødt til at definere dialekten:

hibernate.dialect = org.hibernate.dialect.DerbyDialect

Du kan læse mere om Derby database på db.apache.org/derby.

5. SQLite-database

SQLite er en SQL-database, der kun kører i integreret tilstand, enten i hukommelsen eller gemt som en fil. Det er skrevet på C-sproget, men kan også bruges sammen med Java.

5.1. Maven afhængighed

At bruge en SQLite database, skal vi tilføje JDBC-driveren JAR:

 org.xerial sqlite-jdbc 3.16.1 

Sqlite-jdbc-afhængigheden kan downloades fra Maven Central.

5.2. Konfiguration

Forbindelsesegenskaberne bruger org.sqlite.JDBC førerklasse og hukommelse protokol til forbindelsesstrengen:

driverClassName = org.sqlite.JDBC url = jdbc: sqlite: hukommelse: myDb brugernavn = sa adgangskode = sa

Dette vil skabe myDb database automatisk, hvis den ikke findes.

I øjeblikket, Dvale giver ikke en dialekt til SQLite, selvom det meget sandsynligt vil i fremtiden. Hvis du vil bruge SQLite med Dvale, skal du oprette din Dvaletilstand klasse.

For at finde ud af mere om SQLite, gå til sqlite.org.

6. Databaser i hukommelsen i Spring Boot

Spring Boot gør det især nemt at bruge en database i hukommelsen - fordi den automatisk kan oprette konfigurationen til H2, HSQLDB, og Derby.

Alt hvad vi skal gøre for at bruge en database af en af ​​de tre typer i Spring Boot er at tilføje dens afhængighed af pom.xml. Når rammen møder afhængigheden af ​​klassestien, konfigureres databasen automatisk.

7. Konklusion

I denne artikel kiggede vi hurtigt på de mest almindeligt anvendte hukommelsesdatabaser i Java-økosystemet sammen med deres grundlæggende konfigurationer. Selvom de er nyttige til test, skal du huske på, at de i mange tilfælde ikke giver nøjagtigt den samme funktionalitet som de originale enkeltstående.

Du kan finde kodeeksemplerne, der bruges i denne artikel, over på Github.


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