Источник:
https://blogs.technet.microsoft.com/.../azure-coming/
==============
В продолжении поста
NAVObjectPermissionsReportWebApp. О чудный, дивный мир…
На волне оптимизма после отпуска задался я целью переписать
приложение с использованием
Spring Boot и…
Azure SQL Database . Не без проблем, но все же удалось это сделать.
Первое, что понравилось при создании сервиса Azure — это то, что все как-то активно развивается.
В апреле 2016 года и в октябре 2016 года (прошло всего полгода), если сравнивать по ощущениям, — наполняемость этого виртуального магазина выросла.
В моде сейчас уже
новый Azure портал и все вскоре, как я понял, будет только через него.
Почему собственно я пришел к мысли воспользоваться Azure SQL Database.
Первоначально я создал Spring Boot приложение с использованием локального MySQL и все работало. Проект представлен
здесь.
Но вот при использовании удаленного сервиса ClearDB MySQL Database из Azure получаю ‘max_user_connections’ ошибку. Долго не мог понять. Оказалось, я использовал бесплатный сервис ClearDB MySQL Database, а там только 4 коннекта. А этот умный Spring при запущенном web приложении сразу снимает 10 коннектов.
Выбрать платный сервисный план (с большим числом коннектов) для сервиса ClearDB MySQL Database мне не удалось. Дебетовая карта к моему профилю в Azure не привязана. Я трачу только то, что дает MSDN подписка.
По идее, отсутствие карты не должно быть препятствием (деньги с MSDN подписки присутствуют на профиле), но вот c ClearDB MySQL Database такой фокус не прошел. Все-таки, провайдер этой услуги не сам MS. А вот с Azure SQL Database все прокатило. Спокойно списывает c MSDN лимита, даже без привязанной карты.
Выбрал минимальную конфигурацию на 5
DTU.
Тут стоит упомянуть что Azure SQL Database все-таки пока не совсем полностью все имеет что и обычный SQL Database.
Про лимиты можно почитать
тут.
Моему простому приложению это все не помеха. Единственное, что пришлось столкнутся с тем, что данные можно закачать, похоже, только через
bcp утилиту. Но зато качает быстро, не сравнить с тем, что мне пришлось ожидать при закачке в MySQL.
Подключаться к базе Azure SQL Database можно через обычный
Microsoft SQL Server Management Studio
Редактировать структуру таблицы удобно через
Microsoft SQL Server Data Tools
Главное тут не забыть про настройку Firewall в Azure. Почитать про это можно
тут и
тут .
В итоге запускаем bcp:
// Обратите внимание, что имя поля сделал pinsert вместо просто insert.. иначе ругалась система при построении запроса через
Spring Data JPA (зарезервированное слово что ли.. так и не понял) и ругалась именно что при использовании Azure SQL Database, на MySQL не было проблемы.
По bcp приведу ключевой текст:
===
create template for .fmt file:
bcp data format nul -f C:\Users\alexef\IdeaProjects\data_format_csv.fmt -c -t ; -S alexef0test0navsqlserverazure.database.windows.net,1433 -d navobjectpermissionsreportsqldatabase -U -P
modify .fmt for skip first column:
—
11.0
14
1 SQLCHAR 0 80 «;» 2 modulename SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 80 «;» 3 objecttype SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 80 «;» 4 description SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 21 «;» 5 rangefrom «»
5 SQLCHAR 0 21 «;» 6 rangeto «»
6 SQLCHAR 0 10 «;» 7 pread SQL_Latin1_General_CP1_CI_AS
7 SQLCHAR 0 10 «;» 8 pinsert SQL_Latin1_General_CP1_CI_AS
8 SQLCHAR 0 10 «;» 9 pmodify SQL_Latin1_General_CP1_CI_AS
9 SQLCHAR 0 10 «;» 10 pdelete SQL_Latin1_General_CP1_CI_AS
10 SQLCHAR 0 10 «;» 11 pexecute SQL_Latin1_General_CP1_CI_AS
11 SQLCHAR 0 80 «;» 12 productline SQL_Latin1_General_CP1_CI_AS
12 SQLCHAR 0 21 «;» 13 moduleid «»
13 SQLCHAR 0 20 «;» 14 versionname SQL_Latin1_General_CP1_CI_AS
14 SQLCHAR 0 21 «\r\n» 15 moduleid2 «»
—
load data:
bcp data in C:\Users\alexef\IdeaProjects\ObjectPermissionsexternal_CSV.csv -f C:\Users\alexef\IdeaProjects\data_format_csv.fmt -S alexef0test0navsqlserverazure.database.windows.net,1433 -d navobjectpermissionsreportsqldatabase -U -P -F2
===
Про создание собственно Spring Boot приложения много писать не буду (off—topic).
Единственное что прочитайте
тут
И приведу строку для регистрации SQL драйвера в Maven:
===
mvn install:install-file -Dfile=C:\Distr\_Java\sqljdbcdownloadmicrosoft\sqljdbc_6.0.7728.100_enu\sqljdbc_6.0\enu\sqljdbc42.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.2 -Dpackaging=jar
===
Собственно, весь проект лежит:
https://github.com/finn777/navobject...uresqldatabase
И само приложение:
http://alexef0test0nav.azurewebsites...sqldatabase-1/
И вот что еще я обнаружил. Я пересоздал Tomcat сервис, что уже использовал ранее.
Удалил и создал с тем же именем. Потом сделал Deploy, в том числе, и старому приложению. Все отработало. Только теперь уже более новая версия Tomcat крутится.
// Все выставил в Newest что бы была свежая версия JVM. А то долго не мог понять почему свежее приложение ошибку ‘The requested resource is not available’ на локальном Tomcat не выдает, а на удаленном Tomcat выдает.
Приведу настройки:
Кстати добраться до настроечного tomcat-users.xml можно так:
И далее уже через обычный интерфейс, если задали Администратора.
Описанная конфигурация, по идее, должна списывать только за Azure SQL Database (3 фунта в месяц).
Tomcat сейчас в бесплатной конфигурации. Если что можно увеличить пропускную способность на платную, если не будет хватать (Для теста я делал Scale up до Basic и обратно во Free – все отрабатывает).
Пока посмотрю пользуются ли вообще чем-то.
Тулов для мониторинга в Azure много:
Источник:
https://blogs.technet.microsoft.com/.../azure-coming/