Классика баз данных - статьи

       

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


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

Поскольку записи из таблицы транзакций используются в порядке времени, доступ к соединяемой с ней таблицей пользователей будет, по сути дела, произвольным – и весьма дорогостояшим, если эта таблица большая и сохраняется на диске. Если имеется основная память достаточного объема, чтобы можно было полностью размесить в ней таблицу пользователей, производительность будет улучшена. Но поскольку произвольный доступ к основной памяти сам стоит недешево, а основная память – это дефицитный ресурс, который может быть просто недоступен для кэширования крупных таблиц, наилучшим решением при построении крупных баз данных для аналитических целей (например, хранилищ данных) может, как это ни удивительно, оказаться использование полностью денормализованной таблицы, т.е. таблицы, включающей все данные о каждой транзакции, а также информацию обо всех пользователях, уместную для выполнения анализа (рис. 4). Совместная денормализация таблицы пользователей с 10 миллионами строк и 10 столбцами и таблицы транзакций с четырьмя столбцами существенно увеличит размер данных, которые требуется хранить (размер денормализованной таблицы в три раза превышает общий размер исходных таблиц). Если выполняется анализ данных в порядке времени, но при этом тредуется информация из обеих таблиц, то устранение произвольного доступа к таблице пользователей позволит значительно повысить производительность.Хотя при этом неизбежно требуется намного больше дисковой памяти, и, что более важно, при выполнении анализа придется прочитать больше данных с диска, преимущества, получаемые от перехода к чисто последовательному доступу к данным, часто бывают огромными.



Рис. 4. Денормализация таблицы с информацией о пользователях


Содержание  Назад  Вперед