Распределенная обработка данных. Найханова Л.В. - 66 стр.

UptoLike

Составители: 

66
К основным характеристикам этой организации можно отнести следующие:
- Каждый кортеж обладает уникальным идентификатором (tid), не изменяемым во
все время существования кортежа. Структура tid следует из приведенного выше
рисунка.
- Обычно каждый кортеж хранится целиком в одной странице. Из этого следует,
что максимальная длина кортежа любого отношения ограничена размерами
страницы. Возникает вопрос: как быть с "длинными" данными, которые в
принципе не помещаются в одной странице? Применяются несколько методов.
Наиболее простым решением является хранение таких данных в отдельных (вне
базы данных) файлах с заменой "длинного" данного в кортеже на имя
соответствующего файла. В некоторых системах (например, в предпоследней
версии СУБД Informix) такие данные хранились в отдельном наборе страниц
внешней памяти, связанном физическими ссылками. Оба эти решения сильно
ограничивают возможность работы с длинными данными (как, например,
удалить несколько байтов из середины 2-мегабайтной строки?). В настоящее
время все чаще используется метод, предложенный несколько лет тому назад в
проекте Exodus, когда "длинные" данные организуются в виде B-деревьев
последовательностей байтов.
- Как правило, в одной странице данных хранятся кортежи только одного
отношения. Существуют, однако, варианты с возможностью хранения в одной
странице кортежей нескольких отношений. Это вызывает некоторые
дополнительные расходы по части служебной информации (при каждом кортеже
нужно хранить информацию о соответствующем отношении), но зато иногда
позволяет резко сократить число обменов с внешней памятью при выполнении
соединений.
- Изменение схемы хранимого отношения с добавлением нового столбца не
вызывает потребности в физической реорганизации отношения. Достаточно
лишь изменить информацию в описателе отношения и расширять кортежи только
при занесении информации в новый столбец.
- Поскольку отношения могут содержать неопределенные значения, необходима
соответствующая поддержка на уровне хранения. Обычно это достигается путем
хранения соответствующей шкалы при каждом кортеже, который в принципе
может содержать неопределенные значения.
- Проблема распределения памяти в страницах данных связана с проблемами
синхронизации и журнализации и не всегда тривиальна. Например, если в ходе
выполнения транзакции некоторая страница данных опустошается, то ее нельзя
перевести в статус свободных страниц до конца транзакции, поскольку при
откате транзакции удаленные при прямом выполнении транзакции и
восстановленные при ее откате кортежи должны получить те же самые
идентификаторы.
- Распространенным способом повышения эффективности СУБД является
кластеризация отношения по значениям одного или нескольких столбцов.
Полезным для оптимизации соединений является совместная кластеризация
нескольких отношений.
- С целью использования возможностей распараллеливания обменов с внешней
памятью иногда применяют схему декластеризованного хранения отношений:
кортежи с общим значением столбца декластеризации размещают на разных
дисковых устройствах, обмены с которыми можно выполнять в параллель.
Что же касается хранения отношения по столбцам, то основная идея состоит в
совместном хранении всех значений одного (или нескольких) столбцов. Для каждого
     К основным характеристикам этой организации можно отнести следующие:
     - Каждый кортеж обладает уникальным идентификатором (tid), не изменяемым во
        все время существования кортежа. Структура tid следует из приведенного выше
        рисунка.
     - Обычно каждый кортеж хранится целиком в одной странице. Из этого следует,
        что максимальная длина кортежа любого отношения ограничена размерами
        страницы. Возникает вопрос: как быть с "длинными" данными, которые в
        принципе не помещаются в одной странице? Применяются несколько методов.
        Наиболее простым решением является хранение таких данных в отдельных (вне
        базы данных) файлах с заменой "длинного" данного в кортеже на имя
        соответствующего файла. В некоторых системах (например, в предпоследней
        версии СУБД Informix) такие данные хранились в отдельном наборе страниц
        внешней памяти, связанном физическими ссылками. Оба эти решения сильно
        ограничивают возможность работы с длинными данными (как, например,
        удалить несколько байтов из середины 2-мегабайтной строки?). В настоящее
        время все чаще используется метод, предложенный несколько лет тому назад в
        проекте Exodus, когда "длинные" данные организуются в виде B-деревьев
        последовательностей байтов.
     - Как правило, в одной странице данных хранятся кортежи только одного
        отношения. Существуют, однако, варианты с возможностью хранения в одной
        странице кортежей нескольких отношений. Это вызывает некоторые
        дополнительные расходы по части служебной информации (при каждом кортеже
        нужно хранить информацию о соответствующем отношении), но зато иногда
        позволяет резко сократить число обменов с внешней памятью при выполнении
        соединений.
     - Изменение схемы хранимого отношения с добавлением нового столбца не
        вызывает потребности в физической реорганизации отношения. Достаточно
        лишь изменить информацию в описателе отношения и расширять кортежи только
        при занесении информации в новый столбец.
     - Поскольку отношения могут содержать неопределенные значения, необходима
        соответствующая поддержка на уровне хранения. Обычно это достигается путем
        хранения соответствующей шкалы при каждом кортеже, который в принципе
        может содержать неопределенные значения.
     - Проблема распределения памяти в страницах данных связана с проблемами
        синхронизации и журнализации и не всегда тривиальна. Например, если в ходе
        выполнения транзакции некоторая страница данных опустошается, то ее нельзя
        перевести в статус свободных страниц до конца транзакции, поскольку при
        откате транзакции удаленные при прямом выполнении транзакции и
        восстановленные при ее откате кортежи должны получить те же самые
        идентификаторы.
     - Распространенным способом повышения эффективности СУБД является
        кластеризация отношения по значениям одного или нескольких столбцов.
        Полезным для оптимизации соединений является совместная кластеризация
        нескольких отношений.
     - С целью использования возможностей распараллеливания обменов с внешней
        памятью иногда применяют схему декластеризованного хранения отношений:
        кортежи с общим значением столбца декластеризации размещают на разных
        дисковых устройствах, обмены с которыми можно выполнять в параллель.
     Что же касается хранения отношения по столбцам, то основная идея состоит в
совместном хранении всех значений одного (или нескольких) столбцов. Для каждого
66