2016-11-17 1 views
1

Я пытаюсь начать с интеграции Spring-Boot с базами данных.Использование как в памяти, так и в производственной базе данных в приложении Spring Boot

Я читал официальную 29.1 Configure a DataSource тему, и это довольно ясно для меня.

Я хочу опубликовать заявку с Heroku, поэтому я смотрю официальную конфигурацию проекта sample.

Часть pom.xml:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    //... 
    <dependency> 
     <groupId>org.hsqldb</groupId> 
     <artifactId>hsqldb</artifactId> 
    </dependency> 
    //... 
    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>9.4-1203-jdbc42</version> 
    </dependency> 
    <dependency> 
     <groupId>org.liquibase</groupId> 
     <artifactId>liquibase-core</artifactId> 
     <version>3.4.1</version> 
    </dependency> 

мне интересно, сейчас, что является целью использования в памяти базы данных, как HSQLDB с нормальным производственным типа базы данных (Postgres здесь)? Что такое случай, когда это может быть полезно?

Более того, как это будет работать?

EDIT

Ofc, я что-то пропустил в случае примера проекта я упоминал. Комментарий в application.properties объяснить, почему HSQL используется:

# Database Config 
# Un-comment these lines to connect to a database. When commented out, you automatically get an in-memory-database. 
#spring.jpa.hibernate.ddl-auto=update 

ответ

1

Там может быть несколько причин, но на самом деле его до, как вы определяете ваша архитектура/потребности:

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

db как postgres может использоваться как дополнение (опять же, в зависимости от того, что вам нужно/нужно), чтобы хранить больше «статических», наименее используемой информации или просто сохранения данных.

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

Надеется, что это помогает, SERGIO

+0

действительно полезно. Спасибо, однако мне нужно спросить - как это будет работать в примере, который я опубликовал? Как я вижу, есть такие вещи, как кеш, пользовательский сеанс и т. Д. - только обычный репозиторий JPA. Итак, почему существует hsql db? – ilovkatie

+0

Выполнение быстрого поиска .. по умолчанию выглядит как hsqldb, но в примере он был изменен на postgres (из src выглядит как его единственный используемый). –

+0

Мне нужно было бы скомпилировать и протестировать (не могу сделать это сейчас .. на работе) .. но если вы прокомментируете эту зависимость, она должна работать (опять же .. не на 100% уверен в этом .. проверьте это) ... check: https://devcenter.heroku.com/articles/getting-started-with-spring-mvc-hibernate «По умолчанию сгенерированное приложение настраивает гиперзвуковую базу данных в памяти. Однако настоятельно рекомендуется использовать та же база данных локально, что и в производстве. Поэтому мы переключим приложение на использование Postgres с помощью этой команды Roo: –

3

У меня был 2 случай для этого:

  1. Testing цель - вы можете использовать его, когда вы делаете автоматизированное тестирование, так что вам не нужны настроить «реальное» производство, такое как база данных, но скорее имеет что-то, что будет устанавливать hsql как таковое и заселить его - может быть огромная экономия в ресурсах

  2. Кэширование в памяти - в ситуации, когда вам требуется не только ключ- кеширование ценности, но s omethign более гибкий, как извлечение на основе фильтра (несколько ключей, которые могут быть объединены по-разному). HSQL отлично подходит для него, поскольку вы можете кэшировать все (или часть его) в гиперссылке, а извлечение из него происходит быстрее, чем «реальный», база данных. Кроме того, вы можете использовать его для кэширования некоторых результатов бизнес-логики на основе данных из базы данных и предоставления этих результатов от HyperSQL по любому запросу - это может быть огромная экономия времени обработки

Смежные вопросы