Список баз данных в памяти

Список баз данных в памяти

1. обзор

Базы данных в памяти полагаются на системную память, а не на дисковое пространство для хранения данных. Поскольку доступ к памяти быстрее, чем к диску, эти базы данных, естественно, быстрее.

Конечно, мы можем использовать базу данных в оперативной памяти только в приложениях и сценариях, где нет необходимости сохранять данные, или для более быстрого выполнения тестов. Они часто запускаются как встроенные базы данных, что означает, что они создаются при запуске процесса и удаляются при его завершении, что очень удобно для тестирования, поскольку вам не нужно настраивать внешнюю базу данных.

В следующих разделахwe will take a look at some of the most commonly used in-memory databases for the Java environment and the configuration necessary for each of them.

2. База данных H2

H2 - это база данных с открытым исходным кодом, написанная на Java, которая поддерживает стандартный SQL как для встроенных, так и для автономных баз данных. Это очень быстро и содержится в JAR всего около 1,5 МБ.

2.1. Maven Dependency

Чтобы использовать базы данныхH2 в приложении, нам нужно добавить следующую зависимость:


    com.h2database
    h2
    1.4.194

Последнюю версиюH2 database можно загрузить с Maven Central.

2.2. конфигурация

Чтобы подключиться к базе данных в памятиH2, мы можем использовать соединениеString с протоколомmem,, за которым следует имя базы данных. СвойстваdriverClassName, URL, username иpassword могут быть помещены в файл.properties для чтения нашим приложением:

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

Эти свойства обеспечивают автоматическое создание базы данныхmyDb при запуске приложения.

По умолчанию, когда соединение с базой данных закрыто, база данных также закрывается. Если мы хотим, чтобы база данных работала до тех пор, пока работает JVM, мы можем указать свойствоDB_CLOSE_DELAY=-1

Если мы используем базу данных с Hibernate, нам также нужно указать диалект Hibernate:

hibernate.dialect=org.hibernate.dialect.H2Dialect

База данныхH2 регулярно поддерживается и предоставляет более подробную документацию поh2database.com.

3. HSQLDB (база данныхHyperSQL)

HSQLDB - проект с открытым исходным кодом, также написанный на Java, представляющий реляционную базу данных. Он соответствует стандартам SQL и JDBC и поддерживает такие функции SQL, как хранимые процедуры и триггеры.

Он может использоваться в режиме в памяти или может быть настроен для использования дискового пространства.

3.1. Maven Dependency

Чтобы разработать приложение с использованиемHSQLDB, нам понадобится зависимость Maven:


    org.hsqldb
    hsqldb
    2.3.4

Вы можете найти последнюю версиюHSQLDB на Maven Central.

3.2. конфигурация

Свойства соединения, которые нам нужны, имеют следующий формат:

driverClassName=org.hsqldb.jdbc.JDBCDriver
url=jdbc:hsqldb:mem:myDb
username=sa
password=sa

Это гарантирует, что база данных будет создана автоматически при запуске, будет храниться в памяти на время работы приложения и будет удалена после завершения процесса.

Свойство диалектаHibernate дляHSQLDB:

hibernate.dialect=org.hibernate.dialect.HSQLDialect

Файл JAR также содержит менеджер баз данных с графическим интерфейсом. Более подробную информацию можно найти на сайтеhsqldb.org.

4. База данных Apache Derby

Apache Derby - еще один проект с открытым исходным кодом, содержащий систему управления реляционными базами данных, созданнуюApache Software Foundation.

Derby основан на стандартах SQL и JDBC и в основном используется как встроенная база данных, но его также можно запускать в режиме клиент-сервер с помощью инфраструктурыDerby Network Server.

4.1. Maven Dependency

Чтобы использовать базу данныхDerby в приложении, нам нужно добавить следующую зависимость Maven:


    org.apache.derby
    derby
    10.13.1.1

Последнюю версиюDerby database можно найти на Maven Central.

4.2. конфигурация

Строка подключения использует протоколmemory:

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

Чтобы база данных создавалась автоматически при запуске, мы должны указатьcreate=true в строке подключения. База данных закрывается и удаляется по умолчанию при выходе из JVM.

Если вы используете базу данных сHibernate, нам нужно определить диалект:

hibernate.dialect=org.hibernate.dialect.DerbyDialect

Вы можете узнать больше о базе данныхDerby вdb.apache.org/derby.

5. База данных SQLite

SQLite - это база данных SQL, которая работает только во встроенном режиме, либо в памяти, либо в виде файла. Он написан на языке Си, но также может использоваться с Java.

5.1. Maven Dependency

Чтобы использовать базу данныхSQLite, нам необходимо добавить JAR-файл драйвера JDBC:


    org.xerial
    sqlite-jdbc
    3.16.1

Зависимостьsqlite-jdbc можно загрузить с Maven Central.

5.2. конфигурация

Свойства подключения используют класс драйвераorg.sqlite.JDBC и протоколmemory для строки подключения:

driverClassName=org.sqlite.JDBC
url=jdbc:sqlite:memory:myDb
username=sa
password=sa

Это автоматически создаст базу данныхmyDb, если она не существует.

В настоящее времяHibernate не предоставляет диалект дляSQLite, хотя, скорее всего, он появится в будущем. Если вы хотите использоватьSQLite сHibernate, вам нужно создать свой классHibernateDialect.

Чтобы узнать больше оSQLite, перейдите кsqlite.org.

6. Базы данных в памяти в Spring Boot

Spring Boot особенно упрощает использование базы данных в памяти, поскольку она может автоматически создавать конфигурацию дляH2,HSQLDB, иDerby.

Все, что нам нужно сделать, чтобы использовать базу данных одного из трех типов в Spring Boot, - это добавить ее зависимость кpom.xml. Когда инфраструктура обнаруживает зависимость от пути к классам, она автоматически настраивает базу данных.

7. Заключение

В этой статье мы кратко рассмотрели наиболее часто используемые базы данных в памяти в экосистеме Java, а также их основные конфигурации. Хотя они полезны для тестирования, имейте в виду, что во многих случаях они не обеспечивают точно такую ​​же функциональность, как исходные автономные.

Вы можете найти примеры кода, использованные в этой статьеover on Github.