Лицензионная политика Oracle выталкивает аналитику на Hadoop +7


Крупный бизнес и кровавый энтерпрайз уже давно нашли замену взрослым рсубд на задачах DWH и аналитики. DWH массово движется в сторону DataLake и Hadoop. Выглядит, что и небольшим компаниям уже нет особого смысла запускать аналитику на серьезной рсубд. С ростом кол-ва ядер доступных даже небольшому бизнесу пытаться лицензировать полноценную редакцию взрослой субд типа Oracle смысла мало. Standard редакция Oracle хоть и лицензируется по сокетам, но при этом вырезан важнейший функционал. Во первых в standard редакции нет partitioning, есть лишь partitioning view — партишенинг таблиц на манер Postgres, который может выручить лишь в некоторых ситуациях. Во вторых нет полноценного standby, вырезаны параллельные операции. Кластер RAC ограничен четырьмя сокетами. В результате с современным ростом данных очень быстро начинаешь упираться в ограничения Standard редакции, а цена лицензирования Enterprise редакции делает это занятие бессмысленным. В оракле нужно лицензировать не только боевой сервер, но и standby сервер, при этом Enterprise редакция лицензируется по ядрам. Кластер, partitioning и DataGuard/Standby опции требуют отдельного лицензирования и тоже по ядрам. В результате даже entry level сервер с 16 ядрами и его stanby уже по EE лицензиям тянут на многие сотни тысяч долларов и обмороки у менеджмента даже кровавого энтерпрайза.

Приходится искать альтернативу в хадупах. Я попробовал сравнить некоторые запросы на витрину данных построенную на parquet файлах в хадупе, против оракла Oracle standard на 8 xeon ядрах, 196 гб рам, некий энтерпрайз сторидж с HDD и SSD кешем, который шариться еще с несколькими системами. Первый запрос затрагивает 4 таблицы, в оракле они занимали 62, 12, 6.5 и 3.5 гб. В табличке, что покрупней порядка 880 млн строк. В оракле план запроса был такой:

image

В плане я специально хотел увидеть фулсканы и хешджоины, типичные в моих аналитических запросах. В реальности запрос на standard редакции Oracle занимает порядка 7 минут. Spark 2.3 запущенный через spark2-submit на 14 executors по 4 ядра/16 гб рам выдает ответ на практически такой же запрос с 10k HDD дисков в пределах минуты. Cloudera Impala толкающаяся с yarn и spark на том же кластере (impalad на 8 нодах, ресурсов сравнимо с 14 executers по 4 ядра) стабильно выдает ответ за 11-12 секунд. При этом у Impala постоянно параллельно нагрузка идет, которая должна бы вымывать закешированные данные.

Игры с размером блока, переезд на Oracle EE редакцию с ее параллельностью и взрослым partitioning наверняка дали бы сокращение времени исполнения в несколько раз, но я слегка сомневаюсь, что время бы было сравнимо даже с тем, что я получил в Spark. С другой стороны всего 3-4 ноды практически бесплатного Cloudera Hadoop по сути позволяют в привычном SQL получить, скорости за которые пришлось бы ораклу несопоставимо большие деньги.

Ораклу стоит серьезно задуматься о лицензионной политике, если уже большие фанаты, типа меня, не находят смысла платить за Enterprise edition.




К сожалению, не доступен сервер mySQL