среда, 8 января 2014 г.

Про данные, много данных. Или просто DWH

         Раньше мне как-то не приходилось сталкиваться в плотную с Data warehouse. Все с OLTP базами работал,  и прямо скажем OLAP не вызывал  у меня особого интереса.  Но не так давно на голову мне свалился DWH, один из двух наших DWH.  Тот что сделан на соплях. Так что пришлось с разбега окунуться во все это.  
          В общем новый анекдот от Microsoft: in-memory data warehouse. Они похоже реально верят что оперативка является бесконечным ресурсом. И очень дешевым. В MS SQL Server 2012 они всячески продвигают свое новое решение - tabular modeling. Если в кратце - это новый тип моделей, которые работают на  xVelocity(VertiPaq) analytics engine. Они называют его предметом искуства (дословно: state of art), изредка при этом упоминая что это IN MEMORY SOLUTION.  Справшивается - зачем строить решения для бизнес аналитики на in-memory движке ?  У вас в DWH полтора гига данных ?? или может быть целых два ??? По моему DWH это минимум пол терабайта данных. Если у вас их меньше - держите их в OLTP базе и не трахайте мозг себе и другим. Вам больше не нужен DWH. 
          Но когда построением DWH занимаются "менеджеры" они легко ведутся на этот маркетинг.  И компания оказывается в заложниках MS решений, и вынуждена покупать сервера с сотнями гигабайт оперативной памяти, просто для того чтобы все днные туда поместились. Иначе все - перестанет работать игрушка для MD.  Но кто-нибуть подумал что данные в DWH добавляются быстрее чем 64 килобайта в год, как об этом думают в Microsoft.
                Но даже если вы выберете другой тип моделей - multidimensional models или tabular models in DirectQuery mode - не все так хорошо как вы думаете.  Вы все равно остаетесь в заложниках одного сервера.  MS SQL это  SMP решение, и без танцев с бубнами вы не сможете распределить данные по нескольким серверам. Это значит что масштабироваться вы все равно сможете только вертикально - покупать все более и более дорогие сервера. Скажем до 10TB вы сможете держать на одном MS SQL instance, но потом ценник на сервера улетит в небеса. Вообще у Microsoft есть ответ и в этом случай - PWD, Parallel Data Warehouse. Но это уже совсем другие деньги, так сказать.  Хотя они и считают его бюджетным - по сравнению с Oracle Exadata, Teradata - оно конечно выглядит бюджетным, но вообще ценник кусается. 
             А выше идут специализированные аапаратно-программные решения от Oracle, IBM и узко специализированных вендоров. В решениях такого класса самые ресурсоемкие операции - типа сжатия/распаковки данных и маршрутизации данных между нодами реализованы в железе, на FPGA.  Естественно никакая софтовая реализация по скорости с FPGA тягаться не может.
           Но самое парадоксальное что я выяснил - есть open source решения которые могут  успешно конкурировать с решениями от Microsoft/Oracle/Teradata практически во всех сегментах, кроме последнего. Это Hadoop. Бесплатное, работает на дешевых серверах - бери и ездий. Для статистического анализа можно использовать язык R, который стал де-факто стандартом для статистов.  Единственное - runtime для R, который поддерживает параллельную обработку данных в Hadoop является проприетарным. Но я думаю там ценник совсем другого уровня, по сравнения с Oracle/Microsoft.