В зависимости от типа намеченных исследований сегодня есть выбор среди нескольких платформ для бизнес-аналитики и больших данных.
По оценкам экспертов, лидерство на рынке принадлежит Hadoop, прежде всего благодаря его возможностям исследовать данные практически без ограничений на объем. Проводимый с помощью Hadoop анализ легко масштабируется. Количество вычислительных узлов, используемых в расчетах, может исчисляться тысячами, совокупный объем привлекаемых данных может превышать 100 Пб. Помимо Hadoop для масштабных исследований можно также применять платформы, построенные на базе Spark или Mesos.
Однако на рынке насчитается не так много компаний, которым требуются исследования таких масштабов. Остальным нужно что-то менее масштабное.
Например, собирать операционную аналитику можно с помощью распределенных баз данных. Если же они вызывают трудности из-за сложности освоения, то можно остановить выбор на традиционных реляционных СУБД, таких как PostgreSQL или MySQL — при подходящих условиях они также приносят неплохие результаты.
NoSQL и NewSQL
Если масштаб планируемых исследований не настолько велик, и пользователю требуется решать оперативные аналитические задачи, связанные с изучением рыночных трендов и привлечением данных в реальном времени, то можно сделать выбор в пользу баз данных типа NoSQL: MongoDB, Cassandra и Couchbase. Их транзакционный механизм полностью переработан под новые условия. Теперь они хорошо удовлетворяют требованиям ACID, обеспечивают надежную предсказуемость в работе, обладают совместимостью с SQL и т. д.
Другой вариант для выбора — это распределенные реляционные базы данных; часто их называют NewSQL. Это — отдельный тип современных СУБД, совмещающих в себе преимущества NoSQL, хорошую горизонтальную масштабируемость, но при этом работа с ними практически не отличается от применения классических СУБД. Примерами баз данных этого типа являются Clustrix, MemSQL и VoltDB.
Помимо названных существует еще один класс технологий, который направлен на наращивание мощности реляционных СУБД за счет использования распределенных хранилищ. Речь идет о системах, типичным примером которых является DeepSQL. В этом продукте применяется традиционный движок СУБД, который дополнен функцией «гипериндексации». Его назначение — позволить СУБД работать с массивами операционной памяти огромной емкости, более 200 Гб.
CitusDB
Следующее направление в развитии реляционных СУБД — это внедрение полноценного параллелизма при обработке. Работающая в этой нише компания Citus Data занимается разработкой механизма CitusDB, позволяющего перейти от использования PostgreSQL на отдельном узле к параллельной обработке данных сразу на нескольких вычислительных узлах, причем для этого не требуется вносить изменений на прикладном слое системы.
В недавно выпущенном релизе CitusDB 5.0 появилась функция автофрагментации (auto-sharding capability). Ранее она была доступна через отдельный продукт в семействе Citus Data — pg_shard. Смысл нововведения — позволить фрагментировать таблицы в реальном времени при параллельном выполнении операций чтения и записи. Прикладное значение нового механизма втом, что он позволяет разделить СУБД на фрагменты и поддерживать параллельно работу с хранилищем с выполнением транзакционных запросов на передачу данных, с одной стороны, и обработку запросов для подсистемы аналитики, с другой.
CitusDB представляет собой PostgreSQL 9.5, дополненный надстройкой Citus. После завершения установки PostgreSQL эта надстройка трансформирует СУБД в распределенные клоны с несколькими исполняющими центрами. Каждый из них поддерживает свою вычислительную нагрузку, работая параллельно с другими подсистемами. У каждого центра имеется свой механизм контроля непрерывной доступности приложений при сбоях серверов, что достигается за счет создания фоновых копий системы обработки и их синхронной работы с основным механизмом. У каждого исполняющего центра также имеется своя поддержка для функции автофрагментации, работает собственный механизм поддержки репликаций, и т. д.
CitusDB предназначена в первую очередь для аналитики в реальном времени по быстро изменяющимся данным. Это может быть анализ информационных потоков, описывающих поведение посетителей веб-сайтов и мобильных клиентов, работу датчиков Интернета вещей и т. п. Динамически получаемые результаты выводятся на информационную панель, содержимое которой постоянно обновляется, а выводимая информация служит для принятия бизнес-решений.
По словам, Крейга Керстиенса, бывшего сотрудника компании Heroko, поставщика услуг PostgreSQL-as-a-Service, интенсивный поток данных в реальном времени ведет к быстрой перегруженности отдельной СУБД PostgreSQL. Приложение начинает собирать данные в общую таблицу, размеры которой прогрессируют очень быстро. Проблемы с PostgreSQL начинаются, когда объем накопленных данных переваливает за 100 Гб. Для исправления ситуации приходится фрагментировались данные PostgreSQL вручную или запускать другой экземпляр СУБД. Однако полностью выправить ситуацию удается редко.
Расширение PostgreSQL путем его надстройки в виде CitusDB ведет к тому, что сбор данных в транзакционной системе продолжается, а запросы от блока аналитики выполняются отдельно, одновременно с основной системой. Такая функциональность не заменяет «озер данных» Hadoop (Hadoop data lake) и архитектур с массивной параллельной обработкой данных (MPP data warehouse), но для многих случаев решение CitusDB вполне годится для выполнения пакетно-ориентированных ETL- или SQL-запросов, решения задач машинного обучения. Система CitusDB заполняет тем самым нишу, связанную с быстрой обработкой процессов в реальном времени при высокой скорости генерации исходных данных.
Как считает основатель Citus Data Умур Чубукчу, CitusDB пригодится для обработки данных объемом в 1 Тб или хотя бы в несколько сотен гигабайт, которые не удается разместить все вместе в оперативной памяти отдельного компьютера. «Некоторые используют его взамен Amazon RedShift или Google BigQuery. Причина объясняется легко: имея 100 Гб данных в BigQuery, достаточно сложно обработать их на отдельной машине», — отметил он.
По мнению Чубукчу, такие программы расчета аналитики редко запускаются в кластерной среде, когда в распоряжении пользователя имеется несколько десятков нодов. Поэтому на кластерных системах можно легко обработать сотни терабайт данных, что невозможно сделать на более слабых конфигурациях. «Механизм PostgreSQL отработан достаточно хорошо, поэтому с ним не возникает проблем с совместимостью. Самая большая проблема — обеспечить одновременную обработку огромного потока поступающих данных и запросы на их чтение, приходящие через короткие интервалы в доли секунды. В это время с накопленными данными работают очень многие пользователи: одновременно к базе данных могут направляться по несколько тысяч запросов», — пояснил Чубукчу.
CitusDB — бесплатный, свободно распространяемый продукт. Citus Data предлагает также версию Enterprise, которая отличается наличием технической поддержки, административных инструментов для балансировки и масштабирования нагрузки PostgreSQL, средств контроля безопасного доступа и наличием библиотеки Citus Real-Time Behavior Analytics.