Упаковка приложения Play Framework и встроенной базы данных

Я реализовал серверное приложение с Play Framework. Я создал собственные пакеты для различных операционных систем (Linux, Windows, Mac OS X) с помощью SBT. Native Packager.
Для этого приложения требуется база данных NoSQL. В частности, я использую MongoDB. Есть ли способ встроить двоичный файл/пакет MongoDB в мой родной пакет? Это лучшая практика? Или вы предлагаете установить MongoDB и мое приложение Play с двумя разными пакетами?
Если невозможно/не рекомендуется встраивать MongoDB в пакет, вы предлагаете другую СУБД (например, База данных Nitrite)? Спасибо


person Mattia Micomonaco    schedule 21.07.2018    source источник


Ответы (1)


Это не совсем лучшая практика. В Play есть встроенная БД H2 в памяти, но она предназначена только для разработки (потому что она быстрее, чем то, что также читает/записывает на диск).

Вы действительно хотите, чтобы ваш экземпляр Mongo (или любого другого хранилища данных, которое вы решите использовать) работал в другом процессе и был упакован, развернут, остановлен и запущен отдельно от вашего приложения Play.

Вероятно, вы могли бы выяснить, как упаковать его с вашим приложением Play, а затем запустить какой-нибудь скрипт во время запуска приложения, чтобы настроить базу данных и загрузить любые существующие данные в -dbpath, т.е. всякий раз, когда вы повторно развертываете/перезапускаете свое приложение. Но тогда вам придется останавливать/повторно развертывать свои двоичные файлы Mongo каждый раз, когда вы повторно развертываете изменение кода. Вы можете обновлять свое приложение несколько раз в год, но вряд ли вы захотите обновлять свои двоичные файлы Mongo так же часто. Я мог бы продолжать, но не делай этого. Лучше всего управлять хранилищами данных отдельно от приложений.

person jacks    schedule 26.07.2018