大家好,我是小耶,写功课只是为了我踩过的坑,你们别再踩了!
8月初,OceanBase首次公开了支撑蚂蚁灵光AI生成应用的数据架构实践。
灵光平台让用户通过一句话就能生成一个"闪应用"------记账本、报名页面、打卡工具、调查问卷......目前已经承载了约3000万个这样的应用。
3000万个应用,每个都需要独立的数据存储和查询能力。如果是传统架构,要么为每个应用创建独立的物理表------物理表数量爆炸;要么把所有数据塞进一张大JSON表------SQL计算能力直接失效。
OceanBase给出的答案是:逻辑表。
一、传统方案的两难困境
方案一:每个应用一张物理表
每个闪应用独立建表------3000万个应用就有3000万张表。数据库的元数据管理压力巨大,表数量爆炸会导致系统表膨胀、DDL操作缓慢、备份恢复时间急剧增加。
方案二:所有应用共用一张大表
把所有应用的数据塞进一张大表,用app_id字段区分。SQL引擎需要处理海量数据,查询时必须扫描全表再过滤app_id,索引效率极低。当单个应用数据量增长时,还会影响其他所有应用的查询性能。
两条路都走不通。灵光需要的是一套"中间方案"------应用层感觉独立,底层共享存储。
二、逻辑表架构的核心设计
逻辑表 vs 物理表
每个"闪应用"在操作层面仍然拥有独立的表结构------可以建表、插入数据、执行SQL查询,和使用独立数据库的体验完全一样。
但底层并不为每个应用创建独立的物理表。逻辑表是对物理存储的抽象映射。用户看到的是"我自己的表",数据库底层看到的是"共享物理存储上的一个逻辑分区"。
JSONTable SDK
应用层通过JSONTable SDK与数据库交互。用户对逻辑表的操作(建表、插入、查询)被SDK转化为对共享物理存储的操作------数据以JSON格式写入底层物理表,读取时再映射回用户感知的逻辑表结构。
受控SQL计算
当用户执行SQL查询时,SQL引擎会自动注入租户隔离条件------每个查询只看到属于自己租户的数据,不会"越界"看到其他应用的数据。权限隔离在数据库内核层面完成,不需要应用层额外处理。
三、与传统多租户方案的区别
传统的多租户方案通常有两种做法:
-
独立数据库:每个租户一个数据库------资源浪费严重,管理成本高
-
共享数据库+租户字段 :所有租户一张表,用
tenant_id区分------查询需全表扫描,隔离性差
OceanBase的逻辑表方案走的是第三条路:
-
操作层独立:每个应用看到的是自己独立的表结构,可以建表、插数据、执行SQL,体验跟独立数据库一模一样
-
存储层共享:底层不创建独立的物理表,所有逻辑表共享同一套物理存储
-
隔离层内建:多租户的权限隔离在数据库内核层面天然保障,不需要应用层额外处理
这种设计解决了两个核心问题:物理表数量不再随应用数量线性增长,存储成本大幅下降;多租户的权限隔离也天然得到保障。
四、为什么这套架构值得关注?
这不是一个"技术概念",而是一个已经在生产环境验证的架构。3000万个应用跑在同一套数据库上,验证了逻辑表方案在真实场景下的可行性。
它反映了一个更大的趋势:数据库正在从"面向人"走向"面向AI Agent"。当AI可以批量生成应用,数据库面对的已不再只是容量和性能问题,而是被Agent持续生成的海量动态数据空间。每一个AI生成的应用都需要独立的数据能力,传统"一个应用一个数据库"的模式已经无法支撑。
五、总结
多租户"逻辑表"架构的本质,是在"应用独立"和"资源共享"之间找到了一个平衡点:
-
每个应用拥有完整的SQL体验
-
底层共享一套物理存储
-
3000万个应用共享一套数据库
-
某个应用增长到足够大时,可以一键迁移到独立的物理表
这套架构的价值不在于"多租户"本身,而在于它证明了:当数据规模从"人"的尺度变成"Agent"的尺度时,数据库架构需要被重新设计。逻辑表方案提供了一个可扩展的路径------让AI生成的应用从一开始就拥有独立的数据能力,而不用等到规模大了再重构。
小耶在手,SQL 不愁
还有什么想了解的,欢迎留言!小耶一定知无不言言无不尽......我们下次见~