Андрей Арсентьев, CIO-world.ru
Из множества компетенций, которые за четверть века своей работы накопила компания Sybase, традиционно выделяется направление СУБД. Более 15 лет специалисты компании занимаются развитием аналитической базы данных IQ, позволяющей строить отчёты в режиме реального времени. О технологических особенностях продукта CIO-World.ru рассказали представители Sybase СНГ - ведущий технический консультант Андрей Хромов и менеджер по развитию бизнеса Максим Исаев.
- В чём отличие колонкоориентированных баз данных (КБД), которые положены в основу Sybase IQ, от традиционных решений? Какова история их развития?
- Андрей Хромов: Надо сказать, что Sybase первым предложила рынку колонкоориентированные СУБД (column-based), до этого подобных коммерческих продуктов не было. История продукта берёт начало в 1993 г., с компании Expressway Technologies из Бостона, в которой работало несколько десятков человек. Эта группа специалистов разрабатывала движок нового поколения для обработки сложных аналитических запросов (много условий и связанных между собой аналитических таблиц).
По замыслу разработчиков, их решение должно было максимально быстро обрабатывать неподготовленные запросы (ad hoc запросы) от множества различных пользователей без значительного падения производительности (то есть движок должен был хорошо справляться с высокой нагрузкой). Ещё одним важным условием было использование стандартных программно-аппаратных платформ: Windows-сервера, либо Unix-сервера.
В итоге этот стартап создал продукт под названием Analytics Server. В ноябре 1994 г. Sybase приобрела компанию Expressway вместе с этой начальной разработкой и в итоге превратила данный продукт в полноценное коммерческое решение. Продукт, названный Sybase IQ, обрёл зрелость к концу 90-х гг., с момента выхода версии 12.0.
Ключевая особенность Sybase IQ в том, что в нём реализовано поколоночное хранение данных, а не построчное, как в большинстве универсальных СУБД (Oracle, Microsoft и т.д.). Почему было выбрано именно такое решение? Было замечено, что при аналитических запросах из большого объёма данных выбирается только небольшая их часть, содержащаяся, как правило, в нескольких колонках одной или нескольких таблиц. Обычно это 10-20% таблицы.
Когда данные хранятся построчно, то система должна прочитать все 100%, а не тот сегмент, который вам нужен. Сделав вертикальную базу данных, Sybase показала, что можно читать только необходимое. Тем самым, существенно экономятся затраты на операции дискового ввода-вывода. А как известно, это самая медленная на сегодняшний день операция в серверах.
Когда был принят подход Sybase IQ, оказалось, что он несёт в себе много производных плюсов для организации аналитической базы данных. При вертикальном расположении данных каждая колонка хранится как независимая структура. Мы точно знаем, что данные в каждой конкретной колонке, одного типа, они гомогенные, а значит, их можно эффективно укладывать в определённые структуры и сжимать. Уже самая первая версия IQ обладала свойством компрессии внутри сервера, позволяющим более компактно хранить информацию на дисках. Чтобы читать эту информацию, соответственно, требовалось ещё меньше операций ввода-вывода.
Долгое время Sybase была единственным поставщиком колонкоориентированных баз данных, и только примерно пять лет назад стали появляться отдалённо похожие решения. Но мы считаем, что за тот путь, который успела пройти Sybase, мы накопили очень большой багаж. Выражаясь спортивным языком, мы играем в высшей лиге, а т.н. «конкуренты» ещё ходят в детско-юношескую спортшколу. Им ещё предстоит понять и внедрить много вещей, чтобы поднять свои решения до уровня Enterprise-продуктов. Sybase IQ – это серьёзный зрелый продукт, который выиграл множество боёв на рынке и имеет на сегодня тысячи клиентов по всему миру.
- Расскажите об индексировании в Sybase IQ.
Андрей Хромов: Здесь довольно интересная ситуация. В обычной базе данных индекс – это некая дополнительная структура, которая строится для быстрого нахождения той или иной записи. Sybase IQ устроен несколько иначе. В нашем продукте индекс – это и способ найти данные, и одновременно форма хранения этих данных. То есть, индекс и данные в IQ – это одно неделимое целое.
Несмотря на то, что каждая колонка IQ сама по себе уже является индексом, для повышения скорости доступа на большинстве колонок обычно создают дополнительные специализированные индексы. Например, есть индексы для данных с низкой кардинальностью (когда число уникальных значений в колонке не велико), с высокой кардинальностью, для работы с датами и временем, с монетарными типами, с текстом и т.д.
В основе архитектуры большинства индексов лежит технология битовых карт (bitmap), развитая и доработанная Sybase, причем некоторые типы индексов запатентованы Sybase как собсвенное know-how. Именно своим уникальным индексам Sybase IQ и обязана высокой скоростью доступа к данным.
Добавление новых индексов к существующему хранилищу оказывает минимальное, если вообще оказывает, воздействие на архитектуру хранилища и использующие его аналитические приложения. Подход Sybase к индексированию БД закладывает основу для ещё более высокой производительности обработки запросов в многотерабайтных (а в будущем и петабайтных) хранилищах данных.
Максим Исаев: Хотелось бы добавить, что в Sybase IQ индексирование происходит не под каждый запрос, а в зависимости от типов данных. Что это нам даёт? Это даёт возможность обеспечить после загрузки данных в IQ полностью проиндексированную БД, готовую к любым запросам. В традиционной СУБД требуется понимание запросов пользователей для того, чтобы проиндексировать БД и при возникновении новых запросов и отчетов приходиться проделывать процедуру поиска оптимальных индексов снова и снова.
Это влечет существенные затраты, как временные, так и ресурсные на оптимизацию работы ХД. Еще одно существенное преимущество Sybase IQ, которое значительно ускоряет процесс выборки данных, - наличие нескольких индексов в одной колонке. В традиционных СУБД такой возможности нет. Кроме того, в IQ больше размер страницы данных, что способствует более эффективному сжатию и в итоге дополнительному повышению производительности.
- Есть ли возможности в Sybase IQ использовать принцип многопоточности? Как обеспечивается обработка большого числа одновременных запросов в Sybase IQ?
Андрей Хромов: В Sybase IQ многопоточность прежде всего используется для поддержки большого количества одновременно работающих пользователей, наш продукт умеет использовать всю мощь работающего сервера, все возможности операционной система, будь то Windows, Linux или Solaris, и при помощи рабочих потоков обрабатывает запросы пользователей. Также в этом продукте реализован принцип параллелизма на уровне отдельной задачи: когда поступает «тяжёлый» запрос, IQ умеет распараллелить свои ресурс, одновременно сканируя разные участки таблиц с помощью нескольких параллельно работающих индексов. Здесь как раз и помогает наличие возможность иметь несколько индексов на одной колонке.
Максим Исаев: В версии 15.0, когда запускается запрос, используются все имеющиеся ресурсы машины. Но если появляется второй пользователь со своим запросом, то автоматически произойдёт перераспределение между двумя запросами. Если один запрос закончил выполняться, то система «подхватит» все ресурсы для второго запроса. Получается, что происходит динамическое масштабирование нагрузки.
- Для чего служит входящий в Sybase IQ компонент Multiplex? Как происходит выделение узлов «читателей и «писателей»?
Андрей Хромов: Multiplex – это фактически программный кластер для Sybase IQ. Он позволяет объединять несколько отдельных серверов («узлов»), на каждом из которых работает экземпляр Sybase IQ, в единую среду Sybase IQ Multiplex. При этом все узлы Sybase IQ подключены к общей базе данных, размещенной на внешнем дисковом массиве. Такая архитектура позволяет обрабатывать запросы пользователей на любом из узлов IQ Multiplex и обеспечить простой и эффективный способ масштабирования BI-системы. При росте нагрузки – вы просто добавляете в кластер Multiplex дополнительные узлы или увеличиваете мощность отдельно взятого узла (добавляя память или процессоры). Кроме того, IQ Multiplex – это еще и обеспечение отказоустойчивости. Отказ одного из узлов никак не затрагивает работы системы в целом, и пользователи могут быть очень быстро переброшены на рабочий узел.
Узлы IQ Multiplex бывают двух типов: «читатели» и «писатели». «Читатели» - это та группа узлов, которая обрабатывает запросы пользователей. А изменение данных реализовано через «писателей». Запросы через них тоже можно выполнять, в этом смысле их правильнее было бы назвать «писатели-читатели». Такая архитектура, когда под загрузку выделен отдельный сервер(ы), позволяет загружать данные в хранилище хоть круглосуточно, совершенно не мешая при этом работе остальных узлов «читателей». Загрузка данных с помощью «писателей» осуществляется на уровне таблиц. Чтобы не было конфликта между «писателями» и «читателями», реализован механизм версионности.
Максим Исаев: Если вы используете аппаратную виртуализацию, то можно сделать один раздел большого мощного сервера «читателем», а другой «писателем», и управлять доступными им ресурсами через консоль управления сервером. Это дает возможность, в случае, если загрузка происходит ночью, все ресурсы сервера отдать «писателям», а днём - «читателям». Таким образом, общее количество процессоров в системе не изменяется, что не повлияет на лицензионную составляющую. То есть можно построить очень экономичное и сбалансированное решение.
- Что представляют из себя схемы Rcubes?
Андрей Хромов: Rcubes (Relational Data Cubes) появился как ответ на различные схемы, которые используются в хранилищах данных. У каждой схемы были свои недостатки, и Rcubes включил поддержку т.н. «плоских схем». Использование Rcubes проще, чем реализация множества традиционных схем. C ним гораздо проще загружать данные из оперативных систем, поскольку Rcubes просты и требуют создания гораздо меньшего количества ETL-процедур, чем традиционные схемы. Rcubes позволяет значительно снизить сложность таблиц фактов и размерностей. Поскольку ключи являются общими для всех колонок таблицы, Sybase IQ будет управлять данными, относящимися к фактам и размерностям, в одной таблице без взрыва данных.
Схема Rcubes использует данные на транзакционном уровне, обеспечивая агрегацию «на лету». Это делает схему Rcubes более гибкой на уровне внутреннего дизайна – пользователи никогда не сталкиваются с проблемой, когда предагрегация данных не соответствует требованиям произвольных запросов. Rcubes очень хорошо работают с инструментами data mining, поскольку эти инструменты подразумевают представление данных в виде плоских файлов с большим количеством колонок, что в точности соответствует тому, как работает Rcubes.
- Что такое ETL-инструменты и для чего они нужны?
Андрей Хромов: ETL (Extract, Transformation, Load) – это достаточно важный процесс в архитектуре хранилищ данных, отвечающий за извлечение данных из систем-источников, их очистку, трансформацию и загрузку в СУБД хранилища. С Sybase IQ могут использоваться любые ETL-инструменты, в том числе такие популярные решения, как Informatica и Datastage. Также у Sybase есть и собственный инструмент - Sybase ETL, имеющий все необходимое для организации процесса загрузки: умение присоединяться к большому количеству источников, наличие различных видов трансформации данных, собственный планировщик задач и т.д. При настройке ETL для Sybase IQ главное, чтобы инструмент использовал метод массовой загрузки (bulk load). Sybase IQ оптимизирован именно для такого метода загрузки данных и позволяет при этом обеспечивать скорость загрузки в сотни ГБ/час.
Кроме того, для Sybase IQ процесс ETL может быть организован на базе Sybase Replication Server, реплицируя данные непрерывно и напрямую из оперативных систем-источников, что позволяет обновлять данные в Sybase IQ в режиме реального времени.
Максим Исаев: Помимо ETL-инструментов, есть ELT-инструменты, которые извлекают данные, затем их загружают и только потом преобразовывают. Такая идеология может быть использована и в Sybase IQ, что позволяет значительно быстрее загружать данные.
- В каких областях применения КБД могут принести бизнесу максимальный экономический эффект? Способно ли ваше решение решить проблему большого количества времени, которое компании тратят на подготовку отчётов?
Максим Исаев: Важным преимуществом для наших пользователей является возможность хранения большого количества данных. Исторически это наиболее востребовано в телекоме и в банках. В случае традиционных СУБД для хранения и обработки больших объёмов информации требуются высокопроизводительные дисковые стойки и серверы. Но в случае с Sybase IQ это не является обязательным. Наша БД позволяет значительно снизить совокупную стоимость владения аналитической системой за счет тех факторов, которые мы обсуждали выше.
IQ успешно хранит и неструктурированную информацию, например, аудио- и видеофайлы. Так, один из наших клиентов – немецкая обсерватория – хранит космические снимки, которые очень эффективно сжимаются в IQ. Вторая важная задача – отчётность. Бизнес-пользователям очень важно избавить ИТ от постоянной оптимизации информационно-аналитической системы. При использовании Sybase IQ экономятся значительные людские и денежные ресурсы для обеспечения работы такого хранилища. Например, есть телекоммуникационная компания на Филиппинах, в которой всего четыре человека администрируют базу данных объёмом 15 ТБ. Двое из них занимаются отчётами по качеству данных, а ещё двое непосредственно занимаются администрированием и тратят на это 3 дня в месяц.
Ещё один класс задач – когда есть большой поток загружаемой информации. Как мы уже говорили, в Sybase IQ очень высокая скорость загрузки. Мы сами у себя фиксировали скорость 80 ГБ в час.
В России мы общались со многими ритейлерами, которые работают по всей территории страны, то есть во всех часовых поясах. Такие компании обычно осуществляют подготовку аналитических отчётов с помощью OLAP технологий, применяя такие решения, как Cognos или MS Analysis Services. Им необходимо либо ждать, пока придут все данные, либо загружать их по мере поступления. Но оба этих подхода требуют перестроения OLAP кубов, что снижает доступность данных для бизнес-пользователей. IQ решает эту проблему. Во-первых, он очень быстро загрузит вашу информацию, во-вторых, позволит значительно быстрее построить OLAP-кубы (кубы Cognos строятся по IQ в 4-5 раз быстрее). В результате мы резко уменьшаем «окно» недоступности аналитических данных для бизнеса.
Фактически Sybase IQ представляет из себя realtime BI. Благодаря ему, например, одна из крупнейших в мире платёжных систем может обеспечивать загрузку данных обо всех транзакциях по пластиковым картам со всего мира и проверку и их на предмет мошенничества в течение 10 минут.
Многие думают, что IQ подходит только для решения больших задач и использования в огромных хранилищ данных. Но это не так. У Sybase есть версия Small Business Edition, которая ограничивает объём базы данных и количество обращений к ней. Хорошим примером эффективной работы Sybase IQ может служить проект в сети «Азбука вкуса», где система работает на одном процессоре.Так, отчёт об оборачиваемости вместо 17 часов, которые требовались предшествующему решению, теперь строит за 12 минут с помощью IQ.
Иногда IQ используют в качестве некоей витрины. Есть примеры компаний инвестировавших огромные средства в решения Oracle или Teradata, но использующих Sybase IQ для быстрого формирования наиболее сложных и тяжелых отчётов. В заключение можно добавить, что в отличие от традиционных систем, специальные аналитические серверы, такие как Sybase IQ, спроектированы специально для быстрой обработки запросов, анализа и лучшей производительности при более низких затратах. Проще говоря, использование специальных аналитических серверов – это практический способ получения информации к действию из сырых данных при минимальных рисках.
Андрей Хромов: Другие BI-вендоры тоже могут утверждать, что их решения позволяют делать онлайн-анализ, но забывают оговориться: только в рамках одного «кубика» или предрассчитанной витрины данных. Условно говоря, при отчёте за квартал они в режиме realtime могут сагрегировать только данные одной недели.
© Copyright 2016, ООО "Сайбейс"