3000万个应用共享一套数据库:多租户“逻辑表”架构是如何做到的?

大家好,我是小耶,写功课只是为了我踩过的坑,你们别再踩了!

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 不愁

还有什么想了解的,欢迎留言!小耶一定知无不言言无不尽......我们下次见~

相关推荐
爱喝水的鱼丶1 小时前
SAP-ABAP:S/4 HANA ABAP 新特性入门:与 ECC ABAP 的核心差异、架构优势与学习路径规划
运维·数据库·性能优化·sap·abap·hana·开发交流
安易算力7 小时前
昇腾CANN算子开发与MindSpore部署调优实践:从Ascend C到模型推理全链路
网络·架构
余槐i7 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
数据库小学妹8 小时前
PostgreSQL表膨胀怎么办?autovacuum清不动的根因与排查命令
数据库·postgresql·表膨胀·mvcc·数据库运维
mister_guo8 小时前
MySQL-1267错误:排序规则冲突的原因与解决方案
数据库·mysql
骇客野人8 小时前
在麒麟操作系统上 分别安装 jdk1.8, 达梦数据库,redis ,memcache 的操作实施方案和步骤
数据库·redis·memcached
美狐美颜SDK开放平台10 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
省钱兄--zs11 小时前
深圳24小时自助健身房软硬件解决方案实战指南与开发流程详解
java·数据仓库·spring boot·小程序·架构
用户03906147071911 小时前
PMSM 矢量控制(FOC)环路公式推导
架构
HaipengYu11 小时前
从 Config Hook 到 Server/TUI:OpenCode 插件 V1 到 V2 的架构演进
人工智能·架构