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


Общие сведения о моделях хранилища данных

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

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

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

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

Заметка

Узнайте больше о выявлении и проверке требований к службе данных для перехода на облачные технологии в Microsoft Cloud Adoption Framework для Azure. Кроме того, вы также можете узнать о выборе средств хранения и служб.

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

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

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

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

Службы Azure

Загруженность

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

Тип данных

  • Данные высоко нормализованы.
  • Схемы базы данных обязательны и применяются.
  • Связи "многие ко многим" между сущностями данных в базе данных.
  • Ограничения определяются в схеме и накладываются на любые данные в базе данных.
  • Для данных требуется высокая целостность. Индексы и связи должны поддерживаться точно.
  • Данные требуют строгой согласованности. Транзакции функционируют таким образом, чтобы все данные оставались 100% согласованными для всех пользователей и процессов.
  • Размер отдельных записей данных — от малого до среднего.

Примеры

  • Управление инвентаризацией
  • Управление заказами
  • База данных отчетов
  • Бухгалтерский учет

Хранилища ключей и значений

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

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

схема хранилища «ключ-значение»

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

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

Службы Azure

Загруженность

  • Доступ к данным осуществляется с помощью одного ключа, например словаря.
  • Не требуются соединения, блокировки или объединения.
  • Механизмы агрегирования не используются.
  • Вторичные индексы обычно не используются.

Тип данных

  • Каждый ключ связан с одним значением.
  • Схема не применяется принудительно.
  • Нет связей между сущностями.

Примеры

  • Кэширование данных
  • Управление сеансами
  • Предпочтения пользователей и управление профилями
  • Рекомендации по продукту и обслуживание объявлений

Базы данных документов

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

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

схема хранилища документов

Служба Azure

Загруженность

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

Тип данных

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

Примеры

  • Каталог продуктов
  • Управление содержимым
  • Управление инвентаризацией

Базы данных Graph

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

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

схема базы данных документов

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

Службы Azure

Загруженность

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

Тип данных

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

Примеры

  • Организационные диаграммы
  • Социальные графы
  • Обнаружение мошенничества
  • Рекомендательные движки

Аналитика данных

Хранилища аналитики данных предоставляют массовые параллельные решения для приема, хранения и анализа данных. Данные распределяются по нескольким серверам для максимальной масштабируемости. Форматы больших файлов данных, такие как файлы разделителей (CSV), parquetи ORC, широко используются в аналитике данных. Исторические данные обычно хранятся в хранилищах данных, таких как блоб-хранилище или Azure Data Lake Storage2-го поколения, которые затем используются Azure Synapse, Databricks или HDInsight в качестве внешних таблиц. Типичный сценарий использования данных, хранящихся в виде файлов Parquet для повышения производительности, описан в статье Использование внешних таблиц с Synapse SQL.

Службы Azure

Загруженность

  • Аналитика данных
  • Корпоративная бизнес-аналитика

Тип данных

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

Примеры

  • Корпоративное хранилище данных

Базы данных семейства столбцов

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

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

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

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

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

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

Службы Azure

Загруженность

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

Тип данных

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

Примеры

  • Рекомендации
  • Персонализация
  • Данные датчика
  • Телеметрия
  • Обмен сообщениями
  • Аналитика социальных сетей
  • Веб-аналитика
  • Мониторинг активности
  • Погодные и другие данные временных рядов

Базы данных поисковой системы

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

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

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

Служба Azure

Загруженность

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

Тип данных

  • Полуструктурированный или неструктурированный текст
  • Текст со ссылкой на структурированные данные

Примеры

  • Каталоги продуктов
  • Поиск сайта
  • Лесозаготовка

Базы данных временных рядов

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

Служба Azure

Загруженность

  • Записи обычно добавляются последовательно в порядке времени.
  • Подавляющее большинство операций (95-99%) являются операциями записи.
  • Обновления редки.
  • Удаления выполняются группами и охватывают смежные блоки или записи.
  • Данные считываются последовательно в порядке возрастания или убывания времени, часто параллельно.

Тип данных

  • Метка времени используется в качестве первичного ключа и механизма сортировки.
  • Теги могут определять дополнительные сведения о типе, источнике и других сведениях о записи.

Примеры

  • Мониторинг и телеметрия событий.
  • Датчик или другие данные Интернета вещей.

Хранилище объектов

Хранилище объектов оптимизировано для хранения и извлечения больших двоичных объектов (изображений, файлов, видео и аудиопотоков, больших объектов данных приложения и документов, образов дисков виртуальной машины). Большие файлы данных также часто используются в этой модели, например файл разделителя (CSV), parquetи ORC. Хранилища объектов могут управлять чрезвычайно большими объемами неструктурированных данных.

Служба Azure

Загруженность

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

Тип данных

  • Размер данных велик.
  • Значение непрозрачно.

Примеры

  • Изображения, видео, документы office, PDF-файлы
  • Статический HTML, JSON, CSS
  • Файлы журнала и аудита
  • Резервные копии базы данных

Общие файлы

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

Служба Azure

Загруженность

  • Миграция из существующих приложений, взаимодействующих с файловой системой.
  • Требуется интерфейс SMB.

Тип данных

  • Файлы в иерархическом наборе папок.
  • Доступно с помощью стандартных библиотек ввода-вывода.

Примеры

  • Устаревшие файлы
  • Общее содержимое, доступное среди нескольких виртуальных машин или экземпляров приложений

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

Дальнейшие действия