news 2026/10/29 11:06:48

给问数平台开一个只读账号,我是这么把这条线焊死的

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
给问数平台开一个只读账号,我是这么把这条线焊死的

不替换原系统,只加问数入口,这句话落地靠一条底线,问数平台连的是一个只读账号。原系统照常记房源、记合同、记账单,问数平台连进去只能看,改不了也删不了。

把这条线怎么焊死的过程记下来,给同样在接园区的同学参考。

图263 左边是园区系统本来的样子,右边是后来叠上去的问数入口,中间那道门只朝外开。

先划清能看哪些

园区系统里表不少,生产库、报表库、日志库都挤在一起。我们没把整库授权给问数平台。按经营主题拆出来,只把四个主题对应的视图交出去,房源、租客、合同、账单。基表一张不授权。

这么做有个直接好处。问数平台读的是加工后的结果,不是原表。原系统表结构怎么调,只要视图口径不动,问数平台那边一句问话都不用改。

图264 房子外面一道矮墙,墙上只留一道小拱门朝外开,墙里头的东西不从别处露出来。

建账号只给读

账号本身限定了来源网段,只能从问数平台那台机器连。即便口令哪天漏了,别的机器也连不上。权限上只授视图的查询,基表一律不给。

sql

-- 创建专用只读账号,限定来源网段 CREATE USER 'wenda_ro'@'10.20.%' IDENTIFIED BY '****'; -- 只授予四个经营主题视图的查询权限 GRANT SELECT ON park_bi.v_house TO 'wenda_ro'@'10.20.%'; GRANT SELECT ON park_bi.v_tenant TO 'wenda_ro'@'10.20.%'; GRANT SELECT ON park_bi.v_contract TO 'wenda_ro'@'10.20.%'; GRANT SELECT ON park_bi.v_bill TO 'wenda_ro'@'10.20.%'; -- 反向确认,账号上没有任何写权限 SHOW GRANTS FOR 'wenda_ro'@'10.20.%';

SHOW GRANTS 跑出来应当只有 SELECT,看不到 INSERT、UPDATE、DELETE 任何一个。

图265 一把钥匙只插在能开的读锁上,旁边那把写锁是锁死的,钥匙根本不对。

把口径焊进视图

只给读还不够。空置率、应收实收这些算法,我们直接写在视图里。问数平台拿到的就是算好的结果,不用它再去原表拼公式。

sql

-- 把账单口径封装进视图,与原系统财务报表定义一致 CREATE VIEW park_bi.v_bill AS SELECT building_id, period, SUM(due_amount) AS receivable, -- 应收,不含预收押金 SUM(paid_amount) AS received, -- 实收 SUM(paid_amount) / NULLIF(SUM(due_amount), 0) AS collection_rate -- 收缴率 FROM fin_bill GROUP BY building_id, period;

口径只存在一处。原系统财务报表怎么定义,视图就怎么算,谁后面接手都能一眼看懂,不用翻两份文档对来对去。

留一份查询底稿

只读不代表没法管。问数平台每一次查询,我们都落一条日志记录,谁、什么时间、问了什么、返回多少行。

sql

-- 查询日志表,留存每一次问数的可追溯底稿 CREATE TABLE park_bi.query_log ( id BIGINT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(64), asked_at DATETIME, question TEXT, rows_returned INT, src_view VARCHAR(64) );

真要出岔子,能按时间回放每一步,看清楚是哪个问法、查的哪张视图、返回了多少数据。

图266 一个上锁的箱子,箱面是空的,放大镜悬在箱子外头看。平台看得到结果,看不到箱子里原表的细节。

验证它真写不进去

配完别急着交付,拿只读账号自己试一条写操作。预期是必然报错,报出来就说明线焊死了。

sql

-- 用只读账号执行写操作,预期必然被拒 INSERT INTO fin_bill (building_id, due_amount) VALUES (3, 1000); -- ERROR 1142 (42000): INSERT command denied to user 'wenda_ro'

看到 ERROR 1142 这一行,心里才踏实。原系统照常记房源、记合同、记账单,一个字没动。

图267 老房子、问数入口、小桥连成一圈,业务发生、数据沉淀、开口提问、拿结果决策,转完一轮回到业务本身。

回头看这件事

两套系统分工就是这样,一个管发生,一个管看懂。只读账号是这条分工的物理边界,不是一句挂在嘴边的口号。把边界、账号、口径、底稿四件事做齐,问数平台就是一个加在原系统上的问数入口,既不碰数据,也改不了业务。

少等一次取数,少做一次重复工作,少一次反复解释。这是我们接问数平台最实在的三句话。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/29 11:06:45

learn-claude-code为什么会反复压缩上下文?一次已合并的 PR 实践

我给一个接近 8 万 Star 的开源项目提交了 PR,最近已经通过审核并合并! 这个项目就是最近爆火的 learn-claude-code, 这次我主要对他的上下文压缩模块的snip_compact函数进行了修改,引入滞回阈值,给压缩操作留出缓冲&…

作者头像 李华
网站建设 2026/10/29 11:06:42

AI在软件测试的未来中处于什么位置?(2)

大家好,我是陈哥。 上次我们聊了AI对于测试领域的两项新技术,这周继续聊聊AI能帮我们做多少事。 这话听上去有点保守,我认为AI目前最有价值的位置其实是助手。AI真正的本事是让以前只能想想的自动化工具变得简单,或者说门槛一下子…

作者头像 李华
网站建设 2026/10/29 11:06:02

推理与Agent应用增长之后 AI数据中心如何做好动态热管理

用户向AI发出一次请求,背后可能是多轮模型推理、工具调用与结果处理。请求之间的计算量不同,同一次任务的各个阶段,也可能呈现不同的算力需求。这些变化最终会反映到基础设施上:服务器功率随任务变化,热量在不同节点和…

作者头像 李华
网站建设 2026/10/29 11:05:58

带你上手高通跃龙 QCS8550 (2): QNN底座与QAI AppBuilder完整安装指南

QNN 驱动与 QAI AppBuilder 的关系 原厂纯净的 Linux 系统(如 Ubuntu 22.04 LTS)并未内置高通 AI 驱动生态。要在这块芯片上运行 AI 应用,我们需要自底向上搭建两层核心软件栈: 底层驱动:Qualcomm AI Runtime (QAIRT…

作者头像 李华
网站建设 2026/10/29 11:05:10

为什么网上到处都是网盘资源链接?聊聊免费资源背后的商业逻辑

为什么网上到处都是网盘资源链接?聊聊免费资源背后的商业逻辑 不知道大家有没有发现,现在上网找资料,越来越容易遇到各种网盘链接。 比如搜索一个 Python 学习教程,打开文章,最后附着一个网盘链接;想下载一…

作者头像 李华