Рубрики
Без рубрики

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

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

Автор оригинала: baeldung.

1. Обзор

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

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

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

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

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

2.1. Зависимость Maven

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


    com.h2database
    h2
    1.4.194

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

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

Для подключения к базе данных H2 в памяти мы можем использовать соединение String с протоколом mem, за которым следует имя базы данных. Свойства driverClassName, URL, имя пользователя и пароль могут быть помещены в файл .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

Для разработки приложения с использованием 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 dialect для 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

Чтобы использовать базу данных 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 database на db.apache.org/derby .

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

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

5.1. Зависимость Maven

Чтобы использовать базу данных 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

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

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

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

6. Базы данных в памяти при весенней загрузке

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

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

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

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

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