Открыть сервис

Stretch Database

Stretch Database — это функция реляционной системы управления базами данных Microsoft SQL Server, позволяющая прозрачно и динамически перемещать «холодные» (редко используемые) данные из локальной базы данных в облачную базу данных Microsoft Azure SQL Database. Основное назначение технологии — экономия ресурсов локального хранилища и вычислительных мощностей за счёт выноса архивных или исторических данных в облако без изменения схемы базы данных, запросов и клиентских приложений. Stretch Database обеспечивает единую точку доступа к данным, которые физически располагаются частично на локальном сервере, а частично в облаке, при этом запросы выполняются так, как если бы все данные находились локально.

История

Функция Stretch Database была анонсирована корпорацией Microsoft в 2014 году в рамках развития платформы SQL Server 2016. Основной целью было создание гибридного решения, которое позволяло бы организациям, уже использующим локальные инсталляции SQL Server, снижать затраты на хранение данных за счёт облачных ресурсов Azure. В 2016 году Stretch Database стала доступна в финальной версии SQL Server 2016 (поддерживается в редакциях Enterprise и Standard). В 2018 году, с выходом SQL Server 2019, поддержка Stretch Database была прекращена; функция объявлена устаревшей (deprecated). В 2022 году Microsoft официально объявила о завершении поддержки Stretch Database, рекомендовав пользователям переходить на другие технологии гибридного хранения, в частности на Azure SQL Database с функциями уровня данных (Data Tier) и автоматического управления жизненным циклом данных.

Принцип работы

Stretch Database работает на уровне таблиц. Администратор базы данных включает функцию для конкретной таблицы (или её части) и задаёт условия перемещения строк. SQL Server автоматически отслеживает активность данных: строки, которые не обновлялись в течение заданного периода (например, 90 дней), считаются «холодными» и подлежат миграции в облако. Процесс перемещения происходит в фоновом режиме, без блокировок и остановки работы с таблицей.

Архитектура

Архитектурно Stretch Database состоит из двух компонентов:

При выполнении запроса к растянутой таблице оптимизатор запросов SQL Server автоматически определяет, какие строки находятся локально, а какие — в облаке. Если запрос затрагивает только локальные данные, он выполняется без обращения к Azure. Если запрос требует данные из облака, SQL Server отправляет соответствующий подзапрос в Azure, получает результат и объединяет его с локальными данными. Для пользователя и приложений этот процесс полностью прозрачен.

Условия перемещения данных

Администратор может настроить два основных параметра:

После включения Stretch Database для таблицы любые изменения (UPDATE, DELETE) в перемещённых строках невозможны — они становятся доступными только для чтения. Это ограничение является принципиальным, так как Stretch Database ориентирована на архивные, неизменяемые данные.

Преимущества

Основные преимущества использования Stretch Database:

Недостатки и ограничения

Stretch Database имеет ряд существенных ограничений, которые привели к её постепенному вытеснению другими решениями:

Сравнение с альтернативами

На смену Stretch Database пришли более современные и гибкие технологии управления жизненным циклом данных в экосистеме Microsoft:

ТехнологияОписаниеПреимущества перед Stretch Database
Azure SQL Database с функциями уровня данныхАвтоматическое перемещение «холодных» данных на более дешёвые уровни хранения (например, из Premium в Standard) в рамках одной облачной базы данных.Полная поддержка изменений, индексов, транзакций; отсутствие зависимости от локальной инфраструктуры.
Функция PARTITION SWITCH и архивированиеРучное или автоматическое перемещение партиций таблицы в отдельные архивные таблицы, которые могут храниться на более дешёвых носителях или в Azure Blob Storage.Более гибкое управление, возможность обновления архивных данных, поддержка всех типов данных.
Azure Data Factory и Azure Synapse AnalyticsПериодическая выгрузка данных из локальной базы в облачное хранилище для аналитики и долгосрочного хранения.Высокая производительность, масштабируемость, поддержка сложных преобразований данных.

Пример использования

Типичный сценарий применения Stretch Database — архивирование исторических данных в системах учёта, например, в бухгалтерских или CRM-системах. Предположим, что таблица Orders содержит записи о заказах за последние 10 лет. Заказы старше 1 года практически не изменяются и редко запрашиваются. Администратор включает Stretch Database для таблицы Orders и задаёт фильтр: перемещать строки, которые не обновлялись более 365 дней. В результате:

Критика

Stretch Database подвергалась критике за недостаточную прозрачность стоимости. Пользователи отмечали, что затраты на хранение в Azure и на сетевой трафик могут превысить экономию от освобождения локального хранилища. Кроме того, невозможность изменять перемещённые данные делала функцию неприменимой во многих реальных сценариях, где требуется хотя бы редкая корректировка архивных записей. Отсутствие поддержки индексов на облачных данных приводило к деградации производительности запросов, затрагивающих большие объёмы архивных данных. В итоге, несмотря на оригинальную концепцию, Stretch Database не получила широкого распространения и была заменена более практичными решениями.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →