Списък с бази данни в паметта

1. Общ преглед

Базите данни в паметта разчитат на системната памет, за разлика от дисковото пространство за съхранение на данни. Тъй като достъпът до паметта е по-бърз от достъпа до диска, тези бази данни са естествено по-бързи.

Разбира се, можем да използваме база данни в паметта само в приложения и сценарии, при които не е необходимо данните да се запазват или с цел по-бързо изпълнение на тестовете. Те често се изпълняват като вградени бази данни, което означава, че се създават при стартиране на процеса и се изхвърлят, когато процесът приключи, което е супер удобно за тестване, защото не е необходимо да настройвате външна база данни.

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

2. H2 база данни

H2 е база данни с отворен код, написана на Java, която поддържа стандартен SQL както за вградени, така и за самостоятелни бази данни. Той е много бърз и се съдържа в JAR от само около 1,5 MB.

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

Това гарантира, че базата данни ще бъде създадена автоматично при стартиране, ще се намира в паметта за цялото време на приложението и ще бъде изтрита, когато процесът приключи.

В хибернация диалект имота за HSQLDB е:

hibernate.dialect=org.hibernate.dialect.HSQLDialect

JAR файлът съдържа и Database Manager с GUI. Повече информация можете да намерите на уебсайта 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 може да бъде намерена на Maven Central.

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

Свързващият низ използва протокола на паметта :

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 база данни, която работи само във вграден режим, или в памет, или запазена като файл. Написан е на езика C, но може да се използва и с Java.

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

За да използваме база данни на SQLite , трябва да добавим JDBC драйвер JAR:

 org.xerial sqlite-jdbc 3.16.1 

Зависимостта sqlite-jdbc може да бъде изтеглена от Maven Central.

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

Свойствата на връзката използват клас драйвер org.sqlite.JDBC и протоколът за памет за низа на връзката:

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, заедно с техните основни конфигурации. Въпреки че са полезни за тестване, имайте предвид, че в много случаи те не предоставят абсолютно същата функционалност като оригиналните самостоятелни.

Примерите за кодове, използвани в тази статия, можете да намерите в Github.