пятница, 13 ноября 2009 г.

Логическая оптимизация

Сложные отчеты, требующие обработки гигабайтов данных, не могут быть построены используя только средства оптимизации хранения и доступа. Если предположить, что скорость чтения с жесткого диска составляет 60 Мб/с, то даже на простое чтение 1Гб данных потребуется около 15 секунд времени и это при одном-единственном пользователе, а при многопользовательском доступе такая ситуация совершенно неприемлема.
Путь построения подобных приложений заключается в разумном проектировании базы данных и повышении избыточности хранимой информации. На практике избыточность можно разделить на два типа:

  • дублирование данных,

  • хранение функционалов данных.

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

Комментариев нет:


(C) Alexey Pechnikov aka MBG, mobigroup.ru