Когда-нибудь ли вы оказывались в ситуации, когда вам нужно балансировать задержку данных и пропускную способность? У вас есть огромные входящие данные, которые нужно обработать, но вы также хотите обеспечить точность результатов. Это общая проблема, с которой сталкиваются многие специалисты по данным.
В фильме “Ядро” есть сцена, где двух геофизиков просят объяснить аномалии, отображаемые на экране компьютера. Один из них начинает бормотать, а другой признается: “Скажите со мной: я не знаю”. Хотя научная точность фильма может быть сомнительной, эта сцена подчеркивает важность признания собственной невежественности вместо притворства быть осведомленным.
Когда дело доходит до обработки данных, существуют разные подходы к балансировке задержки данных и пропускной способности. Один из вариантов – уступить полусправедливым агрегациям, которые можно быстро получить, пожертвовав точностью ради низкой задержки и высокой пропускной способности. Другой вариант – ждать точных результатов, даже если это означает большую задержку и меньшую пропускную способность.
Но что, если у вас могут быть лучшие из обоих миров? В этом случае вступает в игру архитектура Lambda. Архитектура Lambda предоставляет два уровня данных для обработки входящих данных: уровень потока и уровень пакета.
Уровень потока предназначен для обработки недавно полученных данных и обеспечивает низкую задержку и высокую пропускную способность. Данные на этом уровне становятся доступными практически мгновенно, но скорость доступа к данным жертвуется точностью и чистотой результатов.
С другой стороны, уровень пакета требует больше времени для получения правильных результатов и используется для исправления любой неполноты или некорректности данных, сгенерированных уровнем потока. Он обеспечивает высокую точность, но за счет большей задержки и меньшей пропускной способности.
Служебный уровень объединяет вывод из обоих уровней – потока и пакета, предоставляя объединенное представление с точными данными до последней обработанной пакетной операции вместе с практически мгновенно доступными новыми данными на уровне потока.
Используя архитектуру Lambda, вы можете обрабатывать данные точно и эффективно, используя как уровень потока, так и уровень пакета. Однако важно отметить, что поддержание двух разных технологических решений может быть сложной задачей в долгосрочной перспективе.
Теперь вы можете задаться вопросом о значении термина “архитектура Lambda”. Изначально может показаться, что он связан с лямбда-исчислением, которое выражает вычисления на основе абстракции функций и применения с использованием переменных. Однако термин не связан непосредственно с этой концепцией.
Одно из возможных объяснений термина “архитектура Lambda” – это визуальное представление греческой буквы лямбда (λ), где два потока данных (уровни потока и пакета) разделены и получены из одного источника. Но истинное происхождение термина остается неизвестным.
В заключение, архитектура Lambda предлагает решение проблемы балансировки задержки данных и пропускной способности. Она предоставляет два уровня данных – уровень потока и уровень пакета, которые позволяют достичь как низкой задержки, так и высокой пропускной способности, а также высокой точности. Хотя поддержание двух разных технологических решений может вызывать трудности, преимущества архитектуры Lambda делают ее ценным подходом в SQL Server.
Помните, что нормально признавать, когда есть вещи, которые мы не знаем, как геофизики в фильме “Ядро”. Принятие нашей невежественности может привести нас к изучению новых концепций и поиску инновационных решений.
Спасибо за прочтение этого блога. Если вас интересует, вы можете посмотреть сцену из фильма “Ядро”, где геофизики признают свою невежественность здесь.