Правильное может и должно быть быстрымКаковы же новые формы борьбы за священный прогресс, за данные, за легкий и простой доступ к ним? Здесь нет одного отдельного рецепта — здесь работает только сразу много всего в комплексе.
Детальный бизнес-анализ и упрощение запросов, оптимизация ETL-процессов, оптимизация бизнес-логики аналитических систем за счет датацентричной архитектуры, каскадная подготовка данных для использования, создание слоя «горячих» и «теплых» данных, MPP и многие другие современные и эффективные технологии, которые просто не уместились в настоящий «Манифест быстрой аналитики», — вот этот набор в самых общих чертах.
Необходимо ограничить бизнес в полете его фантазии. Отказаться от подхода «мы так хотим, а вы обеспечивайте». Все имеет цену и эффект и должно быть очень детально оценено на целесообразность и эффективность. Из тысячи сотрудников с аналитической функцией только единицам реально нужно грузить данные из какого-нибудь SAP BW и крутить в онлайне многомерные кубы со ста миллиардами строк. А системы всем ставят одинаковые. В каких-то компаниях вообще не нужно крутить многомерные кубы, а если «припрет», то будет достаточно одного рабочего места и компьютера помощнее — им вовсе не нужно лезть на сервер. Выделенный компьютер аналитика — только одно из возможных решений.
ETL — тоже бесконечная область оптимизации. Множество решений, множество технологий. Но концепция тоже уже не работает. Теперь это не только «Extract, Transform, Load». Теперь важно давать обратную связь по данным, отслеживать их происхождение, анализировать, почему и на какой стадии мог произойти сбой. Это могут далеко не все ETL-процессоры. И ETL должен быть при этом очень скоростным. JBDС — это, конечно, удобно и всем знакомо, но часто в современном технологическом стеке самое удобное оказывается одновременно самым медленным. Альтернатива — более широкое использование нативных коннекторов, например, FDW или HTTP, чтобы обеспечить прямой доступ к данным без дополнительных преобразований.
Идем далее. Берем данные «тепленькими» и когда они нужны. Концепция слоев данных должна использоваться повсеместно. Чтобы обеспечить скорость обработки информационных запросов, организуем работу трех слоев данных: «горячих», «теплых» и «холодных». Для этого модернизируем ETL-процессы и создаем «горячий» и «теплый» слой данных (например, технология Luxms Data Boring или любая другая). Разные СУБД по-разному подходят для различных слоев данных. Слой быстрых, «горячих» данных лучше строить на массивно-параллельных системах с высокой скоростью отклика. Пример: ClickHouse.
Хранение слоя «теплых» данных хорошо обеспечивают такие MPP СУБД, как Greenplum, Oracle Exadata. Для «холодных» данных можно использовать Hadoop или S3.
Архитектурный ответ тоже есть — датацентричность. Оптимизация исполнения бизнес-логики за счет датацентричной архитектуры, в частности, при запросах детализации данных. Эффективность трехзвенной архитектуры — сегодня уже не аксиома, а теорема, доказательство которой в конкретной среде часто приводит к обратным выводам. Датацентричность подразумевает перенос вычислений ближе к исходным данным, максимальное использование новейших возможностей систем управления данными. Принцип датацентричности в аналитической системе должен проявляться в широком использовании хранимых процедур в базе данных для реализации бизнес-логики и размещении сервера приложений и основной бизнес-логики внутри базы данных. Получаем датацентричность ядра системы, желательно еще и написанного на датацентричном языке — PL/pgSQL. Эти идеи были подробно изложены в докладах наших коллег из ГК Luxms в журнале ACM (
Association for Computing Machinery) и на конференциях PostgresConf 2019 в Нью-Йорке и реализованы в BI-платформе Luxms BI, используемой в ряде крупнейших российских клиентов. Максимально короткий путь прохождения ответа из базы данных на клиент (в двухзвенной клиент-серверной архитектуре) — это очень важно.