Databend x 沉浸式翻译 | 基于 Databend Cloud 构建高效低成本的业务数据分析体系

「沉浸式翻译」是一个非常流行的双语对照网页翻译扩展工具,用户可以用它来即时翻译外文网页、PDF 文档、ePub 电子书、字幕等。它不仅可以实现原文加译文实时双语对照显示,还支持 Google、OpenAI、DeepL、微软、Gemini、Claude 等数十家翻译平台服务的自定义设置,在网络上好评如潮。

随着用户量持续增长,其运营和产品团队希望在尊重用户隐私的前提下,通过业务数据为业务增长研究提供决策依据。

业务挑战

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

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

  1. 高流量和大容量:业务数据的产生量非常大,对存储和分析能力要求高;

  2. 兼顾多种分析需求:既需支持 BI 报表的静态展示,也需满足灵活的 Adhoc 查询;

  3. 多样化数据格式:业务数据通常包含结构化数据与半结构化数据(如 JSON);

  4. 实时性要求:需要对业务数据快速响应,实现及时反馈。

由于这些复杂性,「沉浸式翻译」背后的团队早期选择了通用埋点系统(Google Analytics)作为业务数据分析工具。这种系统只需在网站中插入 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 等分布式数据库。

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

为什么选择 Databend Cloud?

「沉浸式翻译」技术团队在做架构选型时选择了 Databend Cloud 进行业务数据分析体系的搭建。Databend Cloud 凭借简洁的架构和灵活性,提供了一种高效且低成本的业务数据分析解决方案:

  • 100% 面向对象存储,完全存储计算分离,显著降低存储成本;

  • Rust 编写的 Query 引擎性能高,价格低廉。在计算资源闲置时自动休眠,不产生额外费用;

  • 支持 100% ANSI SQL ,支持半结构化数据分析(JSON 和自定义 UDF)。当用户有一些比较复杂的 JSON,可以用内置的 JSON 分析能力或自定义的 UDF,分析半结构化数据;

  • 内置 Task 调度驱动 ETL,完全无状态,自动弹性伸缩。

在使用 Databend Cloud 后,「沉浸式翻译」放弃了 Kafka,通过使用 Databend Cloud 建 stage ,将业务日志导入到 S3 中,再用 task 导进 Databend Cloud 中进行数据处理。

  • 日志采集与存储:不再需要 Kafka,直接将埋点日志通过 vector 以 ndjson 格式落到 S3。

  • 数据摄入与处理:在 Databend Cloud 中创建一个 copy task 任务,自动把日志拉出来,落到 S3。很多时候,S3 在 Databend Cloud 中可以当做一个 stage,落到 stage 里面的数据可以被 Databend Cloud 自动摄取,然后在 Databend Cloud 中进行处理,再从 S3 转出去。

  • 查询与报表分析:通过自动休眠的 Warehouse 运行 BI 报表/即席查询,休眠时不产生任何费用。

Databend 作为一家工程师文化的国际公司,其在开源社区的贡献和口碑让沉浸式翻译的技术团队相信Databend对客户数据的尊重和保护。Databend 在海外和境内的服务是相对独立的。虽然沉浸式翻译目前没有对海外用户进行统计和分析,但未来如果有对海外数据分析的需求,架构也方便迁移和继承。

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

解决方案

对于「沉浸式翻译」来说,构建这样一套业务数据分析架构所需要做的准备工作非常简单。首先,准备两个 Warehouse,一个用于 Task 摄入数据,一个用于 BI 报表查询。摄入数据的时候可以用一个规格小点的 Warehouse,查询的 Warehouse 规格高一点,因为查询通常不会一直查,这样可以节省更多成本。

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

接下来的准备工作只需三步:

  1. 建表,其中的字段与 NDJSON 格式的日志一致;

  2. 创建一个 stage,将存放业务数据日志的 S3 目录录进来;

  3. 创建一个 task ,每一分钟或者十秒钟执行一次。它会自动把 stage 里的文件导进来,然后自动清理掉。

Vector 配置如下:

```TOML
[sources.input_logs]type = "file"include = ["/path/to/your/logs/*.log"]read_from = "beginning"[transforms.parse_ndjson]type = "remap"inputs = ["input_logs"]source = '''. = parse_json!(string!(.message))'''[sinks.s3_output]type = "aws_s3"inputs = ["parse_ndjson"]bucket = "${YOUR_BUCKET_NAME}"region = "%{YOUR_BUCKET_REGION}"encoding.codec = "json"key_prefix = "logs/%Y/%m/%d"compression = "none"batch.max_bytes = 10485760  # 10MBbatch.timeout_secs = 300    # 5 minutesaws_access_key_id = "${AWS_ACCESS_KEY_ID}"aws_secret_access_key = "${AWS_SECRET_ACCESS_KEY}"
```

准备工作完成后,就可以源源不断地把业务数据日志录进 Databend Cloud 中进行分析。

架构对比与收益

通过对比通用埋点系统、传统 Hadoop 架构和 Databend Cloud,Databend Cloud 具有显著优势:

  • 架构简洁性:摆脱了复杂的大数据生态,无需 Kafka、Airflow 等组件。

  • 成本优化:利用对象存储和弹性计算实现低成本的存储与分析。

  • 灵活性与性能:支持高性能 SQL 查询,满足多样化的业务场景。

此外,Databend Cloud 提供了快照机制,支持数据的时点回溯(Timetravel),可以帮助「沉浸式翻译」确保数据安全性和可恢复性。

最终,「沉浸式翻译」技术团队仅用一个下午便完成了全部 POC 测试,从复杂的 Hadoop 架构切换到 Databend Cloud,极大简化了运维和操作成本。

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

关于 Databend

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

👨‍💻‍ Databend Cloud:<https://databend.cn>

📖 Databend 文档:<https://docs.databend.com>

💻 Wechat:Databend

✨ GitHub:<https://github.com/databendlabs/databend>
 

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

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

相关文章

LabVIEW纤维集合体微电流测试仪

LabVIEW开发纤维集合体微电流测试仪。该设备精确测量纤维材料在特定电压下的电流变化&#xff0c;以分析纤维的结构、老化及回潮率等属性&#xff0c;对于纤维材料的科学研究及质量控制具有重要意义。 ​ 项目背景 在纤维材料的研究与应用中&#xff0c;电学性能是评估其性能…

哈工大:LLM高质量嵌入模型KaLM-Embedding

&#x1f4d6;标题&#xff1a;KaLM-Embedding: Superior Training Data Brings A Stronger Embedding Mode &#x1f310;来源&#xff1a;arXiv, 2501.01028 &#x1f31f;摘要 &#x1f538;随着检索增强生成在大型语言模型中的盛行&#xff0c;嵌入模型变得越来越重要。尽…

Baklib打造高效内容管理平台提升协作与创作体验

内容概要 随着信息化时代的迅猛发展&#xff0c;高效的内容管理已成为各类团队日常工作中不可或缺的一部分。Baklib的内容管理平台正是应运而生&#xff0c;旨在为团队提供一个集协作、创作与管理于一体的解决方案。该平台通过其直观的界面和一系列创新功能&#xff0c;帮助用…

通过高效的侦察发现关键漏洞接管整个IT基础设施

视频教程在我主页简介或专栏里 在这篇文章中&#xff0c; 我将深入探讨我是如何通过详细分析和利用暴露的端点、硬编码的凭据以及配置错误的访问控制&#xff0c;成功获取目标组织关键IT基础设施和云服务访问权限的全过程。 我们先提到目标网站的名称 https://*sub.domain*.co…

【Linux笔记】Day4

关机重启 登录注销 注意用户名只能是小写 用户管理 pwd显示当前在哪个目录下&#xff1a; 删除用户 连带着用户文件夹都删掉 高权限用户切换到低权限用户无需输入密码 clear能把当前屏幕显示清掉 如果之前加的用户没有指定组&#xff0c;它会创建一个和用户同名的组&a…

A7. Jenkins Pipeline自动化构建过程,可灵活配置多项目、多模块服务实战

服务容器化构建的环境配置构建前需要解决什么下面我们带着问题分析构建的过程:1. 如何解决jenkins执行环境与shell脚本执行环境不一致问题?2. 构建之前动态修改项目的环境变量3. 在通过容器打包时避免不了会产生比较多的不可用的镜像资源,这些资源要是不及时删除掉时会导致服…

一个简单的自适应html5导航模板

一个简单的 HTML 导航模板示例&#xff0c;它包含基本的导航栏结构&#xff0c;同时使用了 CSS 进行样式美化&#xff0c;让导航栏看起来更美观。另外&#xff0c;还添加了一些 JavaScript 代码&#xff0c;用于在移动端实现导航菜单的展开和收起功能。 PHP <!DOCTYPE htm…

Winform如何取消叉号,减号和放大(两种)

方法一: 找到窗体属性 MaximizeBoxFalse; MinimizeBoxFalse; ControlBoxFALSE; 方法二: 点击Form 在From里面找到Form-Closing 这个事件 写入 if(e.CloseReasonCloseReason.UserClosing) { MessageBox.Show("对不起,你不能关闭") e.Cancel true; }

OpenCV:开运算

目录 1. 简述 2. 用腐蚀和膨胀实现开运算 2.1 代码示例 2.2 运行结果 3. 开运算接口 3.1 参数详解 3.2 代码示例 3.3 运行结果 4. 开运算应用场景 5. 注意事项 6. 总结 相关阅读 OpenCV&#xff1a;图像的腐蚀与膨胀-CSDN博客 OpenCV&#xff1a;闭运算-CSDN博客 …

MIMIC-IV数据部署(博主较忙,缓慢更新)

1. 用到的数据准备 在下面的网站&#xff0c;注册、申请、推荐人从邮箱里帮忙确认。 通过后&#xff0c;拉到页面的最下面。把那个将近10个G的文件给下载下来。 可以在晚上睡觉的时候下载&#xff0c;第二天早上起来“收数据”。 MIMIC-IV v3.1 2. 用到的软件准备 7-zip …

二叉树-堆(补充)

二叉树-堆 1.二叉树的基本特性2.堆2.1.堆的基本概念2.2.堆的实现2.2.1.基本结构2.2.2.堆的初始化2.2.3.堆的销毁2.2.4.堆的插入2.2.5.取出堆顶的数据2.2.6.堆的删除2.2.7.堆的判空2.2.8.堆的数据个数2.2.9.交换2.2.10.打印堆数据2.2.11.堆的创建2.2.12.堆排序2.2.13.完整代码 3…

省市区三级联动

引言 在网页中&#xff0c;经常会遇到需要用户选择地区的场景&#xff0c;如注册表单、地址填写等。为了提供更好的用户体验&#xff0c;我们可以实现一个三级联动的地区选择器&#xff0c;让用户依次选择省份、城市和地区。 效果展示&#xff1a; 只有先选择省份后才可以选择…

【数据结构】动态内存管理函数

动态内存管理 为什么存在动态内存管理动态内存函数的介绍&#x1f38a;malloc补充&#xff1a;perror函数&#x1f38a;free&#x1f38a;calloc&#x1f38a;realloc 常见动态内存错误对空指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一…

【xcode 16.2】升级xcode后mac端flutter版的sentry报错

sentry_flutter 7.11.0 报错 3 errors in SentryCrashMonitor_CPPException with the errors No type named terminate_handler in namespace std (line 60) and No member named set_terminate in namespace std 替换sentry_flutter版本为&#xff1a; 8.3.0 从而保证oc的…

Julius AI 人工智能数据分析工具介绍

Julius AI 是一款由 Casera Labs 开发的人工智能数据分析工具&#xff0c;旨在通过自然语言交互和强大的算法能力&#xff0c;帮助用户快速分析和可视化复杂数据。这款工具特别适合没有数据科学背景的用户&#xff0c;使数据分析变得简单高效。 核心功能 自然语言交互&#x…

智慧园区系统集成解决方案构建智能管理新模式与发展蓝图

内容概要 在当今快速发展的科技环境中&#xff0c;智慧园区系统集成解决方案为园区的管理和运营提供了一种全新的思路。这种解决方案通过集合先进的核心技术&#xff0c;帮助各种园区实现智能化管理&#xff0c;从而提高运营效率。对于工业园、产业园、物流园、写字楼乃至公寓…

AI软件外包需要注意什么 外包开发AI软件的关键因素是什么 如何选择AI外包开发语言

1. 定义目标与需求 首先&#xff0c;要明确你希望AI智能体做什么。是自动化任务、数据分析、自然语言处理&#xff0c;还是其他功能&#xff1f;明确目标可以帮助你选择合适的技术和方法。 2. 选择开发平台与工具 开发AI智能体的软件时&#xff0c;你需要选择适合的编程语言、…

设计模式面试题

一、工厂方法模式: 1.简单工厂模式: (1).抽象产品:定义了产品的规范&#xff0c;描述了产品的主要特性和功能 (2).具体产品:实现或继承抽象产品的子类 (3).具体工厂:提供了创建产品的方法&#xff0c;调用者通过该方法来获取产品 所有产品都共有一个工厂&#xff0c;如果新…

【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程

1. 简介 UDP协议&#xff08;User Datagram Protocol&#xff09;&#xff0c;全称用户数据报协议&#xff0c;它是一种面向非连接的协议&#xff0c;面向非连接指的是在正式通信前不必与对方先建立连接&#xff0c; 不管对方状态就直接发送。至于对方是否可以接收到这些数据内…

react native在windows环境搭建并使用脚手架新建工程

截止到2024-1-11&#xff0c;使用的主要软件的版本如下&#xff1a; 软件实体版本react-native0.77.0react18.3.1react-native-community/cli15.0.1Android Studio2022.3.1 Patch3Android SDKAndroid SDK Platform 34 35Android SDKAndroid SDK Tools 34 35Android SDKIntel x…