datamart-design-review
在数据集市、分析服务表或语义数据集涉及粒度、度量公式、表或列变更、迁移影响等需要明确证据的情况下,进行设计或评审
共 424771 条已上架资产
在数据集市、分析服务表或语义数据集涉及粒度、度量公式、表或列变更、迁移影响等需要明确证据的情况下,进行设计或评审
使用 mariadb 命令行工具对 MariaDB/MySQL 数据库模式进行快速只读检查
指导团队为 FastMCP 系统构建评估框架和自动化基准测试,涵盖能力发现、P95 延迟分布、并发负载下的吞吐量(asyncio
指导AI助手:存储模式变更的“破坏性”程度取决于具体的存储技术和其访问模式,而非通用规则——涵盖适用于单次部署无法完成的变更的扩展-收缩模式(先添加字段、双写、回填、切换,最后才移除旧字段),设计字段时需考虑其缺失时的优雅处理,并有意识地选…
检测 31 种口味的代码异味(即将一组固定的允许值通过 ENUM 或 CHECK 约束硬编码到列的元数据中),这种模式会导致查询、添加、重命名和弃用值时都需要修改表结构,并建议使用带有外键的查找表来替代
检测“伪键洁癖”反模式——将自增主键中的空缺视为需要修复的问题,通过重用最低未使用值或重新编号现有行以保持连续性
检测“朴素树”反模式——仅使用 parent_id 邻接表对层次结构/树形数据进行建模,然后在 SQL 中费力地获取任意深度的祖先或后代节点——并根据实际的访问模式指导采用递归 CTE、路径枚举、嵌套集或闭包表等方案
标准SQL外键错误检查清单 — 引用方向错误、表创建顺序不当、引用非键列、将复合键拆分为多个约束、列顺序错误、数据类型/排序规则不匹配、孤立数据、在NOT NULL列上使用SET NULL、约束名称重复以及表类型不匹配
检测“模糊分组”反模式——选择了一个既不在 GROUP BY 子句中,也未使用聚合函数包裹的列,却期望数据库“自动推断”该列应来自产生 MAX()/MIN() 值的行——这种写法要么会报错,要么(在 MySQL/SQLite 中)静默返回任…
解释因将保留关键字(如 order、from、table、year_month 等)用作未加引号的标识符而导致的 SQL 语法错误,以及如何通过数据库的分隔标识符语法(双引号、反引号或方括号)来修复这些问题——或者更优的做法是:从一开始就避…
检测“索引霰弹枪”反模式——即通过猜测而非测量来添加或删除索引(完全没有索引、为每一列或所有排列组合创建索引,或创建了查询实际无法使用的索引)——并引导采用 MENTOR 方法论(测量、解释、提名、测试、优化、重建)来有目的地选择索引
检测“幻影文件”反模式——将图像或其他二进制媒体存储为外部文件,而数据库中仅保留路径名列——这种模式会丧失事务保障(提交/回滚)、垃圾回收、备份覆盖和访问控制,并在这些保障重要时引导使用 BLOB 列
关系规范化规则参考——表成为真正关系的条件,包括第一范式到第五范式,以及Boyce-Codd范式、域键范式和第六范式,同时澄清常见误解(规范化与性能无关、伪键问题、并非“将所有内容分离”)
检测“无键录入”反模式(即跳过外键约束,转而尝试在应用代码中强制实施引用完整性),并指导用户声明带有适当 ON UPDATE/ON DELETE 操作的外键约束
检测 SQL 注入 —— 通过拼接或插值未经验证的应用程序数据(用户输入,甚至是从数据库读取的数据)到查询字符串中,然后再进行解析,从而构建 SQL 语句
标记开发/生产数据库版本和配置漂移问题——代码依赖的 SQL 功能(语法、函数、数据类型)比生产环境数据库版本更新,导致本地运行正常但部署失败——并建议在不同环境间保持数据库版本和设置一致
检测并修复“乱穿马路”反模式——将多值或多对多关系存储为单个列中以逗号分隔的 ID 列表——通过将其替换为适当的交叉表来实现
检测“舍入错误”反模式——即对货币或其他精确分数值使用 FLOAT/REAL/DOUBLE PRECISION 类型——这种类型会静默地对 IEEE 754 二进制无法精确表示的小数值进行舍入,从而破坏相等性比较,并在求和/求积运算中累积误…
检测“未知恐惧”反模式——在算术运算、字符串拼接、相等性比较以及 IN/NOT IN 列表中将 NULL 视为普通值(或反之),而 SQL 的三值逻辑会静默地产生 NULL/未知结果,而非预期结果——并指导用户正确使用 IS NULL、IS…
解释为何重命名线上表或列会引发“鸡生蛋蛋生鸡”式的部署难题——在滚动部署过程中,数据库变更和代码变更无法原子性地同时生效