2016-12-22 3 views
2

Я ищу для реализации некоторых «асинхронных триггеров» в базе данных Azure SQL. Был this other question, который задал этот же вопрос с почти такими же потребностями, как мои, но для SQL Server 2005/2008. Ответ заключался в использовании Service Broker. И это отличный ответ, который отлично удовлетворит мои потребности, если он будет поддерживаться в Azure SQL Databases, но это не так.Асинхронные триггеры в базе данных Azure SQL

Моя особая потребность в том, что у нас имеется довольно небольшой набор входов, выбранных и сохраненных пользователем. Пара этих входных данных представляет собой идентификацию определенных алгоритмов и отдельных данных совокупного уровня в одну запись одной таблицы. После сохранения мы хотим, чтобы триггер выполнял выбранные алгоритмы и обрабатывал данные на уровне совокупности, чтобы разбить его на десятки тысяч записей в несколько разных таблиц. Это 2-8 секунд для обработки, в зависимости от алгоритмов. (Я уверен, что я мог бы оптимизировать это немного больше, но я не думаю, что могу получить это быстрее, чем 2-5 секунд, только из-за логики, которая должна быть встроена в него.)

Меня не интересует установка SQL Server внутри виртуальной машины в Azure - я специально хочу использовать базу данных Azure SQL по многим причинам, я не собираюсь входить в этот пост.

Так что мой вопрос: Есть ли хороший/очевидный способ сделать это в базе данных Azure SQL? Я не могу придумать. Наиболее очевидные варианты, которые я могу видеть, либо не в Azure SQL базы данных или не-стартеры:

  1. Используйте реальные триггеры и не асинхронные триггеры, но это проблема, потому что это занимает много секунд эти триггеры для обработки, как он сжимает числа на основе сохраненных входов.
  2. Используйте систему массового обслуживания бедных людей в базе данных (т. Е. Новую таблицу, которая рассматривается как очередь и вставляет записи в нее в виде сообщений), и опрос, полученный от внешнего/внешнего источника (функции или веб-задания или что-то еще). Я бы очень хотел избежать этого из-за дополнительной сложности и усилий. Но, честно говоря, это то, к чему я склоняюсь, если я не могу получить лучшую идею от умных людей здесь!

Спасибо за помощь!


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

+1

https://azure.microsoft.com/en-us/blog/azure-automation-your-sql-agent-in-the-cloud/ – gotqn

ответ

1

насколько я знаю, это не возможно сделать непосредственно в Azure SQL базы данных, но существует несколько вариантов:

Как упоминалось в комментарии @gotqn, вы можете использовать Azure Automation/Runbooks; applied to Azure SQL specifically.

Вы также можете ознакомиться с database jobs.