告别 Kafka,拥抱 Databend:构建高效低成本的用户行为分析体系

用户行为数据埋点指标是数据仓库中不可或缺的重要数据源之一,同时也是企业最宝贵的资产之一。通常情况下,用户行为数据分析包含两大数据源:用户行为分析日志和上游关系型数据库(如 MySQL)。基于这些数据,企业可以进行用户增长分析、用户行为研究,甚至通过用户行为分析精准排查用户问题。

用户行为数据分析的挑战

用户行为数据分析的特点决定了要构建一套可扩展、灵活且低成本的分析架构并非易事,具体表现在以下几个方面:

  1. 高流量和大容量:用户行为数据的产生量非常大,对存储和分析能力要求高;
  2. 兼顾多种分析需求:既需支持 BI 报表的静态展示,也需满足灵活的 Adhoc 查询;
  3. 多样化 数据格式:用户行为数据通常包含结构化数据与半结构化数据(如 JSON);
  4. 实时性要求:需要对用户行为快速响应,实现及时反馈。

由于这些复杂性,大多数初创企业和中小型公司通常会选择通用埋点系统(如 Google Analytics、Mixpanel)作为用户行为分析的起点。这些系统只需在网站中插入 JSON 代码,或在 APP 中嵌入 SDK,即可自动采集并上传埋点数据,生成访问量、停留时间、转化漏斗等指标。 

然而,通用埋点系统虽然简单易用,但在实际使用中存在以下不足:

  1. 数据 明细 的缺失。 通用埋点系统往往不会提供用户具体的访问明细日志,只能在 UI 中查询预设的报表;
  2. 自定义查询能力不足。 通用埋点系统的查询模式并非标准 SQL 查询接口,当数据科学家希望构建复杂的 adhoc 查询时,由于缺少 SQL 能力,难以支持复杂的自定义查询;
  3. 成本快速上升。 通用埋点系统一般采用阶梯计费模式,往往到了一个阶梯时,费用会翻倍。随着企业流量的持续增长,如果要查询更大范围的用户行为数据时,成本会迅速增加。

自建用户行为分析体系的复杂性

为了应对通用埋点系统的局限性,不少企业在业务增长到一定阶段后,往往都会选择自建一套用户行为埋点数据分析体系。通常情况下,传统自建架构多基于 Hadoop 大数据生态,典型实现流程如下:

  1. 在客户端(APP、网站)中埋入 SDK,采集用户行为日志 activity logs;
  2. 使用 Activity gateway 埋点指标网关,收集客户端发来的日志,并将日志转到 Kafka 消息总线;
  3. 利用 Kafka 将日志 logs 落到 Hive 或 Spark 等计算引擎;
  4. 通过 ETL 工具将数据导入数据仓库,生成用户行为分析报表。

虽然这一架构在功能上能够满足需求,但其复杂性和维护成本极高:

  1. Kafka 需要依赖 Zookeeper ,还需要配备 SSD 硬盘保障性能。
  2. 从 Kafka 到 Data Warehouse 需要 kafka-connect ;
  3. Spark 要运行在 YARN 上,ETL 需要 Airflow 管理;
  4. 当 Hive 存储达到上限,可能还需要将 MySQL 换成 TiDB 等分布式数据库。

这种架构不仅需要大量的技术团队投入,还极大增加了运维负担。而在企业不断追求降本增效的背景下,传统 Hadoop 架构已不再适合需要简单、高效的业务场景。

新选择:基于 Databend Cloud 的轻量化用户行为分析

随着技术的演进,企业在设计用户行为数据埋点架构时有了新的选择。Databend Cloud 凭借简洁的架构和灵活性,提供了一种高效且低成本的用户行为分析解决方案。

  1. Databend Cloud 的架构特性

    1. 100% 面向对象存储,完全存储计算分离,显著降低存储成本;
    2. Rust 编写的 Query 引擎性能高,价格低廉。在计算资源闲置时自动休眠,不产生额外费用;
    3. 支持 100% ANSI SQL ,支持半结构化数据分析(JSON 和自定义 UDF)。当用户有一些比较复杂的 JSON,可以用内置的 JSON 分析能力或自定义的 UDF,分析半结构化数据;
    4. 内置 Task 调度驱动 ETL,完全无状态,自动弹性伸缩。

  1. 典型架构实现

企业可以通过以下流程快速搭建用户行为数据分析体系:

  • 日志采集与存储:不再需要 Kafka,用户直接将埋点日志通过 vector 以 ndjson 格式落到 S3。
  • 数据摄入与处理:在 Databend Cloud 中创建一个 copy task 任务,自动把日志拉出来,落到 S3。很多时候,S3 在 Databend Cloud 中可以当做一个 stage,落到 stage 里面的东西就可以被 Databend Cloud 自动吸进来,然后在 Databend Cloud 中进行处理,再从 S3 转出去。
  • 查询与报表分析:通过自动休眠的 Warehouse 运行 BI 报表/即席查询,休眠时不产生任何费用。

通过上述方式,Databend Cloud 能够以最简化的方式实现企业对高效用户行为分析的需求。

案例:Databend Cloud 在用户行为分析的应用实践

某互联网应用公司有一个典型的用户行为分析场景,在做架构选型时选择了 Databend Cloud 进行用户行为数据分析体系的搭建。在使用 Databend Cloud 后,该用户放弃了 Kafka,直接用 Databend Cloud 建了一个 stage ,把用户行为日志落在 S3 中,再用 task 导进 Databend Cloud 中。最终,该公司仅用一个下午便完成了 POC,从复杂的 Hadoop 架构切换到 Databend Cloud,极大简化了运维和操作成本。

用户所需要的准备工作非常简单。首先,准备两个 Warehouse,一个用于 Task 摄入数据,一个用于 BI 报表查询。一般来说,摄入数据的时候可以用一个规格小点的 Warehouse,查询的 Warehouse 规格高一点,因为查询不会一直查,可以节省更多成本。

然后点击 connect 获得一个连接串,这个连接串可以放在 BI 报表用于查询。Databend 提供了各种语言的 Driver。

接下来的准备工作只有三步,一是建表,其中的字段与 NDJSON 格式的日志一致。然后创建一个 stage,将存放用户行为日志的 S3 目录录进来,然后再创建一个 task ,每一分钟或者十秒钟执行一次。它会自动把 stage 里的文件导进来,然后自动把它清理掉。准备工作完成后,就可以源源不断地把用户行为日志录进来。

架构对比与收益

通过对比通用埋点系统、传统 Hadoop 架构和 Databend Cloud,Databend Cloud 的优势显而易见:

  • 架构简洁性:摆脱了复杂的大数据生态,无需 Kafka、Airflow 等组件。
  • 成本优化:利用对象存储和弹性计算实现低成本的存储与分析。
  • 灵活性与性能:支持高性能 SQL 查询,满足多样化的业务场景。

此外,Databend Cloud 提供了快照机制,支持数据的时点回溯(Timetravel),确保数据安全性和可恢复性。

在构建用户行为数据埋点系统时,除了存储、计算方面的成本,维护成本也是架构选型的重要因子。Databend Cloud 通过对象存储与计算分离的架构革新,彻底改变了传统用户行为数据分析体系的复杂性。企业可以轻松搭建一套高性能、低成本的埋点分析架构,实现从数据采集到分析的全流程优化。这一方案无疑为企业在降本增效的同时释放了数据的最大价值。

关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

👨‍💻‍ Databend Cloud:databend.cn

📖 Databend 文档:docs.databend.cn/

💻 Wechat:Databend

✨ GitHub:github.com/databendlab…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构 (8)线性表的应用——一元多项式的表示及应用

一、一元多项式的定义 一元多项式是代数学研究的基本对象之一,可以表示为: P_n(x) p_0 p_1x p_2xn 其中,p_0, p_1, ..., p_n 是数域 F 中的数,n 是非负整数,x 是变量。 二、一元多项式的线性表表示 在计算机中&…

如何安全高效地打开和管理动态链接库(DLL)?系统提示dll丢失问题的多种有效修复指南

动态链接库(DLL)文件是Windows操作系统中非常重要的一部分,它们包含了程序运行所需的代码和数据。当系统提示DLL文件丢失时,可能会导致应用程序无法正常运行。以下是一些安全高效地打开和管理DLL文件以及修复DLL丢失问题的方法&am…

基于微信小程序的平价药房管理系统+LW参考示例

1.项目介绍 系统角色:管理员、医生、普通用户功能模块:用户管理、医生管理、药品分类管理、药品信息管理、在线问诊管理、生活常识管理、日常提醒管理、过期处理、订单管理等技术选型:SpringBoot,Vue,uniapp等测试环境…

鸿蒙ArkUI-X已更新适配API13啦

ArkUI-X 5.0.1 Release版配套OpenHarmony 5.0.1 Rlease,API 13,新增适配部分API 13接口支持跨平台;框架能力进一步完善,支持Android应用非压缩模式,支持Android Fragment对接跨平台。ACE Tools工具易用性提升&#xff…

《生成式 AI》课程 第3講 CODE TASK执行文章摘要的机器人

课程 《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己-CSDN博客 任务1:总结 1.我们希望你创建一个可以执行文章摘要的机器人。 2.设计一个提示符,使语言模型能够对文章进行总结。 model: gpt-4o-mini,#gpt-3.5-turbo, import…

【人工智能】深入解析GPT、BERT与Transformer模型|从原理到应用的完整教程

在当今人工智能迅猛发展的时代,自然语言处理(NLP)领域涌现出许多强大的模型,其中GPT、BERT与Transformer无疑是最受关注的三大巨头。这些模型不仅在学术界引起了广泛讨论,也在工业界得到了广泛应用。那么,G…

Python开发环境搭建+conda管理环境

下载Miniconda 推荐从清华镜像下载安装包 Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 打开网页后,下拉到最后找到Miniconda3-latest前缀的文件,或者网页中直接搜索Miniconda3-latest,都可以找…

python控制鼠标,键盘,adb

python控制鼠标,键盘,adb 听说某系因为奖学金互相举报,好像拿不到要命一样。不禁想到几天前老墨偷走丁胖子的狗,被丁胖子逮到。他面对警察的问询面不改色坚持自我,反而是怒气冲冲的丁胖子被警察认为是偷狗贼。我觉得这…

使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件

使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件 文章目录 使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件什么是 exe4j准备工作打包 Spring Boot 项目为 EXE 文件1.启动 exe4j2. 选择项目类型3. 配置项目名称和输出目录4. 配置项目类型或可执行文件名称5. java配…

【操作文档】mysql分区操作步骤.docx

1、建立分区表 执行 tb_intercept_notice表-重建-添加分区.sql 文件; DROP TABLE IF EXISTS tb_intercept_notice_20241101_new; CREATE TABLE tb_intercept_notice_20241101_new (id char(32) NOT NULL COMMENT id,number varchar(30) NOT NULL COMMENT 号码,cre…

使用 pycharm 新建不使用 python 虚拟环境( venv、conda )的工程

有时候我们发现一个好玩的 demo,想赶快在电脑上 pip install 一下跑起来,发现因为 python 的 venv、conda 环境还挺费劲的,因为随着时间的发展,之前记得很清楚的 venv、conda 的用法,不经常使用,半天跑不起…

安全设备-日志审计-数据管理

7 日志审计系统数据管理 7.1 日志审计系统数据管理概述 日志审计系统数据管理系统自身数据存储管理,并对自身配置、采集的日志进行统一管理。 7.2 日志审计系统数据管理配置举例 7.2.1 用户场景 用户通过数据管理配置,实现对系统的备份、清理、转存…

简单的Activiti Modoler 流程在线编辑器

简单的Activiti Modoler 流程在线编辑器 1.需求 我们公司使用的流程是activiti5.22.0,版本有些老了,然后使用的编辑器都是eclipse的流程编辑器插件,每次编辑流程需要打开eclipse进行编辑,然后再导入到项目里面,不是特…

玩转 uni-app 静态资源 static 目录的条件编译

一. 前言 老生常谈,了解 uni-app 的开发都知道,uni-app 可以同时支持编译到多个平台,如小程序、H5、移动端 App 等。它的多端编译能力是 uni-app 的一大特点,让开发者可以使用同一套代码基于 Vue.js 的语法编写程序,然…

云技术-docker

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团…

【C++】从C语言到C++学习指南

如果你也是从C语言一路过来的,那么请一起看下去吧! 文章目录 面型对象程序设计C基础C和C一些语法区别C在非对象方面对C语言的扩充C的一些标准(兼容旧标准) 首先,在C的学习中,我们要时刻清醒一点&#xff1…

【FPGA开发】Vivado自定义封装IP核,绑定总线

支持单个文件的封装、整个工程的封装,这里用单个文件举例。 在文件工程目录下,自建一个文件夹,里面放上需要封装的verilog文件。 选择第三个,指定路径封装,找到文件所在目录 取个名,选择封装IP的路径 会…

CA系统(file.h---申请认证的处理)

#pragma once #ifndef FILEMANAGER_H #define FILEMANAGER_H #include <string> namespace F_ile {// 读取文件&#xff0c;返回文件内容bool readFilename(const std::string& filePath);bool readFilePubilcpath(const std::string& filePath);bool getNameFro…

前端-Git

一.基本概念 Git版本控制系统时一个分布式系统&#xff0c;是用来保存工程源代码历史状态的命令行工具 简单来说Git的作用就是版本管理工具。 Git的应用场景&#xff1a;多人开发管理代码&#xff1b;异地开发&#xff0c;版本管理&#xff0c;版本回滚。 Git 的三个区域&a…

深入浅出摸透AIGC文生图产品SD(Stable Diffusion)

hihi,朋友们,时隔半年(24年11月),终于能腾出时间唠一唠SD了🤣,真怕再不唠一唠,就轮不到SD了,技术更新换代是在是太快! 朋友们,最近(24年2月)是真的没时间整理笔记,每天都在疯狂的学习Stable Diffusion和WebUI & ComfyUI,工作实在有点忙,实践期间在飞书上…