• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 关于Uber选择MySQL的思考

关于Uber选择MySQL的思考

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了Uber,MySQL等相关知识,希望本文的分享对您有所帮助
在数据库圈子,大家都知道今年Uber干出来一件大事件,把PostgreSQL切换到了MySQL,当时社区里一阵喧哗。事情已经过去半年多了,这里我不想去和大家再次讨论这两个关系型数据库那个更好。只是想带着大家思考一下选择的背后。

在该事件中,Uber提出来迁移的一个重要原因是:在大量更新的业务场景下PostgreSQL的IO方面有过多的开销(主要是从存储结构上说明),对于使用SSD或是PCI-E卡的设备基本无法容忍写放大,同时又提出了以下需求:

  • 需要有写缓冲能力,万一持久化到数据库失败时,仍可以稍后重试。

  • 需要通知下游依赖关系的方式,数据变更要能无损的通知出去。

  • 需要二级索引。

  • 系统要足够健壮,可以支持7X24服务。

  • 最重要一点,需要SchemaLess的存储支持

  • 要有能力通过增加服务器动态扩容。增加服务器不但要增加可用的硬盘容量,还要减少系统的响应时间。

Uber针对这些需求也和其它互联网厂家一样,尝试过Cassandra, Riak,MongoDB,也想过自研,但最终选择了MySQL作为存储层。 这里反问一下: MySQL能满足上面的需求吗? 例如:

  • SchemaLess 存储支持

  • 写缓冲能力,较快的故障切换

  • 较好的扩容能力

大家的印象里第一条 Schemaless都可以把MySQL秒了,但从文章里看 Uber技术负责人:Jakob Thomsen 最终使用了MySQL做Schemaless存储方案。我的神啊,大家没看错,没看错,就是使用的MySQL做的schemaless存储方案。

带着好奇心驱动,再来看一下MySQL,你会发现从MySQL 5.7 引入了两个重量级的特性,正好符合Uber的需求:

  • DocumentStore

  • X-协议

下面分别说明一下:

DocumentStore

从MySQL 5.7后可以认为MySQL也开始NoSQL了,支持json类型,加入更多的json支持 。感受一下:

934.jpg

支持CRUD等传统SQL操作。为了更好的支持NoSQL接口,在此基础又推出了另一个重量级的协议:X-协议。以及围绕着推出一堆的 mysqlsh ,各种程序的 Driver。如果你现在还不去了解,可能很快就Out喽

X-协议
全新的协议, 减少交互开销, 减少消息大小,支持管道处理,支持通知处理

对NoSQL支持更友好,更丰富的数据处理接口,考虑到数据Sharding实现
更高速的Query响应

上面这两个功能也是MySQL 8.0要重点发力的两个功能。知识更新很快,如果还不知这两个的特性的朋友,要抓紧时间更新一下知识了。MySQL开始要发威了,最近更新非常的快。

也正是这两个特性,正好满足Uber的需求,基于NoSQL接口存储,底层数据保障使用MySQL的Replication复制(MySQL Group Replication马上也GA了)。在NoSQL接口层很容易做到数据的拆分及路由设制,底层复制又较好的保证的数据可用安全性。

MySQL已经不是当初的那个关系型数据库了,现在有更多特性需要你去深入挖掘


以上就是关于Uber选择MySQL的思考的内容,更多相关内容请关注微课江湖()!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于Uber选择MySQL的思考

相关文章

  • 2018-12-05mysql中使用UDF自动同步memcached效率笔记
  • 2018-12-05有关主多从的课程推荐10篇
  • 2018-12-05快速插入大量数据的asp.net代码(Sqlserver)
  • 2018-12-05关于mysql_fetch_row()函数的10篇文章推荐
  • 2018-12-05MySQL入门教程7 —— 常用数据库查询的示例
  • 2018-12-05Oracle数据库密码文件的使用与维护
  • 2018-12-05分享关于MySQ函数的实例介绍
  • 2018-12-05MyBatis的逆向工程的解析及简单教程(附代码)
  • 2018-12-05MySQL基础教程1 — 数据类型之数值类型
  • 2018-12-05MySQL中关于加密和解密的实例详解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MySQL NULL 值处理
    • 解析Mysql临时表及特点
    • php 读取mysql数据库三种方法
    • MHA 清理relay log(purge_relay_logs)
    • MySql如何取消密码强度验证
    • mysql如何处理varchar与nvarchar类型中的特殊字符
    • 双机HA函数定义与用法汇总
    • mysql语句入门详解
    • 使用mysql_num_rows()函数逐行获取结果集中的记录数(PHP操作MySQL数据库的方法七)
    • oracle中的视图详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有