SuperAPI AI 工具集

mariadb-syntax-dynamic-columns

通用与其它

查看项目

更新于 10-15 22:18

技能介绍

用途:指导在 MariaDB 中使用动态列,把稀疏或异构属性存进单个 BLOB/MEDIUMBLOB/LONGBLOB 列,并处理与 JSON 的取舍、键索引和旧结构迁移。

主要能力:覆盖八个函数 COLUMN_CREATE、COLUMN_ADD、COLUMN_GET、COLUMN_DELETE、COLUMN_EXISTS、COLUMN_LIST、COLUMN_CHECK、COLUMN_JSON。COLUMN_GET 必须带类型标签,如 COLUMN_GET(blob, 'name' AS CHAR(64)),类型不匹配返回 NULL 且无警告,建议先用 COLUMN_EXISTS 判断键是否存在。支持的类型标签包括 BINARY、CHAR、DATE、TIME、DATETIME、DECIMAL、DOUBLE、INTEGER、SIGNED、UNSIGNED,没有 JSON 标签。COLUMN_JSON 可把 blob 转成 JSON 文档用于导出、调试或迁移;反向没有 JSON_TO_DYNAMIC 函数。COLUMN_CHECK 校验完整性,可放进 CHECK 约束拒绝损坏写入。

使用方式:动态列是 MariaDB 独有,MySQL 任何版本都没有 COLUMN_* 函数,跨库可移植场景不要使用。新结构默认优先 JSON,除非有实测的体积或性能优势。不能直接索引动态列 blob,需用 COLUMN_GET 生成 VIRTUAL 或 PERSISTENT 生成列再建索引。命名列模式自 MariaDB 10.0 起为首选,编号模式不应在新代码中使用,两种模式不能混用。嵌套最多 10 层,每 blob 最多 65535 列,blob 大小受 max_allowed_packet 限制。

适用场景:数据仅存于单个 MariaDB 实例、属性稀疏、且已实测 JSON LONGTEXT 过大或过慢时,动态列是可辩护的选择,需记录测量依据。

限制:对非 MariaDB 工具不透明,调试较难,没有 JSONPath 等价能力;迁移到 JSON 需在应用代码中用 COLUMN_CREATE 反向构造。具体版本行为与更多示例见资料中的 MariaDB KB 链接。