定时脚本 → 文件
个人收集;一台机器;输出只有你自己看
$0 · 极低
△ 别人开始依赖你的输出,或者你的电脑一关机就会丢数据
图集 · L0–L3
数据系统是一台在没人看着的时候也要一直干活的机器:按计划抓取信源、清洗返回的内容、存起来、发布结论。它的故障都很安静:信源改了格式,任务悄悄跳过了,页面还把昨天的数字当成今天的在展示。这套图纸画出这类系统可能的形态,以本站自己的世界情报雷达作为实例。
设计哲学
数据系统是一个承诺:它的数字是真的,而且是新的。什么都不显示是诚实的;把过期数据当新鲜数据展示,是一个被自动说出口的谎言。
危险的故障不是崩溃,而是任务跳过了、返回了空、还报告成功。在证明不是之前,把空结果一律当成警报。
在转换之前,先存下信源实际返回的内容。逻辑可以修好再重跑,没留下来的数据就是没了。
每个结论都要指向它的信源和采集时间,预测要公开对账。信任来自可以被核对,而不是来自语气笃定。
只为自己收集数据?一个定时写文件的脚本就够了。当别人开始依赖你的输出时,再换成托管的定时任务加数据库;只有一次运行已经塞不进时间上限时,才上队列。
你一直在手动翻同样几个信源,想让机器替你做。唯一的读者是你,所以漏跑一次,代价只是一段空白。
一个脚本在你自己的电脑上定时运行,抓几个信源,每次运行写一个带日期的文件。原始响应和清洗后的结果存在一起。
Δ 本级新增
对应地图上的形态: 定时脚本 → 文件
哪门语言解析你的信源最好就用哪门。优先用官方的订阅源和 API,而不是抓网页:它们更不容易坏,使用条款也更清楚。
开始有人看你的页面、订阅你的日报了。你的笔记本合上,不能再意味着丢数据;一个错误的数字,现在会误导别人。
定时任务搬到托管平台上,每小时跑一次采集器,写进数据库,并提供一个公开页面。每一条数据入库之前都要对照预期的格式校验,每一次运行都记录自己的健康状况。
Δ 本级新增
对应地图上的形态: 托管定时任务 + 数据库 + 站点(雷达的形态)
选一个定时任务、数据库和网站住在一起的平台;零件越少,静默故障越少。设计任务之前,先查清平台单次运行的时间和 CPU 上限。
其他值得了解的工具 · 本站未验证
读者开始拿你的输出做决定,订阅者可能付费,有些信源带着使用条款或个人信息。一个错误的数字、一个泄露的字段,现在都会有后果。
结论连同它的信源和日期写进只追加的账本,预测到期时由代码自动结算。原始响应归档到便宜的存储里,每个信源的使用条款单独记录,个人数据在存入之前就被过滤掉。
Δ 本级新增
对应地图上的形态: 托管定时任务 + 数据库 + 站点(雷达的形态)
把判断和记账分开:分析可以由模型写,但一个预测到底准没准,必须由任何人都能重跑的普通代码来结算。
几百个信源已经塞不进单次运行的时间上限,每小时总有几个失败,而且有人想跨好几年的历史提问。
采集拆成队列里的许多小任务,每个都单独重试,跑两遍也安全。原始归档成为唯一的事实来源,分析层从归档重新生成,而不是手工修改。
Δ 本级新增
对应地图上的形态: 基于队列的流水线 · 数据仓库 + 分析层
先上队列,再上数据仓库。大多数数据系统先撞上的是单次运行的时间上限,远早于遇到一个数据库答不了的问题。
其他值得了解的工具 · 本站未验证
这件事所有可能的搭法。它们大半的意义,是让你知道哪些现在还不该碰。
个人收集;一台机器;输出只有你自己看
$0 · 极低
△ 别人开始依赖你的输出,或者你的电脑一关机就会丢数据
有别人依赖的公开页面或推送;单次运行一分钟以内
$0–5/月 · 低–中
△ 一次运行塞不进平台的时间或 CPU 上限,或者信源需要并行抓取
信源很多、需要重试、步骤必须扛得住部分失败
$5–50/月 · 中–高
△ 分析的人需要跨好几年的历史提问,而不只是看最新一页
大量历史数据、很多使用方、谁也没预料到的问题
$50–500+/月 · 高
△ 这是最顶层。如果一个数据库还答得了你的问题,就留在下面
每个概念一句人话 + 一个比喻。点击任何工具模块,也有同款科普。