Uber数据库转型:从Postgres到MySQL的Schemaless系统
153 浏览量
更新于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-02-15 上传
2021-03-18 上传
2021-04-01 上传
2021-04-01 上传
2021-05-02 上传
weixin_38748207
- 粉丝: 7
- 资源: 917
最新资源
- SwiLex是Swift中的通用词法分析器库。-Swift开发
- laravel-46883:库索·德·拉拉维尔(Curso de Laravel)código46883
- 不明飞行物
- Honey Muffin-crx插件
- remi:Python REMote接口库。 平台无关。 大约100 KB,非常适合您的饮食
- dot-http:dot-http是基于文本的可编写脚本的HTTP客户端
- diaosi.rar_人工智能/神经网络/深度学习_Visual_C++_
- 数据科学课程
- App Android Faculdade-开源
- ML100Days
- Umbraco Helper Extension-crx插件
- Prac5.zip_Linux/Unix编程_C/C++_
- 连接:Flask之上的SwaggerOpenAPI First Python框架,具有自动端点验证和OAuth2支持
- VB做的IP地址输入框
- minsk-shop
- UIViews和CALayer类的有用扩展,以添加漂亮的颜色渐变。-Swift开发