Содержание
Реляционные базы данных для не кодеров — Как закодировать реляционную базу данных?
Понимание концепции баз данных и их различных типов, таких как реляционные и нереляционные базы данных, может быть сложным для людей, не имеющих опыта в кодировании и разработке приложений. Однако это не означает, что это невыполнимая задача. Эта статья поможет вам получить полные знания о реляционных базах данных, их плюсах и минусах, примерах, а также о том, как можно создать реляционную базу данных, даже не имея опыта кодирования. Давайте начнем с основ реляционных баз данных.
Обзор реляционной базы данных
Реляционная база данных — это коллекция правильно организованной информации с четко определенными взаимосвязями, чтобы к ней можно было легко получить доступ и извлечь ее. Согласно традиционной модели реляционной базы данных, структуры данных, включающие таблицы данных, представления и индексы, хранятся отдельно от физических структур хранения. В результате администраторы баз данных могут редактировать физическое хранилище данных, не затрагивая логическую структуру данных.
Различные типы организаций, особенно крупные предприятия, используют реляционные базы данных для организации данных и формирования четких взаимосвязей между ключевыми точками данных. Таким образом, становится легко искать и находить нужную информацию, необходимую для принятия ключевых бизнес-решений. Структурированные данные, как правило, являются основой эффективной реляционной базы данных.
Работа с реляционной базой данных
Реляционная база данных использует таблицы данных для хранения информации о связанных объектах. Каждая строка имеет уникальный идентификатор, называемый ключом, а каждый столбец — атрибуты данных. В реляционной базе данных легко определить взаимосвязи между точками данных, поскольку каждая запись присваивает значение каждому признаку базы данных.
Язык структурированных запросов (SQL) — это стандартный пользовательский и прикладной программный интерфейс (API) реляционной базы данных. Целью кодовых операторов SQL является создание интерактивных запросов к информации, содержащейся в реляционной базе данных, и сбор данных для принятия решений и составления отчетов. Также важно иметь четко определенные правила целостности данных, чтобы сделать реляционную базу данных точной и доступной.
Структура реляционной базы данных
Вы можете лучше понять принцип работы и создания реляционной базы данных, ознакомившись с ее структурой. Таблицы в реляционной базе данных имеют ключевой столбец, который содержит уникальное значение для каждой строки. Этот столбец известен как первичный ключ.
В то время как столбцы в одной таблице ссылаются на первичные ключи в других таблицах, они называются внешними ключами. Наличие этих столбцов крайне важно, поскольку данные в различных таблицах связаны друг с другом через совпадающие значения в ключевых столбцах. Столбцы также называют полями или атрибутами, а строки — записями.
В идеальной реляционной базе данных каждая таблица должна представлять определенный тип сущности, например, клиента, продукт или доход. Каждая строка относится к конкретному экземпляру этого типа сущности, а столбец относится к конкретному значению этого экземпляра, такому как имя клиента, цена продукта или точная сумма.
Пример
База данных продаж организации имеет две таблицы, называемые «Доходы» и «Услуги».
- Таблица услуг будет иметь столбцы для названия, продолжительности и стоимости.
- Таблица доходов будет иметь столбцы для даты продажи, точной оплаты, скидки и адреса.
Каждая запись в доходах будет иметь внешний ключ, который ссылается на первичный ключ таблицы услуг. Для каждого продукта может быть несколько продаж, поэтому такой тип связи между таблицами услуг и доходов называется связью «один ко многим». Мы подробно рассмотрим типы отношений в реляционных базах данных далее в статье.
Важность реляционных баз данных
Теперь, когда вы знакомы с основами реляционных баз данных, вы можете задаться вопросом, почему они важны и в чем их преимущества. Давайте подробно рассмотрим плюсы и минусы реляционных баз данных, чтобы вы могли овладеть искусством создания реляционных баз данных для разработки приложений.
Плюсы
Ниже перечислены основные преимущества использования реляционных баз данных:
- Максимальная точность данных
Минимальный риск дублирования данных, поскольку реляционные базы данных строятся с использованием ключей. При наличии нескольких записей одних и тех же данных может быть сложно определить, какой источник информации является надежным. Удаление дубликатов в реляционных базах данных гарантирует точность ваших данных.
- Гибкость
При создании реляционной базы данных вы не будете ограничены в будущем при добавлении дополнительных данных. База данных обеспечивает гибкость, позволяя расширяться и изменяться по мере необходимости в соответствии с требованиями к информации, которая будет храниться.
- Простой и быстрый доступ к данным
В других видах баз данных, которые зависят от информационной иерархии или предопределенных путей доступа к информации, трудно искать, фильтровать и упорядочивать данные так, как вам нужно. Вместо этого извлечь нужные вам точные данные из реляционной базы данных значительно проще.
Минусы
Есть и несколько недостатков использования реляционных баз данных при разработке приложений.
- Сложная структура
Поскольку необходимо создавать столбцы, а данные должны соответствовать довольно строгим категориям, реляционные базы данных требуют большой структуры и планирования. Хотя такая структура имеет ряд преимуществ, у нее есть и существенные недостатки, включая проблемы с обслуживанием и отсутствие адаптивности и масштабируемости без надлежащего опыта.
- Сложность обслуживания
Для поддержания реляционной базы данных на высоком уровне требуется значительное количество времени, усилий и знаний. Администраторы баз данных обычно нанимают экспертов по базам данных и разработчиков для управления и оптимизации базы данных.
- Негибкость для неструктурированных данных
Большие объемы неструктурированных данных плохо подходят для управления реляционными базами данных. Реляционные базы данных — не лучший выбор для данных, которые в основном являются качественными, трудноописуемыми или динамичными, поскольку схема должна меняться со временем по мере изменения или развития данных, что требует времени. Нереляционная база данных больше подходит для работы с неструктурированными данными.
Реляционные базы данных не могут эффективно масштабироваться горизонтально по многочисленным серверам и физическим архитектурам хранения данных. Когда набор данных растет и становится более разрозненным, структура нарушается, а использование многочисленных серверов влияет на производительность (например, время отклика приложений) и доступность. Управление реляционными базами данных на нескольких серверах является сложной задачей.
Как закодировать реляционную базу данных?
При кодировании реляционной базы данных пользователям приходится определять область потенциальных значений в столбце данных и ограничения. Например, область потенциальных клиентов может допускать до 100 имен клиентов, но вы можете ограничить ее одной таблицей, чтобы допустить только десять имен клиентов.
При создании реляционной базы данных также важно учитывать ограничения. Целостность сущности полезна для того, чтобы сделать первичный ключ таблицы уникальным и гарантировать, что его значение не будет установлено на null. Ссылочная целостность необходима для того, чтобы каждое значение в столбце внешнего ключа находилось в первичном ключе исходной таблицы.
Вы также должны знать, что, в отличие от нереляционных баз данных, реляционные базы данных обладают физической независимостью данных. Система может вносить изменения во внутреннюю схему, не затрагивая внешние схемы или приложения. Владея этими понятиями, вы можете полагаться на реляционные системы управления базами данных, такие как Microsoft Access, Oracle и MySQL, для создания сложных баз данных с минимальным опытом кодирования или вообще без него.
Что является примером реляционной базы данных?
Цель стандартных реляционных баз данных — позволить пользователям управлять и организовывать предопределенные отношения данных в нескольких базах данных. В настоящее время облачные реляционные базы данных становятся очень популярными, поскольку организации могут передать на аутсорсинг такие важные процессы, как обслуживание базы данных и поддержка инфраструктуры.
К наиболее популярным примерам реляционных баз данных относятся:
- MySQL используется в таких веб-приложениях, как Joomla и WordPress.
- SQLite — популярная библиотека на языке Си, используемая для встраивания функций реляционных баз данных в программные пакеты.
- Microsoft Access — популярная часть пакета Microsoft Office и Microsoft 365. Он имеет удобный интерфейс, облегчающий новичкам управление и разработку реляционных баз данных.
- PostgreSQL — это система управления реляционными базами данных (РСУБД) с открытым исходным кодом, которая ориентирована на соответствие стандартам ANSI SQL и предоставляет множество полезных функций, таких как расширяемость.
- Microsoft Azure SQL, Google Cloud SQL, Amazon Relational Database Service и IBM DB2 on Cloud — вот некоторые из современных популярных облачных СУБД.
Каковы типы отношений в базе данных?
В реляционной базе данных существует четыре различных типа определенных отношений. Вы должны быть знакомы с этими отношениями, чтобы иметь возможность выбрать правильное отношение и добиться максимальной точности.
- Один-к-одному
Как следует из названия, в отношениях «один к одному» одна строка в одной таблице связана только с одной строкой в другой таблице. - Один-ко-многим
В отношениях «один-ко-многим» одна строка информации связана со многими записями в различной коллекции. - Многие-к-одному
Это противоположность отношениям «один-ко-многим». Проще говоря, многие строки информации связаны с одной записью в отношениях «многие-к-одному». - Многие-ко-многим
В отношениях «многие-ко-многим» одна строка в таблице может быть связана со многими строками во второй таблице. Аналогично, одна строка во второй таблице может быть связана со многими строками в первой таблице.
Каковы три основных вида отношений в реляционной базе данных?
Существует определенный тип данных, который вы выбираете при создании соединения, чтобы указать, что вы хотите, чтобы этот атрибут был задан существующей коллекцией. Это не типичное свойство, где вы можете выбрать тип данных, например, текст, целое число, дату или картинку. То, сможете ли вы отображать, организовывать и фильтровать данные таким образом, который имеет смысл для вашего приложения, зависит от того, насколько правильно вы настроите связи. Один-к-одному, один-ко-многим и многие-ко-многим — это три основные связи в реляционной базе данных.
Реляционные базы данных полезны для организации структурированных данных в табличные форматы с установленными отношениями. Однако выбор оптимальной архитектуры базы данных включает в себя гораздо больше, чем просто выбор между реляционной и нереляционной моделями. Ключевыми факторами являются тип используемых или создаваемых данных и приложений. Узнайте о некоторых дополнительных аспектах, которые необходимо учитывать при выборе модели базы данных для корпоративного приложения.
Заключение
Общее создание, внедрение, развертывание и обслуживание реляционной базы данных может быть сложным процессом, особенно если вы не знакомы с кодированием. Хорошо то, что существуют платформы без кода, такие как AppMaster, которые позволяют создавать мощные бэкенды и базы данных как для мобильных приложений, так и для веб-приложений. Это полезно для создания надежных, эффективных и безопасных баз данных, не беспокоясь о своих навыках кодирования и при этом получая наилучшие результаты.
Платформы No-code позволяют создавать сложные приложения, не тратя лишних денег на наем разработчиков и администраторов баз данных. Поэтому вам следует ознакомиться с такими платформами, как AppMaster, чтобы воспользоваться преимуществами современных инструментов и технологий на основе искусственного интеллекта в разработке мобильных приложений и создании реляционных баз данных без кодирования.
Нереляционные данные и базы данных NoSQL — Azure Architecture Center
Нереляционная база данных — это база данных, в которой в отличие от большинства традиционных систем баз данных не используется табличная схема строк и столбцов. В этих базах данных применяется модель хранения, оптимизированная под конкретные требования типа хранимых данных. Например, данные могут храниться как простые пары «ключ — значение», документы JSON или граф, состоящий из ребер и вершин.
Все эти хранилища данных не используют реляционную модель. Кроме того, они, как правило, поддерживают определенные типы данных. Процесс запроса данных также специфический. Например, хранилища данных временных рядов рассчитаны на запросы к последовательностям данных, упорядоченных по времени. В свою очередь хранилища данных графов рассчитаны на анализ взвешенных связей между сущностями. Ни один из форматов не подходит в полней мере при выполнении задач управления данными о транзакциях.
Термин NoSQL применяется к хранилищам данных, которые не используют язык запросов SQL. Вместо этого они запрашивают данные с помощью других языков программирования и конструкций. На практике NoSQL означает «нереляционная база данных», даже несмотря на то, что многие из этих баз данных под держивают запросы, совместимые с SQL. Однако базовая стратегия выполнения запросов SQL обычно значительно отличается от применяемой в системе управления реляционной базой данных (реляционная СУБД).
В разделах ниже описаны основные категории нереляционных баз данных или баз данных NoSQL.
Хранилища данных документов
Хранилище данных документов управляет набором значений именованных строковых полей и данных объекта в сущности, которая называется документом. Обычно данные в этих хранилищах содержатся в виде документов JSON. Каждое значение поля может представлять собой скалярный элемент, например число, или сложный объект, например список или коллекция типа «родитель — потомок». Данные в полях документа можно закодировать разными способами, например в формате XML, YAML, JSON, BSON, или хранить в виде обычного текста. Поля документов доступны системе управления хранилищем, что позволяет приложению выполнять запросы и применять фильтры, основанные на значениях этих полей.
Как правило, документ содержит все данные для сущности. Элементы, составляющие сущность, зависят от конкретного приложения. Например, сущность может содержать сведения о клиенте, заказе или их сочетание. Один документ может содержать сведения, которые в реляционной СУБД обычно распределяются по нескольким реляционным таблицам. Хранилище документов не требует, чтобы все документы имели одинаковую структуру. Такой свободный подход к форме обеспечивает большую гибкость. Например, приложения могут хранить в документах разные данные в соответствии с текущими требованиями компании.
Приложение может получать документы по ключу документа. Ключ — это уникальный идентификатор документа. Часто к нему применяется хэширование для равномерного распределения данных. Некоторые базы данных документов автоматически создают ключ документа. Другие позволяют указать атрибут документа, который будет использоваться в качестве ключа. Приложение также может запрашивать документы на основе значения одного или нескольких полей. Некоторые базы данных документов поддерживают индексирование, чтобы облегчить быстрый поиск документов по одному или нескольким индексированным полям.
Многие базы данных документов поддерживают обновления «на месте», то есть позволяют приложению изменять значения отдельных полей без перезаписи всего документа. Операции чтения и записи в нескольких полях одного документа обычно являются атомарными.
Соответствующие службы Azure:
- Azure Cosmos DB
Столбчатые хранилища данных
Столбчатое хранилище данных или хранилище семейств столбцов упорядочивает данные по столбцам и строкам. Столбчатое хранилище данных в простейшей форме почти неотличимо от реляционной базы данных, по крайней мере организационно. Настоящее преимущество столбчатого хранилища данных заключается в способности денормализованно структурировать разреженные данные, что связано со столбцово-ориентированным методом хранения данных.
Столбчатое хранилище данных можно представить как набор табличных данных со строками и столбцами, в которых столбцы разделяются на определенные группы или семейства столбцов. Каждое семейство столбцов включает набор логически связанных столбцов, которые обычно извлекаются или управляются как единое целое. Другие данные, которые используются в других процессах, хранятся отдельно в других семействах столбцов. В семейство столбцов можно динамически добавить новые столбцы, а строки могут быть разреженными (то есть строки не обязаны иметь значение для каждого столбца).
На следующей диаграмме представлен пример таблицы с двумя семействами столбцов: Identity
и Contact Info
. Данные одной сущности имеют одинаковые ключи строк во всех семействах столбцов. Такая структура, в которой строки любого объекта в семействе столбцов могут динамически изменяться, определяет важное преимущество этой категории хранилищ. Семейства столбцов очень хорошо подходят для хранения данных с различными схемами.
В отличие от хранилища пар «ключ — значение» и баз данных документов, большинство столбчатых баз данных упорядочивают хранимые данные с помощью самих значений ключей, а не хэш-кодов от них. Ключ строки рассматривается как первичный индекс и обеспечивает доступ на основе определенного ключа или их диапазона. Некоторые реализации позволяют создавать вторичные индексы по определенным столбцам в семействе столбцов. Вторичные индексы позволяют получать данные по значениям столбцов, а не ключам строки.
Все столбцы одного семейства хранятся на диске в одном файле. Каждый файл содержит определенное число строк. При использовании больших наборов данных этот подход позволяет повысить производительность за счет снижения объема данных, которые необходимо считывать с диска, когда отправляется запрос на получение нескольких столбцов за раз.
Чтение и запись строки из одного семейства столбцов — это обычно атомарные операции. Однако некоторые реализации поддерживают атомарность всей строки, распределенной по нескольким семействам столбцов.
Соответствующие службы Azure:
- Azure Cosmos DB for Apache Cassandra
- Использование HBase в HDInsight
Хранилище пар «ключ — значение»
Хранилище пар «ключ — значение» по сути представляет собой большую хэш-таблицу. Каждое значение сопоставляется с уникальным ключом, и хранилище ключей использует этот ключ для хранения данных, применяя к нему некоторую функцию хэширования. Выбор функции хэширования должен обеспечить равномерное распределение хэшированных ключей по хранилищу данных.
Большинство хранилищ пар «ключ — значение» поддерживают только самые простые операции запроса, вставки и удаления. Чтобы частично или полностью изменить значение, приложение всегда перезаписывает существующее значение целиком. В большинстве реализаций атомарной операцией считается чтение или запись одного значения. Запись больших значений занимает относительно долгое время.
Приложение может хранить в наборе значений произвольные данные, но некоторые хранилища пар «ключ — значение» накладывают ограничения на максимальный размер значений. Программное обеспечение хранилища ничего не знает о значениях, которые в нем хранятся. Все сведения о схеме поддерживаются и применяются на уровне приложения. Эти значения по существу являются большими двоичными объектами, которые хранилище извлекает и сохраняет по соответствующему ключу.
Хранилища пар «ключ — значение» рассчитаны на приложения, выполняющие простые операции поиска на основе значения ключа или диапазона ключей, но не очень подходят для систем, которым нужно запрашивать данные из нескольких таблиц хранилищ пар «ключ — значение», например присоединенные данные в нескольких таблицах.
Кроме того, хранилища пар «ключ — значение» неудобны в сценариях, где могут выполняться запросы или фильтрация по значению, а не только по ключам. Например, в реляционной базе данных вы можете найти определенную запись с помощью предложения WHERE и отфильтровать ее по неключевым столбцам, но хранилища пар «ключ-значение» обычно не поддерживают такую возможность поиска значений или же этот процесс выполняется медленно.
Одно хранилище пар «ключ — значение» очень легко масштабируется, поскольку позволяет удобно распределить данные среди нескольких узлов на разных компьютерах.
Соответствующие службы Azure:
- Azure Cosmos DB для таблицы
- Кэш Azure для Redis
- хранилище таблиц Azure
Хранилища данных графов
Хранилища данных графов управляют сведениями двух типов: узлами и ребрами. Узлы в этом случае представляют сущности, а ребра определяют связи между ними. Узлы и грани имеют свойства, которые предоставляют сведения о конкретном узле или грани, примерно как столбцы в реляционной таблице. Грани могут иметь направление, указывающее на характер связи.
Хранилища данных графов позволяют приложениям эффективно выполнять запросы, которые проходят через сеть узлов и ребер, а также анализировать связи между сущностями. На схеме ниже представлены данные персонала организации, структурированные в виде графа. Сущностями здесь являются сотрудники и отделы, а грани определяют отношения подчинения и отдел, в котором работает каждый сотрудник. Стрелки на ребрах этого графа показывают направление связей.
Такая структура позволяет легко выполнять такие запросы, как «найти всех сотрудников, которые прямо или косвенно подчиняются Светлане» или «найти всех, кто работает в одном отделе с Дмитрием». Процессы сложного анализа выполняются быстро даже на больших графах с большим количеством сущностей и связей. Многие базы данных графов предоставляют язык запросов, который можно использовать для эффективного обхода сети связей.
Соответствующие службы Azure:
- API Graph в Azure Cosmos DB
Хранилища данных временных рядов
Данными временных рядов называются наборы значений, которые упорядочены по времени. Соответственно хранилища данных временных рядов оптимизированы для хранения данных именно такого типа. Хранилища данных временных рядов должны поддерживать очень большое число операций записи, так как обычно в них в режиме реального времени собирается большой объем данных из большого количества источников. Эти хранилища также хорошо подходят для хранения данных телеметрии. Например, для сбора данных от датчиков Интернета вещей или счетчиков в приложениях или системах. Обновления в таких базах данных выполняются редко, а удаление чаще всего является массовой операцией.
Размер отдельных записей в базе данных временных рядов обычно невелик, но их очень много, а значит общий размер данных быстро увеличивается. Хранилища данных временных рядов также обрабатывают данные, полученные вне очереди или несвоевременно, автоматически индексируют точки данных и оптимизируют запросы, полученные в течение определенного промежутка времени. Эта последняя возможность позволяет быстро выполнять запросы к миллионам точек данных и нескольким потокам данных, что, в свою очередь, обеспечивает поддержку визуализации временных рядов (стандартный способ потребления данных временных рядов).
Дополнительные сведения см. в статье Решения для временных рядов.
Соответствующие службы Azure:
- Аналитика временных рядов Azure
- OpenTSDB с HBase в HDInsight
Хранилище данных объектов
Хранилища данных объектов оптимизированы для хранения и извлечения больших двоичных объектов, например изображений, текстовых файлов, видео- и аудиопотоков, объектов данных и документов приложений большого размера, образы дисков виртуальных машин. Объект состоит из сохраненных данных, метаданных и уникального идентификатора доступа к объекту. Хранилища объектов поддерживают отдельные большие файлы, а также позволяют управлять всеми файлами за счет внушительного общего объема хранилища.
Некоторые хранилища данных объектов реплицируют определенный большой двоичный объект между несколькими узлами кластера, что обеспечивает быстрое параллельное чтение. Этот процесс, в свою очередь, позволяет реализовать масштабируемую архитектуру запроса данных, хранящихся в больших файлах, так как несколько процессов, обычно выполняющихся на разных серверах, могут одновременно запрашивать большие файлы данных.
Часто хранилища данных объектов используют как сетевые общие папки. Доступ к файлам, хранящимся в этих папках, можно получить через компьютерную сеть с использованием стандартных сетевых протоколов, например SMB. Если созданы необходимые механизмы поддержки безопасности и одновременного доступа, такое совместное использование данных позволяет распределенным службам с высокой степенью масштабируемости предоставлять доступ к данным для базовых низкоуровневых операций, то есть для простых запросов на чтение и запись.
Соответствующие службы Azure:
- Хранилище BLOB-объектов Azure
- Azure Data Lake Storage
- Хранилище файлов Azure
Хранилища данных внешних индексов
Хранилища данных внешних индексов позволяют искать информацию, содержащуюся в других хранилищах данных и службах. Внешний индекс выступает в роли вторичного индекса любого хранилища данных. Кроме того, с его помощью можно индексировать большие объемы данных и предоставлять доступ к этим индексам почти в реальном времени.
Например, в файловой системе могут храниться текстовые файлы. По пути файл можно найти быстро, но поиск на основе содержимого выполняется медленно, так как сканируются все файлы. Внешний индекс позволяет создавать вторичные индексы, а затем быстро искать путь к файлам, соответствующим заданным условиям. Рассмотрим еще один пример использования внешнего индекса. Предположим, что хранилища пар «ключ — значение» поддерживают индексирование только по ключу. Вы можете создать вторичный индекс на основе значений данных и быстро найти ключ, однозначно определяющий каждый соответствующий элемент.
Индексы создаются в процессе индексирования, который может выполняться по модели извлечения, то есть по требованию хранилища данных, или по модели передачи, то есть по команде из кода приложения. В некоторых системах поддерживаются многомерные индексы и полнотекстовый поиск по большим объемам текстовых данных.
Часто хранилища данных внешних индексов используют для реализации полнотекстового поиска и поиска в Интернете. В этих случаях поддерживается точный или нечеткий поиск. Нечеткий поиск находит документы, которые соответствуют набору условий, и вычисляет для них коэффициент совпадения с этим набором. Некоторые внешние индексы также поддерживают лингвистический анализ, который возвращает соответствия с учетом синонимов, категорий (например, при поиске по запросу «собаки» соответствием считается «питомцы») и морфологии (например, при поиске по запросу «бег» соответствием считается «бегущий»).
Соответствующие службы Azure:
- Поиск Azure
Стандартные требования
Часто архитектура нереляционных хранилищ данных отличается от архитектуры реляционных баз данных. В частности эти хранилища, как правило, не имеют фиксированной схемы, а также не поддерживают транзакции или ограничивают их область. Из соображений масштабируемости они обычно не включают вторичные индексы.
В таблице ниже приведено сравнение требований каждого нереляционного хранилища данных.
Требование | Хранилище данных документов | Столбчатое хранилище данных | Хранилище данных пар «ключ — значение» | Хранилище данных графов |
---|---|---|---|---|
Нормализация | Денормализированные данные | Денормализированные данные | Денормализированные данные | Нормализированные данные |
схема | Схема при чтении | Семейства столбцов, определенные при записи, схема столбца при чтении | Схема при чтении | Схема при чтении |
Согласованность (между параллельными транзакциями) | Настраиваемый уровень согласованности, гарантии на уровне документа | Гарантии на уровне семейства столбцов | Гарантии на уровне ключей | Гарантии на уровне графа |
Атомарность (область транзакции) | Коллекция | Таблица | Таблица | График |
Стратегия блокировки | Оптимистичная (без блокировки) | Пессимистичная (блокировка строк) | Оптимистичная (ETag) | |
Шаблон доступа | Прямой доступ | Статистические выражения на основе данных большого формата | Прямой доступ | Прямой доступ |
Индексация | Первичный и вторичные индексы | Первичный и вторичные индексы | Только первичный индекс | Первичный и вторичные индексы |
Форма представления данных | Документ | Таблица с семействами столбцов | Ключ и значение | Граф с ребрами и вершинами |
разреженные; | Да | Да | Да | Нет |
Масштабность (большое количество столбцов и атрибутов) | Да | Да | Нет | Нет |
Размер данных | От малого (КБ) до среднего (несколько МБ) | От среднего (МБ) до большого (несколько ГБ) | Небольшой (КБ) | Небольшой (КБ) |
Общий максимальный масштаб | Очень большой (ПБ) | Очень большой (ПБ) | Очень большой (ПБ) | Большой (ТБ) |
Требование | Данные временных рядов | Хранилище данных объектов | Хранилище данных внешних индексов |
---|---|---|---|
Нормализация | Нормализированные данные | Денормализированные данные | Денормализированные данные |
схема | Схема при чтении | Схема при чтении | Схема при записи |
Согласованность (между параллельными транзакциями) | Н/Д | Н/Д | Н/Д |
Атомарность (область транзакции) | Н/Д | Объект | Н/Д |
Стратегия блокировки | Н/Д | Пессимистичная (блокировка больших двоичных объектов) | Н/Д |
Шаблон доступа | Прямой доступ и агрегирование | Последовательный доступ | Прямой доступ |
Индексация | Первичный и вторичные индексы | Только первичный индекс | Н/Д |
Форма представления данных | Таблица | Большой двоичный объект и метаданные | Документ |
разреженные; | нет | Н/Д | Нет |
Масштабность (большое количество столбцов и атрибутов) | Нет | Да | Да |
Размер данных | Небольшой (КБ) | От большого (ГБ) до очень большого (ТБ) | Небольшой (КБ) |
Общий максимальный масштаб | Большой (несколько ТБ) | Очень большой (ПБ) | Большой (несколько ТБ) |
Соавторы
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.
Автор субъекта:
- Зоинер Тейада | Генеральный директор и архитектор
Что такое система управления реляционными базами данных?
Что такое база данных?
База данных представляет собой набор данных, хранящихся в компьютере. Эти данные обычно структурированы таким образом, чтобы сделать данные легко доступными.
Что такое реляционная база данных?
Реляционная база данных — это тип базы данных. Он использует структуру, которая позволяет нам идентифицировать и получать доступ к данным по отношению к другой части данных в базе данных. Часто данные в реляционной базе данных организованы в виде таблиц.
Таблицы: строки и столбцы
Таблицы могут содержать сотни, тысячи, иногда даже миллионы строк данных. Эти строки часто называют записей .
Таблицы также могут иметь много столбцов данных. Столбцы помечены описательным именем (например, age
) и имеют определенный тип данных .
Например, столбец с именем age
может иметь тип INTEGER
(обозначающий тип данных, которые он предназначен для хранения).
В приведенной выше таблице есть три столбца ( имя
, возраст
и страна
).
В столбцах имя
и страна
хранятся строковые типы данных, а в столбцах age
хранятся целочисленные типы данных. Набор столбцов и типов данных составляют схему этой таблицы.
В таблице также есть четыре строки или записи (по одной для Натальи, Неда, Зенаса и Лауры).
Что такое система управления реляционными базами данных (RDBMS)?
Система управления реляционной базой данных (RDBMS) — это программа, позволяющая создавать, обновлять и администрировать реляционную базу данных. Большинство систем управления реляционными базами данных используют язык SQL для доступа к базе данных.
Что такое SQL?
SQL ( S структурированный Q uery L язык) — это язык программирования, используемый для связи с данными, хранящимися в системе управления реляционными базами данных. Синтаксис SQL подобен английскому языку, что делает его относительно простым для написания, чтения и интерпретации.
Многие СУБД используют SQL (и варианты SQL) для доступа к данным в таблицах. Например, SQLite — это система управления реляционными базами данных. SQLite содержит минимальный набор команд SQL (одинаковых для всех СУБД). Другие СУБД могут использовать другие варианты.
(SQL часто произносится одним из двух способов. Вы можете произносить его, произнося каждую букву отдельно, например, «S-Q-L», или произносить его, используя слово «sequel».)
Популярные системы управления реляционными базами данных
Синтаксис SQL может незначительно отличаться в зависимости от используемой СУБД. Вот краткое описание популярных СУБД:
MySQL
MySQL — самая популярная база данных SQL с открытым исходным кодом. Обычно он используется для разработки веб-приложений, и доступ к нему часто осуществляется с помощью PHP.
Основные преимущества MySQL заключаются в том, что она проста в использовании, недорога, надежна (существует с 1995 г.) и имеет большое сообщество разработчиков, которые могут помочь ответить на вопросы.
Некоторыми из недостатков являются низкая производительность при масштабировании, отставание в разработке с открытым исходным кодом с тех пор, как Oracle взяла под свой контроль MySQL, и отсутствие некоторых дополнительных функций, к которым разработчики могли привыкнуть.
PostgreSQL
PostgreSQL — это база данных SQL с открытым исходным кодом, которая не контролируется какой-либо корпорацией. Обычно он используется для разработки веб-приложений.
PostgreSQL обладает многими преимуществами MySQL. Он прост в использовании, недорог, надежен и имеет большое сообщество разработчиков. Он также предоставляет некоторые дополнительные функции, такие как поддержка внешнего ключа, не требуя сложной настройки.
Основным недостатком PostgreSQL является то, что его производительность может быть ниже, чем у других баз данных, таких как MySQL. Он также немного менее популярен, чем MySQL.
Для получения дополнительной информации о PostgreSQL, включая инструкции по установке, прочитайте эту статью.
Oracle DB
Корпорация Oracle владеет базой данных Oracle, и исходный код не является открытым.
Oracle DB предназначена для крупных приложений, особенно в банковской сфере. Большинство ведущих мировых банков используют приложения Oracle, потому что Oracle предлагает мощную комбинацию технологий и комплексных, предварительно интегрированных бизнес-приложений, включая основные функции, созданные специально для банков.
Основным недостатком использования Oracle является то, что он не является бесплатным, как его конкуренты с открытым исходным кодом, и может быть довольно дорогим.
SQL Server
Microsoft владеет SQL Server. Как и в Oracle DB, исходный код закрыт.
Крупные корпоративные приложения в основном используют SQL Server.
Microsoft предлагает бесплатную версию начального уровня под названием Express , но она может стать очень дорогой при масштабировании приложения.
SQLite
SQLite — популярная база данных SQL с открытым исходным кодом. Он может хранить всю базу данных в одном файле. Одним из наиболее значительных преимуществ этого является то, что все данные могут храниться локально без необходимости подключения вашей базы данных к серверу.
SQLite — популярный выбор для баз данных в мобильных телефонах, КПК, MP3-плеерах, телевизионных приставках и других электронных устройствах. Курсы SQL на Codecademy используют SQLite.
Для получения дополнительной информации о SQLite, включая инструкции по установке, прочитайте эту статью.
Использование СУБД в Codecademy
В Codecademy мы используем как SQLite, так и PostgreSQL. Хотя это может показаться запутанным, не волнуйтесь! Мы хотим подчеркнуть, что базовый синтаксис, который вы изучите, может использоваться в обеих системах. Например, синтаксис для создания таблиц, вставки данных в эти таблицы и извлечения данных из этих таблиц идентичен. Это одна из приятных сторон изучения SQL — изучив основы одной СУБД, вы легко сможете начать работу в другой.
При этом давайте взглянем на некоторые из более тонких деталей:
Расширения файлов — при работе с базами данных в Codecademy обратите внимание на имя файла, в который вы пишете. Если ваш файл заканчивается на
.sqlite
, вы используете базу данных SQLite. Если ваш файл заканчивается на.sql
, вы работаете с PostgreSQL.Типы данных — Вы узнаете о типах данных очень рано, изучая СУБД. Следует отметить, что SQLite и PostgreSQL имеют несколько разные типы данных. Например, если вы хотите сохранить текст в базе данных SQLite, вы будете использовать
ТЕКСТ
тип данных. Если вы работаете с PostgreSQL, у вас есть гораздо больше возможностей. Вы можете использоватьvarchar(n)
,char(n)
илиtext
. Каждый тип имеет свои тонкие различия. Это хороший пример того, что PostgreSQL немного более надежен, чем SQLite, но основные концепции остаются прежними.Встроенные таблицы — По мере прохождения более сложных уроков по базам данных вы начнете узнавать, как получить доступ к встроенным таблицам. Например, если вы пройдете наш урок по индексам, вы узнаете, как просматривать таблицу, которую система автоматически создает для отслеживания существующих индексов. В зависимости от того, какую СУБД вы используете (в этом уроке мы используем PostgreSQL), синтаксис для этого будет разным. Каждый раз, когда вы пишете SQL о самой базе данных, а не о данных, этот синтаксис, скорее всего, будет уникальным для используемой вами СУБД.
Заключение
Реляционные базы данных хранят данные в таблицах. Таблицы могут увеличиваться в размерах и содержать множество столбцов и записей. Системы управления реляционными базами данных (RDBMS) используют SQL (и варианты SQL) для управления данными в этих больших таблицах. Выбор СУБД зависит от сложности вашего приложения.
Только Pro
карьерный путь
Data Scientist: Специалист по аналитике
Подходит для начинающих,
69 Уроки
Курс
Начало работы вне платформы для обработки и анализа данных
Подходит для начинающих,
1 Урок
Нереляционные данные и база данных NoSQL — нереляционная база данных Azure в котором не используется табличная схема строк и столбцов, используемая в большинстве традиционных систем баз данных. Вместо этого в нереляционных базах данных используется модель хранения, оптимизированная для конкретных требований типа хранимых данных.
Например, данные могут храниться в виде простых пар ключ/значение, документов JSON или графа, состоящего из ребер и вершин.
Все эти хранилища данных объединяет то, что они не используют реляционную модель. Кроме того, они, как правило, более конкретны в отношении типа данных, которые они поддерживают, и того, как данные могут быть запрошены. Например, хранилища данных временных рядов оптимизированы для запросов к временным последовательностям данных. Однако хранилища графовых данных оптимизированы для изучения взвешенных отношений между сущностями. Ни один из форматов не подходит для задач управления транзакционными данными.
Термин NoSQL относится к хранилищам данных, которые не используют SQL для запросов. Вместо этого хранилища данных используют другие языки программирования и конструкции для запроса данных. На практике «NoSQL» означает «нереляционная база данных», хотя многие из этих баз данных поддерживают запросы, совместимые с SQL. Однако базовая стратегия выполнения запросов обычно сильно отличается от того, как традиционная СУБД будет выполнять тот же SQL-запрос.
В следующих разделах описаны основные категории нереляционных баз данных или баз данных NoSQL.
Хранилища данных документа
Хранилище данных документа управляет набором именованных строковых полей и значений данных объекта в объекте, который называется документом . Эти хранилища данных обычно хранят данные в виде документов JSON. Каждое значение поля может быть скалярным элементом, например числом, или составным элементом, например списком или коллекцией родитель-потомок. Данные в полях документа могут быть закодированы различными способами, включая XML, YAML, JSON, BSON, или даже сохранены в виде простого текста. Поля в документах доступны для системы управления хранилищем, что позволяет приложению запрашивать и фильтровать данные, используя значения в этих полях.
Обычно документ содержит полные данные объекта. Какие элементы составляют сущность, зависят от приложения. Например, сущность может содержать сведения о покупателе, заказе или их комбинацию. Один документ может содержать информацию, которая будет распределена по нескольким реляционным таблицам в системе управления реляционными базами данных (RDBMS). Хранилище документов не требует, чтобы все документы имели одинаковую структуру. Этот подход свободной формы обеспечивает большую гибкость. Например, приложения могут хранить в документах разные данные в ответ на изменение бизнес-требований.
Приложение может извлекать документы с помощью ключа документа. Ключ — это уникальный идентификатор документа, который часто хешируется для равномерного распределения данных. Некоторые базы данных документов создают ключ документа автоматически. Другие позволяют указать атрибут документа для использования в качестве ключа. Приложение также может запрашивать документы на основе значения одного или нескольких полей. Некоторые базы данных документов поддерживают индексирование, чтобы облегчить быстрый поиск документов на основе одного или нескольких проиндексированных полей.
Многие базы данных документов поддерживают обновления на месте, что позволяет приложению изменять значения определенных полей в документе без перезаписи всего документа. Операции чтения и записи для нескольких полей в одном документе обычно атомарны.
Соответствующая служба Azure:
- Azure Cosmos DB
Хранилища данных столбцов
Хранилище данных столбцов или семейств столбцов организует данные в столбцы и строки. В своей простейшей форме хранилище данных семейства столбцов может показаться очень похожим на реляционную базу данных, по крайней мере, концептуально. Реальная сила базы данных семейства столбцов заключается в ее денормализованном подходе к структурированию разреженных данных, который проистекает из подхода к хранению данных, ориентированного на столбцы.
Вы можете думать о хранилище данных семейства столбцов как о хранении табличных данных со строками и столбцами, но столбцы разделены на группы, известные как семейства столбцов. Каждое семейство столбцов содержит набор столбцов, которые логически связаны и обычно извлекаются или обрабатываются как единое целое. Другие данные, доступ к которым осуществляется отдельно, могут храниться в отдельных семействах столбцов. В семействе столбцов новые столбцы могут добавляться динамически, а строки могут быть разреженными (то есть в строке не обязательно должно быть значение для каждого столбца).
На следующей диаграмме показан пример с двумя семействами столбцов: Identity
и Contact Info
. Данные для одного объекта имеют один и тот же ключ строки в каждом семействе столбцов. Эта структура, в которой строки для любого заданного объекта в семействе столбцов могут динамически изменяться, является важным преимуществом подхода семейства столбцов, что делает эту форму хранилища данных очень подходящей для хранения данных с различными схемами.
В отличие от хранилища ключей и значений или базы данных документов, большинство баз данных семейства столбцов физически хранят данные в порядке ключа, а не путем вычисления хэша. Ключ строки считается первичным индексом и обеспечивает доступ на основе ключа с помощью определенного ключа или диапазона ключей. Некоторые реализации позволяют создавать вторичные индексы для определенных столбцов в семействе столбцов. Вторичные индексы позволяют извлекать данные по значению столбца, а не по ключу строки.
На диске все столбцы в семействе столбцов хранятся вместе в одном файле с определенным количеством строк в каждом файле. При работе с большими наборами данных этот подход повышает производительность за счет уменьшения объема данных, которые необходимо считывать с диска, когда одновременно запрашиваются только несколько столбцов.
Операции чтения и записи для строки обычно атомарны в пределах одного семейства столбцов, хотя некоторые реализации обеспечивают атомарность всей строки, охватывая несколько семейств столбцов.
Соответствующая служба Azure:
- Azure Cosmos DB для Apache Cassandra
- HBase в HDInsight
Хранилища данных типа «ключ-значение»
Хранилище данных типа «ключ-значение» представляет собой большую хеш-таблицу. Вы связываете каждое значение данных с уникальным ключом, и хранилище ключей/значений использует этот ключ для хранения данных с помощью соответствующей функции хеширования. Функция хеширования выбрана для обеспечения равномерного распределения хешированных ключей по хранилищу данных.
Большинство хранилищ ключей и значений поддерживают только простые операции запроса, вставки и удаления. Чтобы изменить значение (частично или полностью), приложение должно перезаписать существующие данные для всего значения. В большинстве реализаций чтение или запись одного значения является атомарной операцией. Если значение большое, запись может занять некоторое время.
Приложение может хранить произвольные данные в виде набора значений, хотя некоторые хранилища ключей и значений накладывают ограничения на максимальный размер значений. Сохраненные значения непрозрачны для программного обеспечения системы хранения. Любая информация о схеме должна предоставляться и интерпретироваться приложением. По сути, значения представляют собой большие двоичные объекты, и хранилище ключей/значений просто извлекает или сохраняет значение по ключу.
Хранилища ключей/значений оптимизированы для приложений, выполняющих простой поиск с использованием значения ключа или диапазона ключей, но менее подходят для систем, которым необходимо запрашивать данные из разных таблиц ключей/значений, таких как как объединение данных из нескольких таблиц.
Хранилища ключей и значений также не оптимизированы для сценариев, в которых важны запросы или фильтрация по неключевым значениям, а не выполнение поиска на основе только ключей. Например, в реляционной базе данных вы можете найти запись, используя предложение WHERE для фильтрации неключевых столбцов, но хранилища ключей и значений обычно не имеют возможности такого типа поиска для значений, а если и есть, то требуется медленное сканирование всех значений.
Одно хранилище ключей и значений может быть чрезвычайно масштабируемым, поскольку хранилище данных может легко распределять данные между несколькими узлами на отдельных компьютерах.
Соответствующие службы Azure:
- Azure Cosmos DB для таблицы
- Кэш Azure для Redis
- Хранилище таблиц Azure
Хранилища данных графа
Хранилище данных графа управляет двумя типами информации, узлами и ребрами. Узлы представляют объекты, а ребра определяют отношения между этими объектами. И узлы, и ребра могут иметь свойства, предоставляющие информацию об этом узле или ребре, подобно столбцам в таблице. Ребра также могут иметь направление, указывающее характер связи.
Хранилище графовых данных предназначено для того, чтобы позволить приложению эффективно выполнять запросы, проходящие через сеть узлов и ребер, и анализировать отношения между объектами. На следующей диаграмме показаны данные о персонале организации, структурированные в виде графика. Сущности — это сотрудники и отделы, а ребра указывают отношения отчетности и отдел, в котором работают сотрудники. На этом графике стрелки по краям показывают направление отношений.
Эта структура упрощает выполнение таких запросов, как «Найти всех сотрудников, которые прямо или косвенно подчиняются Саре» или «Кто работает в том же отделе, что и Джон?» Для больших диаграмм с большим количеством сущностей и связей можно быстро выполнять сложный анализ. Многие графовые базы данных предоставляют язык запросов, который можно использовать для эффективного обхода сети отношений.
Соответствующая служба Azure:
- Azure Cosmos DB Graph API
Хранилища данных временных рядов
Данные временных рядов представляют собой набор значений, организованных по времени, и хранилище данных временных рядов оптимизировано для этого типа данных. Хранилища данных временных рядов должны поддерживать очень большое количество операций записи, поскольку они обычно собирают большие объемы данных в режиме реального времени из большого количества источников. Хранилища данных временных рядов оптимизированы для хранения данных телеметрии. Сценарии включают датчики IoT или счетчики приложений/систем. Обновления происходят редко, а удаления часто выполняются как массовые операции.
Хотя записи, записанные в базу данных временных рядов, как правило, небольшие, часто имеется большое количество записей, и общий размер данных может быстро расти. Хранилища данных временных рядов также обрабатывают неупорядоченные и запаздывающие данные, автоматическую индексацию точек данных и оптимизацию запросов, описанных с точки зрения временных окон. Эта последняя функция позволяет быстро выполнять запросы к миллионам точек данных и нескольким потокам данных, чтобы поддерживать визуализацию временных рядов, что является распространенным способом использования данных временных рядов.
Дополнительные сведения см. в разделе Решения для временных рядов
Соответствующие службы Azure:
- Azure Time Series Insights
- OpenTSDB с HBase в HDInsight
Хранилища объектных данных
Хранилища объектных данных оптимизированы для хранения и извлечения больших двоичных объектов или больших двоичных объектов, таких как изображения, текстовые файлы, видео- и аудиопотоки, большие объекты данных приложений и документы, а также образы дисков виртуальных машин. Объект состоит из хранимых данных, некоторых метаданных и уникального идентификатора для доступа к объекту. Хранилища объектов предназначены для поддержки файлов, которые по отдельности очень велики, а также обеспечивают большой объем общего хранилища для управления всеми файлами.
Некоторые хранилища объектных данных реплицируют заданный большой двоичный объект на нескольких узлах сервера, что обеспечивает быстрое параллельное чтение. Этот процесс, в свою очередь, позволяет масштабировать запросы данных, содержащихся в больших файлах, поскольку несколько процессов, обычно работающих на разных серверах, могут одновременно запрашивать большой файл данных.
Одним из особых случаев объектных хранилищ данных является общий сетевой файловый ресурс. Использование общих файловых ресурсов позволяет получать доступ к файлам по сети с использованием стандартных сетевых протоколов, таких как блок сообщений сервера (SMB). При наличии соответствующих механизмов безопасности и управления одновременным доступом такое совместное использование данных может позволить распределенным службам предоставлять доступ к данным с высокой степенью масштабируемости для базовых низкоуровневых операций, таких как простые запросы на чтение и запись.
Соответствующие службы Azure:
- Azure Blob Storage
- Хранилище озера данных Azure
- Хранилище файлов Azure
Хранилища данных внешнего индекса
Хранилища данных внешнего индекса обеспечивают возможность поиска информации, хранящейся в других хранилищах данных и службах. Внешний индекс действует как вторичный индекс для любого хранилища данных и может использоваться для индексации огромных объемов данных и обеспечения доступа к этим индексам практически в реальном времени.
Например, у вас могут быть текстовые файлы, хранящиеся в файловой системе. Поиск файла по его пути к файлу выполняется быстро, но поиск по содержимому файла потребует сканирования всех файлов, что является медленным. Внешний индекс позволяет создавать вторичные поисковые индексы, а затем быстро находить пути к файлам, которые соответствуют вашим критериям. Другой пример применения внешнего индекса — это хранилища ключей и значений, которые индексируются только по ключу. Вы можете построить вторичный индекс на основе значений в данных и быстро найти ключ, который однозначно идентифицирует каждый соответствующий элемент.
Индексы создаются путем запуска процесса индексирования. Это может быть выполнено с помощью модели извлечения, запускаемой хранилищем данных, или с помощью модели выталкивания, инициируемой кодом приложения. Индексы могут быть многомерными и могут поддерживать поиск произвольного текста в больших объемах текстовых данных.
Хранилища данных внешнего индекса часто используются для поддержки полнотекстового и веб-поиска. В этих случаях поиск может быть точным или нечетким. Нечеткий поиск находит документы, соответствующие набору терминов, и вычисляет, насколько близко они совпадают. Некоторые внешние индексы также поддерживают лингвистический анализ, который может возвращать совпадения на основе синонимов, расширений жанра (например, сопоставление «собак» с «домашними животными») и определения корней (например, поиск «бег» также соответствует «ран» и «бег). «).
Соответствующая служба Azure:
- Поиск Azure
Типовые требования
Нереляционные хранилища данных часто используют архитектуру хранения, отличную от используемой в реляционных базах данных. В частности, они склонны к тому, чтобы не иметь фиксированной схемы. Кроме того, они, как правило, не поддерживают транзакции или ограничивают объем транзакций и обычно не включают вторичные индексы по соображениям масштабируемости.
Далее сравниваются требования для каждого из нереляционных хранилищ данных:
Требование | Данные документа | Данные семейства столбцов | Данные «ключ/значение» | Графические данные |
---|---|---|---|---|
Нормализация | Денормализованный | Денормализованный | Денормализованный | Нормализованный |
Схема | Схема при чтении | Семейства столбцов, определенные при записи, схема столбцов при чтении | Схема при чтении | Схема при чтении |
Непротиворечивость (между параллельными транзакциями) | Настраиваемая согласованность, гарантии на уровне документа | Гарантии на уровне семейства столбцов | Гарантии уровня ключа | Гарантии уровня графа |
Атомарность (область транзакции) | Коллекция | Стол | Стол | График |
Стратегия блокировки | Оптимистичный (без блокировки) | Пессимистичный (замки строк) | Оптимистичный (ETag) | |
Шаблон доступа | Произвольный доступ | Агрегаты по высоким/широким данным | Произвольный доступ | Произвольный доступ |
Индексация | Первичные и вторичные индексы | Первичные и вторичные индексы | Только первичный индекс | Первичные и вторичные индексы |
Форма данных | Документ | Табличный с семействами столбцов, содержащими столбцы | Ключ и значение | Граф, содержащий ребра и вершины |
Редкий | Да | Да | Да | № |
Широкий (много столбцов/атрибутов) | Да | Да | № | № |
Базовый размер | От малого (КБ) до среднего (малое количество МБ) | От среднего (МБ) до большого (мало ГБ) | Маленький (КБ) | Маленький (КБ) |
Общий максимальный масштаб | Очень большой (ПБ) | Очень большой (ПБ) | Очень большой (ПБ) | Большой (ТБ) |
Требование | Данные временного ряда | Данные объекта | Данные внешнего индекса |
---|---|---|---|
Нормализация | Нормализованный | Денормализованный | Денормализованный |
Схема | Схема при чтении | Схема при чтении | Схема при записи |
Непротиворечивость (между параллельными транзакциями) | н/д | н/д | н/д |
Атомарность (область транзакции) | н/д | Объект | н/д |
Стратегия блокировки | н/д | Пессимистичный (замки BLOB-объектов) | н/д |
Шаблон доступа | Произвольный доступ и агрегация | Последовательный доступ | Произвольный доступ |
Индексация | Первичные и вторичные индексы | Только первичный индекс | н/д |
Форма данных | Табличный | Большой двоичный объект и метаданные | Документ |
Редкий | № | н/д | № |
Широкий (много столбцов/атрибутов) | № | Да | Да |
Базовый размер | Маленький (КБ) | от большого (ГБ) до очень большого (ТБ) | Маленький (КБ) |
Общий максимальный масштаб | Большой (малый ТБ) | Очень большой (ПБ) | Большой (малый ТБ) |
Авторы
Эта статья поддерживается корпорацией Майкрософт.