Продажи: 1-800-867-1389

Вопросы переноса секционированных данных в базу данных SQL Azure

Обновлено: Апрель 2014 г.

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

  • Повышение эффективности управления данными

  • Повышение оперативности запросов

  • Увеличение параллелизма запросов

  • Добавление большей вычислительной мощности путем использования нескольких физических серверов

  • Поддержание уровня доступности

  • Преодоление ограничений физического хранилища

  • Снижение ширины таблицы

При рассмотрении вопроса о миграции на платформу базы данных SQL Azure с локального сервера SQL Server могут существовать дополнительные причины для секционирования данных, например следующие:

  • Поддержка многопользовательского режима

  • Доступ к большей вычислительной мощности

  • Предотвращение регулирования

  • Недоступность данных

  • Более экономически эффективные расходы на хранение

  • Ограничения на размер данных

Функции SQL Server, которые обычно используются для секционирования данных в локальных решениях, включают в себя: репликацию, секционирование таблиц, секционированные представления, распределенные секционированные представления, стратегии файловых групп и межбазовые запросы (распределенные запросы). База данных SQL Azure не поддерживает все эти функции, за исключением секционированных представлений. База данных SQL предлагает решение для горизонтального масштабирования, которое недоступно в локальной версии.

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

Авторы: Шон Тинлайн-Джонс (Shaun Tinline-Jones)
Соавторы: Сриджар Пелуру (Sreedhar Pelluru)
Рецензенты: Рама Рамани (Rama Ramani), Валерий Мизонов (Valery Mizonov), Кун Ченг (Kun Cheng), Стив Ховард (Steve Howard)

С точки зрения секционирования репликация может использоваться в таких сценариях, как следующие:

  • Перемещение подмножеств данных из нескольких источников в одно место

  • Единая база данных служит в качестве базы данных с доступом на чтение и запись, а несколько подписчиков этой базы данных служат в качестве доступных только для чтения баз данных с балансировкой нагрузки.

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

Наиболее типичными причинами для реализации репликации являются следующие:

  • Создание доступной только для чтения реплики базы данных OLTP, доступной только для чтения и записи.

  • Ведение «горячего» резервирования копии базы данных.

  • Заполнение промежуточных областей хранения.

  • Обеспечение доступа релевантных данных только подмножеству пользователей.

  • Повышение эффективности вычислений и управления на основе подмножеств данных.

База данных SQL не поддерживает репликацию. Функция базы данных SQL, наиболее близкая функции репликации, — это функция синхронизации данных SQL Azure. Эта функция основывается на триггерах, таблицах отслеживания измененных данных (CDC) и запланированных заданиях для обеспечения репликации данных. Это позволяет реплицировать некоторые таблицы, однако не позволяет выбрать подмножество данных из таблицы.

Во-первых, рассмотрим причины локальной конструкции репликации. Если целью является аварийное восстановление, база данных SQL может его обеспечить. Если целью является географическое аварийное восстановление, то база данных SQL пока не может его обеспечить. Если целью является разгрузка вычислительных ресурсов, где подписчики используют идентичную конструкцию, база данных SQL имеет возможности для горизонтального масштабирования.

Горизонтальное масштабирование в базе данных SQL позволяет повысить масштабируемость и увеличить производительность приложения на уровне баз данных за счет горизонтального секционирования. Одна или несколько таблиц в базе данных разбиваются по строкам и разделяются между несколькими базами данных. Этот тип горизонтального секционирования часто называют шардингом.

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

В данное время база данных SQL не поддерживает секционирование таблиц. База данных SQL позволяет избежать необходимости секционирования таблиц, если целью является решение вопросов емкости диска. Рассмотрите возможность использования решения для горизонтального масштабирования при миграции на базу данных SQL.

Секционированные представления позволяют вам разделить большую таблицу в базе данных на несколько небольших таблиц, содержащих определенные подмножества данных, а затем построить представление UNION ALL на основе небольших таблиц, в результате чего представление будет отображаться как одна таблица, содержащая все данные. Секционированные представления обычно используются для тех же целей, что и секционированные таблицы.

База данных SQL поддерживает секционированные представления, поэтому миграция секционированных представлений в базу данных SQL должна быть простой.

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

На данный момент база данных SQL не поддерживает распределенные секционированные представления. Рассмотрите возможность использования решения для горизонтального масштабирования.

Файловые группы представляют собой именованные коллекции файлов и используются для упрощения размещения данных и для выполнения административных задач, таких как функции резервного копирования и восстановления. Они обычно используются для увеличения производительности базы данных путем хранения данных на нескольких дисках, нескольких контроллерах дисков (избыточного количества независимых дисков) или дисковых системах RAID. При использовании нескольких файловых групп для файлов базы данных можно создавать индивидуальные резервные копии и восстанавливать их также индивидуально.

Файловые группы не поддерживаются в базе данных SQL. Если файловые группы используются для административных целей, нет необходимости беспокоиться по этому поводу, поскольку база данных SQL сама выполняет эти задачи. Если они используются для повышения производительности, рекомендуется использовать решение для горизонтального масштабирования.

Межбазовые запросы (распределенные запросы) обычно используются для доступа к данным, распределенным по нескольким экземплярам SQL Server.

В данный момент модель доступа к данным базы данных SQL не поддерживает межбазовые запросы и команду USE. Межбазовые соединения или сравнения можно запрограммировать в приложении после того, как данные будут возвращены из соответствующих баз данных. Рассмотрите возможность использования решения для горизонтального масштабирования, поскольку это решение секционирования поддерживается в базе данных SQL.

Была ли вам полезна эта информация?
(1500 символов осталось)
Спасибо за ваш отзыв
Показ:
© 2014 Microsoft