понедельник, 28 января 2013 г.

Выбор Vertica VS ...

Привет.

Хочу написать в тему, почему мы выбрали Vertica для построения хранилища телекоммуникационной компании и кто еще был рассмотрен в ходе выбора сервера хранилищ данных.

Изначально как кандидат на роль хранилища данных рассматривался Sybase IQ. Из плюсов данного сервера нужно сразу отметить, что это колонко-ориентированный СУБД с полноценным нулевым администрированием. Первое означает, что легко хранить и обрабатывать массивы данных с большим количеством столбцов. Второе,- что для этого не требуется штат администраторов и глубоких познаний по настройке и оптимизации работы сервера на больших объемах данных. Ну и не маловажную роль играло то, что я работал в Sybase и хорошо знал этот продукт.

Однако, в ходе подготовки требований к проекту построения сетевого хранилища данных, появился ряд требований, которые поставили жирный и окончательный крест на кандидатуре Sybase IQ:
  1. Одновременная загрузка из множества потоков данных. В Sybase IQ существует ограничение на монопольную запись в таблицу, то есть в один момент времени в таблицу может добавлять или изменять данные только одна сессия.
  2. Горизонтальное масштабирование кластера сервера для легкого наращивания мощностей при значительном увеличении потоков загружаемых данных и количества ad-hoc запросов. В данном случае Sybase IQ является SMP сервером(shared-everything), и здесь добавление новых серверов в кластер фактически дает прирост производительности при увеличении числа клиентских сессий, но никак не помогает при увеличении объемов данных. Так же в Sybase IQ для ускорения к доступу к данным используются индексы, которые он не умеет партиционировать, в отличие от самих данных. Это означает, что при значительных количествах записей в таблице, индексы такой таблицы будут расти в размерах, все более замедляя операции вставки данных и выполнение запросов над таблицей. Что потом и было нами обнаружено при тестовых испытаниях Sybase IQ.
В итоге перед нашим проектом стала старая как мир дилемма - какой СУБД нужно использовать. Второе требование перечеркивало использование SMP серверов и намекало, что нужно смотреть на MPP архитектуру. Такие монстры MPP, как Teradata или Exadata по своей стоимости не вписывались в бюджет проекта, поэтому, засучив рукава, мы стали искать и смотреть, что же есть в мире MPP DWH. В итоге определилось три кандидата:
  • HP Vertica, декларирующий принцип "чем проще, тем лучше"
  • IBM Netezza с чисто ай-би-эмовским подходом "купил ящик и не паришь мозг"
  • EMC GreenPlum с лозунгом "мы лучше всех, потому что у нас есть все"
В Vertica сразу подкупила архитектура сервера. Это наверное самый молодой из существующих и самый современный сервер хранилищ данных, так как при его разработке учитывались грабли всех существующих серверов. С учетом того, что руководит разработкой Stonebraker, сразу было понятно, что это должен быть серьезный продукт. И конечно же нас сразу привлекли в Vertica три черты, роднящие этот сервер с Sybase IQ - колоночное хранение и компрессия данных, плюс нулевое администрирование. Потом правда выяснилось, что нулевое администрирование в Vertica не до конца "нулевое" и, в отличие от IQ, пусть небольшое, но администрирование нагрузок сервера требуется. Но это уже тема для другой статьи. Еще в Vertica понравилось отношение к потенциальным клиентам, никакого маркетинга и лапши на уши, американцы сразу же нам дали пробную лицензию, чтобы мы смогли развернуть кластер для тестирования и подключили своих технических специалистов для консультаций, не поленившись, в том числе, изыскать у себя русскоязычных спецов.

Netezza  - черный ящик, который привезли, поставили, и ты начал работать. Удобно, что не нужно думать как настроить и оптимизировать сервер, все уже сделано и оптимально настроено. Приятно, что у IBM в России работают технические специалисты высочайшего уровня, которые много знают и охотно делятся информацией. Порадовало то, что при общении с нами маркетинга было меньше, чем технических консультаций, IBM было серьезно настроено на то, чтобы продать нам продукт, который мы смогли бы успешно запустить, и долго и счастливо на нем работать. С учетом того, что в стоимость такого ящика закладывается цена железа, а не ПО, подход верный - продавец кровно заинтересован, чтобы у нас все запустилось. При росте объема данных, мы гарантировано будем менять ящики на более мощные, то есть станем постоянными покупателями.

EMC GreenPlum очень серьезно подошел к рекламе своего продукта и приложил все силы, чтобы убедить нас, что их продукт лучший. Были привлечены специалисты и интеграторы, которые с готовностью отвечали на все наши вопросы и проводили личные встречи и консультации. Помимо интеграторов, нам дали возможность пообщаться с клиентами, у которых уже работали проекты на GreenPlum. Российское отделение GreenPlumn даже смогло организовать нам личную встречу с техническим директором GreenPlum Люком Лонерганом, который с любезностью поделился с нами информацией по поводу будущего развития этого продукта и ответил на наши вопросы. Все указывало на то, что GreenPlum очень хочет войти в рынок Телекоммуникаций РФ и готов приложить к этому максимум усилий. На выходе мы сделали для себя вывод, что продукт этот постоянно развивается, в нем очень много полезной функциональности. GreenPlum позволяет гибко построить хранение данных с использованием различных мощностей и накопителей информации, используя распределение и партиционирование данных. Тот же сервер Vertica не позволяет такого и декларирует, что все сервера в кластере должны иметь одинаковые характеристики, а значит любой апгрейт процессоров, памяти или дисковых накопителей нужно производить на всех серверах сразу. Ну а про ящик Netezza, в который даже нельзя лазить, и так все понятно.

Покопавшись в интернете и пообщавшись с людьми, использующими эти сервера, я нашел много достоинств и недостатков у них. Критичного ничего выявлено не было, так что можно смело похвалить все три продукта. Однако, чаша весов у нас все таки склонилась к Vertica, и на то есть свои причины:
  1. Колоночное хранение данных и компрессия данных действительно нам важны. У Netezza данные хранятся блоками позаписно, а у GreenPlum колоночное хранение урезанное, в таблицах с таким хранением нельзя изменять и удалять записи, только добавлять новые. Компрессия у Vertica получается выгоднее всех за счет того, что в блоках лежат данные колонок, то есть данные одинакового типа, а значит, алгоритмы сжатия и разжатия таких данных более эффективны.
  2. У Vertica администрирование сервера заключается в том, чтобы организовать пулы соединений для пользователей, позволяющих контролировать потребление ресурсов сессиями. У Netezza ничего делать не надо, черный ящик делает все сам. У GreenPlum достаточно серьезный набор требований к администрированию кластера, состоящий из контроля пространств хранения данных и нагрузок серверов. Держать штат администраторов нам не позволял планируемый бюджет, а полностью доверить администрирование автомату не позволяло требование, что работать с хранилищем могут не только BI системы, но и напрямую сотрудники с помощью SQL, а значит, был нужен более гибкий и жесткий контроль за такими пользователями.
  3. У Vertica и GreenPlum оптимизация работы с данными заключается в правильном проектировании хранения данных в таблицах. У Vertica это достигается с помощью управления сегментации и указания сортировки данных, у GreenPlum - с помощью партиций, пространств и индексов. Netezza делает все сама, автоматически распределяя сегментацию и сортировку данных. Однако, у Vertica в запасе еще есть проекции, посредством которых можно описать дублирующие структуры хранения данных в виде нужных полей таблиц, со своей сегментацией, сортировкой и, при необходимости группировкой полей, в виде хранения в одном блоке. Это позволяет определить различные типовые запросы к данным, и, создав проекции, значительно ускорить выполнение таких запросов. Данные проекций автоматически обновляются вместе с данными таблиц. Минусами такого подхода можно назвать дополнительные затраты на запись данных и увеличение объема хранения данных. С учетом того, что у нас достаточно много типовых отчетов и запросов по большим объемам данных, проекции смотрелись наиболее предпочтительно на фоне возможностей конкурентов.
  4. Параллельная загрузка из множества источников данных частыми порциями в реал-тайм - достаточно серьезное требование для серверов хранилищ данных, в большинстве своем ориентированных на инкрементную батч загрузку пакетов данных по расписанию. Здесь Vertica вне конкуренции. Сервер имеет ноу-хау - механизм WOS, позволяющий загружать данные сессиям в специальную выделенную область памяти с подтверждением транзакции без ожидания окончания работ по распределению и переносу данных на диск. Помимо скорости вставки данных, улучшается и качество хранения данных в базе - по мере заполнения новыми данными от сессий, WOS их собирает, сегментирует, сортирует и записывает в базу данных, снижая их дефрагментацию, которая неизбежно бы была при большом количестве вставок данных множеством сессий.
  5. Модель лицензирования Vertica определяется объемом исходных данных. Никаких ограничений на техническую часть нет. Netezza продается как ящик. Если его не хватает, нужно купить новый ящик, а старый выбросить. GreenPlum лицензируется по количеству пространства серверов кластера. В итоге, за каждый новый сервер в кластер нужно докупать лицензию с учетом добавленного места на накопителях этого сервера. Для нашего проекта оказалась выгоднее модель лицензирования Vertica - рост данных у нас прогнозируемый, а вот нагрузки по их обработке будут постоянно увеличиваться за счет подключения к хранилищу новых систем и пользователей. С Vertica можно быстро увеличить производительность кластера, просто докупив и подключив новые сервера к нему, не тратясь на лицензии.
Вот в принципе и основные пункты, которые подтолкнули нас к выбору СУБД Vertica. Достаточно симпатично смотрелся сервер Netezza, но нам не подходило следующее: замена ящиков без возможности апгрейтов, относительно старое железо на текущий момент, а значит необходимость замены сервера при выходе новой версии Netezza на новом железе. GreenPlum же показался хорошим сервером для тех, у кого множество различных видов данных с разделением на "горячие" оперативные и "холодные" архивные данные. Если Vertica похожа на этакий MPP IQ, то GreenPlum очень похож принципами на Oracle, но с MPP архитектурой.

На текущий момент уже почти годовой эксплуатации и в базе данных в 8 тб, опыт использования в промышленных масштабах доказал, что с Vertica мы не ошиблись и сделали правильный выбор! Тьфу-тьфу-тьфу конечно :)

До новых записей в блоге!

13 комментариев:

  1. Shared Everything vs. Shared Nothing: Get the Best of Both with SAP Sybase IQ 16

    http://scn.sap.com/community/sybase-iq/blog/2013/02/21/shared-everything-vs-shared-nothing-get-the-best-of-both-with-sap-sybase-iq-16

    ОтветитьУдалить
    Ответы
    1. Эта та же сказка, которую Оракл пытался рассказывать много лет, пока в конце концов не понял, что его старая архитектура не масштабируется, после чего выпустил костыль под называнием Exadata.

      Удалить
  2. Привет Михаил. Я очень хорошо знаю более старые версии IQ (как бы сам работал в Sybase). Сделанное в IQ 16 версии большой шаг, но этого не достаточно. Есть 5 причин, которые не позволяют IQ использовать в ряде задач BigData, это:
    1. Монопольная запись в таблицу одной сессией - нельзя реализовать в реалтайм одновременную загрузку из множества источников.
    2. Нет поддержки партиционирования индексов - в таблицах с десятками миллиардов записей это приводит к замедлению скорости записи и поиска по индексам.
    3. Нет зеркалирования данных - невозможно себе представить бакуп на терабайты данных и уж тем более время на его восстановление в случае краша дискового хранилища, MPP же вообще продолжают свою работу при падении одного из серверов кластера и автоматически в фоновом режиме восстанавливают информацию после появления упавшей ноды. Единственным выходом получается построение зеркала в виде еще одного дискового хранилища, что несомненно выходит дороже, чем локальные сервера с локальными дисками.
    4. Стоимость расширения MPP ниже чем у решения IQ - достаточно в кластер просто поставить еще один сервер с быстрыми локальными дисками и кластер получит больше процессоров, памяти и дискового пространства для хранения данных. В случае IQ нужно отдельно доставлять дорогие диски в дисковое хранилище, отдельно покупать сервера, причем увеличение производительности у MPP при расширении будет значительно выше.
    5. Стоимость владения MPP будет ниже чем у IQ, так для увеличения мощности придется докупать не только сервера, но и процессорные лицензии. В случае изменения серверов с большим кол-вом ядер так же придется докупать лицензии. У MPP лицензируется или дисковое пространство или объем данных (исходных или БД), поэтому это выходит значительно дешевле, а в случае с Вертикой, если не требуется увеличить исходный лимит объема данных, это вообще бесплатно - достаточно просто докупить нужное кол-во серверов и добавить их в кластер, ограничений нет. Докупать лицензию Вертики потребуется только при достижении купленного лимита объема данных.

    В общем мое IMHO - Sybase IQ как раз хорош тем, что позволяет разумные объемы данных обрабатывать с отличной скоростью не требуя мощного аппаратного обеспечения. Но в категории BigData он уже начинает уступать MPP решениям, которые гибче, устойчивее к хранению больших объемов данных и быстрее за счет распределения нагрузок на доступных серверах с быстрым чтением данных с локальных дисков. Если бы лицензионная политика Sybase/SAP изменилась по отношению к IQ, то наверное он был бы многим интересен. Но никто платить за ядра в кластере точно не будет такие деньги, которые требуют за него сейчас.

    ОтветитьУдалить
  3. Спасибо за обзор. А каков порядок цен на решения от Vertica?
    На регистрацию у них на сайте они не очень торопяться отвечать, а все что удалось в сети - данные 4-летней давности (http://www.dbms2.com/2009/04/25/vertica-pricing-and-customer-metrics/). По ним - 25К$/TB (вроде как).

    ОтветитьУдалить
    Ответы
    1. Привет. Нет, цена за тб раза в два дешевле выходит, чем ту, что Вы назвали. Более точно надо спрашивать у HP, цена существенно зависит от того, на сколько тб лицензия покупается - чем больше тб, тем дешевле цена одного тб.

      Удалить
  4. Привет, Алексей!
    Только сейчас заметил этот пост. Отличный обзор, спасибо большое за хорошие отзывы. Хоть вы нас и не выбрали в итоге, но с моей стороны тоже было приятно работать вместе, надеюсь не в последний раз.
    Небольшая коррекция про компрессию в Netezza - она все же поколоночная, но в рамках одного "экстента" - 3Мб на текущий момент, этакий компромисс. Зато нет ограничений на апдейты и делиты.

    ОтветитьУдалить
    Ответы
    1. "Небольшая коррекция про компрессию в Netezza - она все же поколоночная, но в рамках одного "экстента" - 3Мб на текущий момент, этакий компромисс." А можно поподробнее про это как данные хранятся в экстенте?

      Удалить
  5. А вы рассматривали ParAccel?
    Чем он хуже чем Vertica?

    ОтветитьУдалить
    Ответы
    1. Привет. Этот сервер не попал в шорт лист в ходе выбора нашего проекта. Поэтому он не тестировался и я не могу ничего сказать о его достоинствах и недостатках и тем более сравнить с другими СУБД.

      Удалить
    2. мы рассматривали в контексте Amazon RedShift vs Vertica
      оказалось медленнее для нашей схемы БД... и нету интеграции с R\Java, что дает гораздо меньше простора для полноценного Data Mining

      Удалить
    3. У Amazon Redshift немного другая аудитория. Оно удобно для компаний у которых данные уже в Cloud, Redshift в этом случае позволяет быстро и недорого организовать DWH не отходя от кассы.

      Удалить
  6. Добрый день Алексей, не поделитесь кто из интеграторов помогал в проекте с Vertica?

    ОтветитьУдалить
    Ответы
    1. Привет Вадим. Проект делался внутренней командой Yota - делал его я и мои коллеги Владимир Баранов и Михаил Петров. В 2012 году, после поглощения Yota компанией Мегафон, мы уволились из Yota и организовали свою компанию EasyData, став партнером HP и продолжили сопровождать проект хранилища данных в Yota, плюс стали оказывать помощь по запуску и сопровождению хранилищ данных на базе HP Vertica для других компаний РФ и Европы.

      Так же уже при расширении запущенного хранилища, Yota подрядами привлекала других интеграторов по различным работам построения витрин и отчетности. Насколько я знаю, это были компании GlowByte Consulting (SAP BO), AT-Consulting (Talend) и Аналитика плюс (Tableau). Более точно по их работам сказать к сожалению не могу, они привлекались по работам в финансовом направлении, мы же отвечали за работу управления качеством сети.

      Удалить