跳到主要内容

数据库联邦

数据库联邦怎样统一访问多个数据源?​

  • 数据库联邦: 在多个自治数据源之上提供统一逻辑视图,使调用方可以通过共同接口访问数据;
  • 联邦模式: 描述不同源之间的共同结构和映射,把查询拆解并转换到各自的数据接口;
  • 异构来源: 底层可以使用不同 DBMS、数据模型、硬件或协议,联邦层负责适配差异;
  • 使用体验: 调用方不必逐个了解数据实际存放位置,但底层性能和故障仍会影响结果;
调用方 → 联邦查询层 → 用户库
→ 订单库
→ 其他数据源
合并结果 ← 各来源返回

联邦系统需要维护哪些性质?​

性质对使用者的意义
透明性隐藏位置和接口差异
异构性支持不同数据模型和协议
可扩展性新来源能够接入共同视图
自治性来源保有自身管理边界
集成能力把分散数据组合成可用结果
  • 适用条件: 数据分属不同系统或团队,无法直接集中搬迁,却需要统一查询或共享;
  • 收益: 减少应用直接耦合遗留数据库的方式,保留各来源的独立管理;

数据库联邦与按业务分库有什么区别?​

  • 业务分库: 按功能把用户、订单等数据拆到不同数据库,主要解决责任和容量边界;
  • 联邦访问: 进一步提供跨这些来源的统一逻辑视图,不是只要分库就自动形成联邦系统;
  • 原文用词: 原文把 federation 与 functional partitioning 并列使用,这里区分数据拆分和统一查询两个层面;
  • 与分片区别: 分片通常把同类数据按键拆开,业务分库按不同功能拆开;

跨来源查询会付出什么代价?​

  • 联接代价: 需要从不同来源取数并组合,网络和中间结果可能成为主要瓶颈;
  • 优化难点: 各来源索引、统计和执行能力不同,联邦层难以像单库一样精确控制计划;
  • 故障依赖: 某个自治数据源不可用或改变接口,可能影响整个统一查询;
  • 运维成本: 适配器、权限映射、硬件与版本兼容增加复杂度,不应为一个简单单库问题先引入联邦;