Типы данных больших объектов

Оценить
(0 голоса)

Большие объекты (Large objects, LOB) - объекты данных с максимальным размером 2 Гбайт. Эти объекты обычно применяются для хранения больших текстовых данных, для загрузки модулей и файлов аудио/видео. Transact-SQL поддерживает два различных способа для задания LOB и доступа к ним:

♦ Использование типов данных Varciiar (max), NVARCHAR (мах) и varbinary (мах);

♦ использование так называемых типов данных «текст/изображение». Рассмотрим эти две формы LOB подробнее.

Спецификатор мах. Начиная с SQL Server 2005, вы можете использовать одну и ту же программную модель для доступа к значениям стандартных типов данных и к LOB. Иными словами, вы можете использовать подходящие системные функции и строковые операции для работы с LOB.

Database Engine использует спецификатор мах для задания типам данных varchar, nvarchar и varbinary определения столбцов с переменной длиной. Когда вы используете мах по умолчанию (вместо явного значения), система проверяет длину конкретной строки и принимает решение, сохранять ли эту строку в обычном варианте или в виде LOB. Спецификатор мах указывает, что размер значения столбца может достигать максимального размера для LOB в текущей системе. (В будущей версии SQL Server, возможно, будет так, что мах будет иметь большую величину для максимального значения длины строки.)

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

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

В SQL Server 2008 вы можете использовать новый атрибут filestream для столбца с типом данных varbinary (мах) для сохранения больших двоичных данных непосредственно в файловой системе NTFS. Основное преимущество этого атрибута в том, что размер соответствующего LOB ограничивается только размером тома файловой системы.

Типы данных text, ntext и image. Типы данных text, ntext и image составляют так называемые типы данных «текст/изображение». Объекты данных в image могут содержать любой вид данных (загрузочные модули, аудио, видео), в то время как типы данных text и ntext могут содержать любые тексты (т. е. данные, которые могут быть распечатаны).

Типы данных «текст/изображение» по умолчанию сохраняются в базе данных отдельно от всех других значений базы данных с использованием структуры сбалансированного дерева (В-дерева), которая указывает на фрагменты этих данных. (Структура В-дерева древоподобная структура данных, в которой все нижние узлы имеют один и тот же номер уровня по отношению к корню дерева.) Для столбцов типа данных «текст/изображение» Database Engine хранит в строке таблицы 16-байтовый указатель, который содержит сведения, где могут быть найдены сами данные.

Если размер данных «текст/изображение» меньше 32 Кбайт, то указатель ссылается на корневой узел структуры В-дерева, который имеет размер 84 байта. Корневой узел указывает на физические блоки данных. Если же размер этих данных превышает 32 Кбайт, то Database Engine создает промежуточные дополнительные узлы между корневым узлом и блоками данных.

Для каждой таблицы, которая содержит более одного столбца с подобным типом данных, все значения таких столбцов хранятся вместе. Однако одна физическая страница может содержать только данные «текст/изображение» из одной таблицы.

Хотя данные «текст/изображение» хранятся отдельно от всех других данных, вы можете это изменить, использовав системную процедуру sptabieoption с опцией text_in_row. Эта опция задает максимальное количество байтов, которые сохраняются вместе с обычными данными.

Обсуждаемые здесь типы данных «текст/изображение» имеют некоторые ограничения. Вы не можете использовать их в качестве локальных переменных (в хранимых процедурах или в группах операторов Transact-SQL). Они также не могут быть частью индекса или использоваться в следующих предложениях оператора select: where, order by, group by. Самая большая проблема, связанная с типами данных «текст/изображение», заключается в том, что вам необходимо для работы с этими данными использовать специальные операторы (readtext, writetext и updatetext).


Тип данных UNIQUEIDENTIFIER
Тип данных SQL_ VARIANT
Тип данных HIERARCHYID
Тип данных TIMESTAMP
Формат хранения VARDECIMAL для DECIMAL

Добавить комментарий


Защитный код
Обновить

© 2018 www.serversql.ru. Все права защищены.