Поделиться через


Стратегии архитектуры для оптимизации производительности данных

Применяется к этой рекомендации по эффективности производительности платформы Azure Well-Architected Framework:

PE:08 Оптимизация производительности данных. Оптимизируйте хранилища данных, секции и индексы для их предполагаемого и фактического использования в рабочей нагрузке.

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

Определения

Срок Definition
Теорема CAP Платформа, используемая для рассмотрения согласованности, доступности и отказоустойчивости секций, которая поможет объяснить компромиссы в согласованности данных.
Перестроение индекса базы данных Действие обслуживания, которое удаляет и создает индекс.
Реорганизация индекса базы данных Действие обслуживания, оптимизирующее текущий индекс базы данных.
Хранилище данных Ресурс, в который хранятся такие данные, как база данных, хранилище объектов или общая папка.
Итоговая согласованность Модель синхронизации данных, которая позволяет временно несогласованности реплик данных до их синхронизации.
Index Структура базы данных, предоставляющая быстрый доступ к элементам.
Интерактивная аналитическая обработка (OLAP) Технология, которая упорядочивает крупные бизнес-базы данных, поддерживает сложный анализ и выполняет сложные аналитические запросы, не затрагивая транзакционные системы.
Обработка транзакций в сети (OLTP) Технология, которая записывает бизнес-взаимодействие по мере их возникновения в повседневных операциях организации.
Оптимистическая конкурентность Подход к обновлению баз данных, использующих моментальные снимки для обновления, а не традиционных механизмов блокировки, повышения производительности и масштабируемости.
Теорема PACELC Платформа, используемая для рассмотрения отказоустойчивости секций, доступности, согласованности и задержки для объяснения компромиссов в согласованности данных.
Partitioning Процесс физического разделения данных на отдельные хранилища данных.
Настройка запроса Процесс, оптимизирующий скорость запроса базы данных.
Реплика чтения Динамическая копия базы данных-источника, которая позволяет выгрузить трафик чтения из базы данных записи.

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

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

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

  • Оптимизация производительности запросов. Анализ и оптимизация запросов, выполняемых в рабочей нагрузке. Используйте такие методы, как оптимизация запросов, индексирование и кэширование. Чтобы определить узкие места, используйте планы запросов и средства мониторинга производительности, а затем внесите необходимые улучшения.

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

Данные профиля

Профилирование данных включает в себя изучение данных из источника и сбор сведений об этом. Цель состоит в том, чтобы понять качество, структуру и характеристики данных рабочей нагрузки. Этот процесс позволяет выявлять такие проблемы, как отсутствующие значения, дубликаты, несогласованные форматы и другие аномалии. Для эффективного профилирования данных рассмотрим следующие стратегии.

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

  • Анализ тома данных. Оцените объем данных, чтобы понять общие шаблоны размера и роста. Определите количество записей или документов и размер отдельных таблиц или коллекций. Эти сведения помогают оценить требования к хранилищу и определить проблемы с масштабируемостью.

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

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

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

Мониторинг производительности данных

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

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

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

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

Секционирование данных

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

Стратегия Definition Example Случаи использования
Вертикальное секционирование Разделите таблицу на небольшие таблицы, выбрав определенные столбцы или поля для каждой секции. Каждая секция представляет подмножество полных данных. Если у вас есть таблица с столбцами A, B, C и D, можно создать одну таблицу с столбцами A и B и другой с столбцами C и D. — Таблица содержит множество столбцов, но запросы не обращаются ко всем столбцам вместе.
— Некоторые столбцы больше, чем другие, и их разделение может повысить производительность ввода-вывода.
— Различные части данных имеют различные шаблоны доступа.
Горизонтальное секционирование Разделение данных на основе строк или диапазонов значений (также называемых сегментированием). Каждая секция содержит подмножество строк с аналогичными характеристиками. Если у вас есть таблица с строками 1–1000, можно создать одну секцию со строками 1–500 и другой с строками 501–1000. — набор данных слишком велик для одного расположения или сервера.
— Доступ к данным осуществляется на основе определенных диапазонов или фильтров.
— необходимо распределить рабочую нагрузку между физическими узлами или серверами для повышения производительности.

Чтобы секционировать данные, рассмотрите следующие действия.

  • Анализ данных и запросов. Анализ шаблонов данных и запросов для определения подходящих стратегий секционирования или сегментирования. Общие сведения о характере данных, шаблонов доступа и требований к распределению.

  • Определите ключ. Выберите ключ секционирования или сегментирования для распределения данных между секциями или сегментами. Тщательно выберите ключ на основе характеристик данных и требований к запросу.

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

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

Дополнительные сведения см. в руководстве по секционированием данных.

Оптимизация запросов к базе данных

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

  • Перезапись запросов. Просмотрите и проанализируйте сложные запросы, чтобы определить возможности их перезаписи. Рассмотрим логику реструктуризации запросов, устранение избыточных операций или упрощение синтаксиса запросов.

  • Избегайте проблемы запроса N+1. Свести к минимуму количество циклов в базу данных с помощью соединений и пакетной извлечения для эффективного получения связанных данных.

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

  • Используйте подсказки индекса. Используйте подсказки индекса, чтобы ядро СУБД может указать использование индексов при выполнении запроса. Указания индекса позволяют оптимизатору выбрать наиболее подходящие индексы.

  • Запросы кэша. Храните результаты часто выполняемых запросов в памяти. Кэширование запросов устраняет необходимость многократного выполнения одного и того же запроса и снижает затраты на обработку запросов.

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

  • Мониторинг и настройка. Отслеживайте метрики производительности запросов, такие как среда выполнения, использование ресурсов и пропускная способность запросов. Используйте средства профилирования базы данных и функции мониторинга для выявления плохо выполняемых запросов. Оцените и настройте планы запросов на основе собранных данных о производительности. Анализ планов запросов и статистики ожидания для выявления узких мест. Используйте эти сведения для оптимизации производительности запросов.

Оптимизация производительности индекса

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

  • Анализ шаблонов запросов. Общие сведения о шаблонах запросов, выполняемых в базе данных. Определите запросы, которые выполняются часто и могут снизить производительность. Анализ шаблонов запросов, чтобы определить, какие индексы полезны для оптимизации производительности.

  • Оцените существующие индексы. Просмотрите существующие индексы в базе данных. Оцените их использование, эффекты производительности и релевантность шаблонов запросов. Определите избыточные или неиспользуемые индексы, которые можно удалить, чтобы повысить производительность записи и сократить затраты на хранение.

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

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

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

  • Балансируйте размер индекса. Избегайте создания индексов для столбцов с низкой кратностью или столбцами с низким числом различных значений. Такие индексы могут быть неэффективными и увеличить размер базы данных. Вместо этого индексные столбцы с высокой избирательностью.

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

  • Тестирование и проверка. Перед пересмотром индексов в рабочей среде выполните тщательное тестирование и проверку. Измеряйте влияние изменений индекса на производительность с помощью репрезентативных рабочих нагрузок. Проверьте улучшения в соответствии с предопределенными тестами.

Компромисс. Индексы B-дерева могут иметь большие затраты на хранение, а запросы точного соответствия могут быть медленными. Хэш-индексы не подходят для запросов диапазона или операторов сравнения. Полнотекстовые индексы могут иметь высокие требования к хранилищу, а запросы нетекстовых данных могут быть медленными.

Рассмотрите возможность сжатия данных

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

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

Компромисс. Для сжатия и распаковки данных требуются вычислительные ресурсы, такие как ЦП и память. Чем больше данных вы сжимаете, тем больше необходимых ресурсов.

Архивирование и очистка данных

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

  • Сокращение объема данных: уменьшение объема данных означает более быстрое время обработки, обеспечивая быстрые ответы на запросы пользователей.

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

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

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

Оптимизация загрузки хранилища

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

Использование кэширования

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

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

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

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

  • Кэширование сети доставки содержимого: используйте этот метод для кэширования веб-содержимого на распределенных сетевых серверах, чтобы уменьшить задержку и улучшить доставку содержимого. Кэширование сети доставки содержимого действует для статического содержимого, например изображений, CSS-файлов и файлов JavaScript. Сети доставки содержимого хранят копии содержимого в нескольких расположениях по всему миру, чтобы пользователи могли получить доступ к содержимому с сервера, который находится рядом с ними географически.

Использование реплик чтения

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

Если у вас есть рабочая нагрузка с несколькими репликами данных, которые вы планируете синхронизировать, полезно моделировать эту распределенную систему с помощью теоремы PACELC. Теорема PACELC помогает понять задержку и компромисс в непартийном состоянии системы. Используйте эти сведения, чтобы выбрать подсистему СУБД и стратегию синхронизации данных, которая лучше всего подходит для системы в секционированного и непартиментном состоянии. Дополнительные сведения см. в разделе "Разделение обязанностей команд и запросов" (CQRS).

Оптимизация согласованности данных

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

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

Оптимизация обновлений данных

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

При оптимистическом параллелизме каждая операция обновления включает версию или метку времени, представляющую состояние данных во время обновления. При обнаружении конфликтующего обновления система устраняет конфликт, отклоняя обновление или объединяя изменения.

Оптимистическая параллелизм сводит к минимуму конфликт и позволяет выполнять одновременные обновления без необходимости блокировки. Это сокращает время ожидания ресурсов и обеспечивает высокую пропускную способность.

Оптимизация перемещения и обработки данных

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

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

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

  • Пакетная обработка: группировать аналогичные задачи вместе, чтобы сократить издержки, вызванные повторяемыми операциями. Обработка нескольких задач в пакете, чтобы сократить общее время обработки.

Оптимизация проектирования хранилища

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

Проектирование близкого взаимодействия с данными

Близость данных относится к стратегическому расположению данных ближе к пользователям или службам, которые обращаются к нему чаще всего. Уменьшая физическое или логическое расстояние между данными и пользователями, близость данных обеспечивает более быстрый доступ к данным и улучшенную скорость реагирования. Чтобы оптимизировать проектирование для близкого взаимодействия, рассмотрите следующие стратегии:

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

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

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

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

Использование сохраняемости polyglot

Сохраняемость polyglot — это практика использования нескольких технологий хранения данных для хранения и управления различными типами данных в приложении или системе. Различные типы баз данных или решений хранилища служат разным требованиям к данным.

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

Проектируйте схему для каждой технологии хранения данных на основе требований данных. Для реляционных баз данных можно создать нормализованные таблицы с соответствующими связями. Для баз данных NoSQL можно определить структуры документов или пары "ключ-значение". Разработайте необходимые компоненты для взаимодействия с каждой технологией хранения данных, такими как API, уровни доступа к данным или конвейеры интеграции данных. Убедитесь, что приложение может считывать и записывать данные в соответствующие хранилища данных.

Компромисс. Структура данных с низкой нормализацией может повысить производительность, но привести к сложностям.

Отдельные системы OLTP и OLAP

Чтобы разделить системы OLTP и OLAP , проектируйте и развертывайте отдельные системы для транзакционной обработки и аналитических задач обработки. Это разделение позволяет оптимизировать каждую систему для конкретной рабочей нагрузки и характеристик.

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

Системы OLAP используются для сложной аналитической обработки и отчетности. Они обрабатывают большие объемы данных и выполняют интенсивные вычисления и агрегаты. Системы OLAP используются для таких задач, как бизнес-аналитика, интеллектуальный анализ данных и поддержка принятия решений. Системы OLAP определяют производительность запросов, агрегирование данных и многомерный анализ.

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

Упрощение функций Azure

Данные профилирования: Azure предлагает средства и службы, которые можно использовать для профилирования данных, таких как каталог данных Azure, Azure Purview и Azure Synapse Analytics. Эти средства позволяют извлекать, преобразовывать и загружать данные из различных источников, выполнять проверки качества данных и получать аналитические сведения о данных.

Мониторинг производительности данных. Для мониторинга производительности данных можно использовать Azure Monitor для сбора и анализа метрик инфраструктуры, журналов и данных приложения. Вы можете интегрировать Monitor с другими службами, такими как Application Insights. Application Insights обеспечивает мониторинг производительности приложений и поддерживает множество платформ.

Application Insights собирает данные об использовании и производительности. С помощью Log Analytics можно сопоставить эти данные с данными конфигурации и производительности в ресурсах Azure.

Вы можете использовать функцию аналитики SQL Azure и Azure Cosmos DB для мониторинга базы данных. Эта функция позволяет диагностировать и настраивать проблемы с производительностью базы данных.

Секционирование данных: Azure предлагает различные стратегии секционирования для различных хранилищ данных. Каждое хранилище данных может иметь различные рекомендации и параметры конфигурации для секционирования данных. Дополнительные сведения см. в стратегиях секционирования данных.

Оптимизация запросов к базе данных и производительности индекса. Используйте функцию анализа производительности запросов базы данных SQL Azure для оптимизации запросов, таблиц и баз данных. Эту функцию можно использовать для выявления и устранения проблем с производительностью запросов.

Для реляционных баз данных следует следовать рекомендациям по проектированию индексов, руководству по индексу SQL Server и руководству по индексу Azure Cosmos DB. Используйте базу данных SQL для автоматической настройки запросов для повышения производительности.

В базах данных SQL следует регулярно реорганизовать или перестроить индексы. Определите медленные запросы и настройте их для повышения производительности. Многие ядра СУБД имеют функции настройки запросов. Дополнительные сведения см. в рекомендациях по производительности запросов.

Azure Cosmos DB имеет политику индексирования по умолчанию , которая индексирует каждое свойство каждого элемента и применяет индексы диапазона для любой строки или числа. Эта политика обеспечивает эффективную производительность запросов, и вам не нужно управлять индексами заранее.

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

Оптимизация структуры хранилища: Azure предлагает множество различных хранилищ данных в соответствии с потребностями рабочей нагрузки. Общие сведения о типах хранилища данных и выборе хранилища данных Azure для приложения.

Контрольный список эффективности производительности

Ознакомьтесь с полным набором рекомендаций.