Scenario 20: Analytics Platform 数据分析平台
V1 — 1人用:纯前端图表展示
Section titled “V1 — 1人用:纯前端图表展示”你想做一个数据Dashboard原型,展示一些业务指标图表。
你要解决什么
Section titled “你要解决什么”- 硬编码JSON数据作为数据源
- Chart.js画折线图、柱状图、饼图
- 维度筛选(时间范围、分类)
- 响应式布局,多图表排列
给AI的Prompt
Section titled “给AI的Prompt”用HTML+CSS+JS+Chart.js做一个数据分析Dashboard。数据硬编码在JS中(模拟7天的PV/UV、 各渠道转化率、用户设备分布)。包含:折线图(日PV/UV趋势)、柱状图(渠道对比)、 饼图(设备分布)。支持日期范围筛选(近7天/30天切换,用不同的硬编码数据)。 网格布局,卡片式图表,顶部显示关键指标数字(总PV、总UV、平均转化率)。
- 三种图表正确渲染
- 日期范围切换后数据和图表更新
- 关键指标数字显示正确
- 移动端布局自适应
你学到了什么
Section titled “你学到了什么”- Chart.js图表库使用 → Module: 数据可视化
- 数据筛选与UI联动 → Module: 前端状态管理
- 响应式网格布局 → Module: CSS Grid
V2 — 10人用:数据采集+简单聚合
Section titled “V2 — 10人用:数据采集+简单聚合”需要真实采集用户行为数据,不再用硬编码。
你要解决什么
Section titled “你要解决什么”- 打点数据采集API(POST /track)
- 事件数据存JSON文件(按天一个文件)
- 简单聚合API(按天统计PV/UV)
- JS SDK一行代码接入打点
给AI的Prompt
Section titled “给AI的Prompt”Go+Gin后端。POST /api/track 接收事件数据(event_name, properties, user_id, timestamp), 追加写入 data/events/2024-01-15.json(按天分文件,每行一个JSON)。 GET /api/stats/daily?start=2024-01-01&end=2024-01-15 读取文件,聚合每天的事件数、 独立用户数。GET /api/stats/events 返回各事件名的计数排行。 写一个极简JS SDK:analytics.track(“page_view”, {page: “/home”}),自动带上user_id和时间。
- 打点数据正确写入按天文件
- 聚合API返回正确的日统计
- JS SDK调用简单,自动补全字段
- 文件并发写入不丢数据(文件锁)
你学到了什么
Section titled “你学到了什么”- 事件采集设计 → Module: 数据埋点
- JSON Lines文件格式 → Module: 数据存储格式
- 文件并发写入 → Module: 并发控制
V3 — 100人用:时序存储+Dashboard
Section titled “V3 — 100人用:时序存储+Dashboard”数据量增大,文件聚合太慢,需要数据库和预聚合。
你要解决什么
Section titled “你要解决什么”- PostgreSQL存储事件,按天分区
- 预聚合表:每小时/每天的指标自动计算
- 定时聚合任务(每小时跑一次)
- Dashboard页面:多维度图表+实时数据
给AI的Prompt
Section titled “给AI的Prompt”迁移到PostgreSQL。事件表按created_at按月分区(PostgreSQL声明式分区)。 创建预聚合表 daily_stats(date, event_name, count, unique_users)和 hourly_stats(hour, event_name, count)。Go定时任务每小时聚合上一小时数据 插入预聚合表。Dashboard API从预聚合表读取,响应时间<50ms。 前端Dashboard用React+Chart.js,支持:日趋势、事件排行、用户留存表格。
- 分区表创建正确,查询走分区裁剪
- 预聚合定时任务按时执行
- Dashboard加载<1秒
- 支持至少3种图表维度
你学到了什么
Section titled “你学到了什么”- 数据库分区 → Module: PostgreSQL高级
- 预聚合模式 → Module: OLAP基础
- 定时任务 → Module: 后台调度
V4 — 1000人用:实时计数+漏斗分析
Section titled “V4 — 1000人用:实时计数+漏斗分析”产品经理需要实时数据和转化漏斗分析。
你要解决什么
Section titled “你要解决什么”- Redis存储实时计数(当前在线、今日PV)
- 定时任务将Redis计数同步到DB
- 漏斗分析:定义步骤序列,计算每步转化率
- 数据导出功能
给AI的Prompt
Section titled “给AI的Prompt”Redis实时计数:每次事件 INCR day:{date}:pv,PFADD day:{date}:uv {user_id}(HyperLogLog)。 实时API从Redis读,延迟<10ms。每5分钟定时任务将Redis计数快照写入DB。 漏斗分析API:POST /api/funnel,body指定步骤序列(如[“visit”,“add_cart”,“pay”]), 查询每步的用户数和转化率。用窗口期7天内完成算转化。 数据导出:GET /api/export/events?date=2024-01-15 导出CSV文件。
- 实时PV/UV数据秒级更新
- HyperLogLog UV误差<2%
- 漏斗转化率计算正确
- CSV导出格式规范,大数据量不OOM
你学到了什么
Section titled “你学到了什么”- Redis计数器模式 → Module: Redis应用
- HyperLogLog → Module: 概率数据结构
- 漏斗分析算法 → Module: 产品分析
V5 — 1万人用:列式存储+即席查询
Section titled “V5 — 1万人用:列式存储+即席查询”事件量达亿级,PostgreSQL查询太慢,需要OLAP引擎。
你要解决什么
Section titled “你要解决什么”- ClickHouse列式存储应对海量事件
- SQL即席查询界面(用户自己写SQL)
- 留存分析(N日留存曲线)
- 数据导入管道(PostgreSQL → ClickHouse)
给AI的Prompt
Section titled “给AI的Prompt”部署ClickHouse,创建事件表(MergeTree引擎,按日期分区,按event_name排序)。 数据管道:PostgreSQL事件表每小时增量同步到ClickHouse。 即席查询API:POST /api/query,接收SQL(限制只能SELECT,加LIMIT 1000), 返回结果+执行耗时。前端SQL编辑器(Monaco Editor),表格展示结果。 留存分析:计算注册后第1/3/7/14/30天的回访率,用热力图展示。
- 亿级数据查询<3秒
- SQL注入防护(只允许SELECT)
- 留存热力图数据正确
- 数据管道增量同步无遗漏
你学到了什么
Section titled “你学到了什么”- 列式存储原理 → Module: ClickHouse
- OLAP vs OLTP → Module: 数据库选型
- 留存分析 → Module: 用户生命周期
V6 — 10万+用户:数据平台
Section titled “V6 — 10万+用户:数据平台”全公司统一数据平台,支持实时+离线+自助分析。
你要解决什么
Section titled “你要解决什么”- Kafka统一数据收集入口
- Flink流处理实时指标
- 数据湖存储原始数据(长期保留)
- 自助分析:拖拽式报表生成器
给AI的Prompt
Section titled “给AI的Prompt”数据收集统一走Kafka(topic: raw-events)。Flink消费Kafka: 1)实时聚合写入Redis(实时Dashboard)2)清洗后写入ClickHouse(即席查询) 3)原始数据写入对象存储/数据湖(Parquet格式,按天分目录)。 自助分析:可视化查询构建器,用户选择指标+维度+筛选条件, 自动生成SQL发到ClickHouse。支持保存报表、定时邮件发送。 数据血缘:记录每个指标的计算逻辑和数据来源。
- Kafka→Flink→多端输出链路通畅
- 实时指标延迟<30秒
- 自助查询构建器生成正确SQL
- 数据湖Parquet文件可被Spark读取
- 历史数据可回溯至少90天
你学到了什么
Section titled “你学到了什么”- 流批一体架构 → Module: Flink
- 数据湖 → Module: 数据平台架构
- 自助分析 → Module: BI工具设计