Uber数据库转型:从Postgres到MySQL的Schemaless系统
38 浏览量
更新于2024-08-30
收藏 242KB PDF 举报
"Uber在面对业务快速增长带来的存储挑战时,决定将其底层存储系统从Postgres迁移到MySQL,并在此基础上开发了自有的Schemaless数据库系统。这个转变主要是为了满足线性可扩展性、写缓冲能力、数据变更通知、二级索引以及高可用性的需求。在比较了多种NoSQL解决方案后,Uber技术团队选择MySQL作为Schemaless的底层存储,利用其顺序写入特性、InnoDB的Buffer Pool以及MySQL的二索引功能,来提升系统性能和稳定性。Schemaless设计为一个无模式的键值存储,允许灵活的数据存储,且在MySQL主库故障时提供写入缓冲功能。"
在早期,Uber的后台系统基于Python和Postgres构建,但随着业务的迅速扩张,原有的架构难以应对日益增长的数据量和复杂性。Uber逐渐转向微服务架构,同时对数据库系统提出了更高的要求。在评估了多种分布式数据库如Cassandra、Riak和MongoDB后,Uber发现没有现成的解决方案能够完全满足其需求,因此决定自研数据库管理系统——Schemaless。
Schemaless的核心特性包括:
1. **线性可扩展性**:通过添加服务器来增加容量,同时减少系统响应时间,确保性能随着硬件增加而提升。
2. **写缓冲能力**:当数据库持久化失败时,系统能够暂存数据,稍后重试,保证数据不丢失。
3. **数据变更通知**:通过发布-订阅机制(trigger)实现无损的数据变更传播,使得下游系统能够实时获取更新。
4. **二级索引**:MySQL的二索引功能增强了查询效率,使得Schemaless能够高效处理复杂查询。
5. **高可用性**:设计为7*24小时运行,即使在主库故障时也能保证服务不中断。
Schemaless在MySQL之上构建了一个较轻量级的层,主要负责请求的路由,使得系统能够在不严格模式验证的情况下存储JSON数据。MySQL的顺序写入特性,结合InnoDB的BufferPool,显著提高了读写性能。
Evan Klitzke的文章深入探讨了Postgres与MySQL的底层存储机制,分析了Postgres在面临特定问题时的不足,以及MySQL如何更好地适应Uber的业务需求。通过这一转型,Uber成功地构建了一个能够支撑其大规模业务扩展的数据库系统,同时保持了服务的稳定性和高性能。
2021-02-25 上传
2021-08-23 上传
点击了解资源详情
2021-02-15 上传
点击了解资源详情
2021-03-18 上传
2021-04-01 上传
2021-04-01 上传
2021-05-02 上传
weixin_38748207
- 粉丝: 7
- 资源: 917
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍