YouTube开源项目Vitess:打造高性能MySQL前端
2013-03-14 22:44
363 查看
项目简介
关系型数据库(如MySQL)最初并没有针对大型Web应用进行构建和优化,Vitess项目的目标是推动MySQL数据库面向大型Web应用的扩展性。
Vtocc是vitess项目中第一个可用的产品,它的作用是作为MySQL的前端,为接收和发送SQL命令提供一个RPC接口。它能够在少量且吞吐量合理(~10kqps)的数据库连接上高效复用大量的传入连接(10K+)。另外,它还内置了SQL语法分析器,使得服务器有能力理解并优化处理接收到的查询语句。
Vtocc已经在许多大型生产环境中有所应用,例如,YouTube全新的MySQL服务架构以其为核心。
特性概览
Python DBAPI 2.0兼容的客户端接口(vt_occ2.py)
Go语言数据库/SQL兼容的客户端接口
支持基于HTTP或TCP套接字的多种协议
支持绑定变量查询,支持查询缓存:可避免重复分析,高效复用查询计划
支持连接池
事务处理管理:可以限制事务处理的并发连接数
DML注释:每个DML语句都包含一个注释区域,以标识它所改动行的主键
内置可靠性解决方案
强化查询:可以为子查询重用正在执行的查询
限制查询返回的行数量的最大值
可终止运行时间过长无响应的事务
可终止运行时间过长无法返回结果的查询
可自动终止后台空闲连接,以避免出现脱机数据库错误
Vtocc未来可能会具备的新特性:
支持行缓存的一致性,重写查询,以最大化行缓存的利用率
内置binlog解释器,支持由vtocc注入的提供行变更更新流的DML文档分析
支持DDL
支持持久性连接 (张志平/编译)
关系型数据库(如MySQL)最初并没有针对大型Web应用进行构建和优化,Vitess项目的目标是推动MySQL数据库面向大型Web应用的扩展性。
Vtocc是vitess项目中第一个可用的产品,它的作用是作为MySQL的前端,为接收和发送SQL命令提供一个RPC接口。它能够在少量且吞吐量合理(~10kqps)的数据库连接上高效复用大量的传入连接(10K+)。另外,它还内置了SQL语法分析器,使得服务器有能力理解并优化处理接收到的查询语句。
Vtocc已经在许多大型生产环境中有所应用,例如,YouTube全新的MySQL服务架构以其为核心。
特性概览
Python DBAPI 2.0兼容的客户端接口(vt_occ2.py)
Go语言数据库/SQL兼容的客户端接口
支持基于HTTP或TCP套接字的多种协议
支持绑定变量查询,支持查询缓存:可避免重复分析,高效复用查询计划
支持连接池
事务处理管理:可以限制事务处理的并发连接数
DML注释:每个DML语句都包含一个注释区域,以标识它所改动行的主键
内置可靠性解决方案
强化查询:可以为子查询重用正在执行的查询
限制查询返回的行数量的最大值
可终止运行时间过长无响应的事务
可终止运行时间过长无法返回结果的查询
可自动终止后台空闲连接,以避免出现脱机数据库错误
Vtocc未来可能会具备的新特性:
支持行缓存的一致性,重写查询,以最大化行缓存的利用率
内置binlog解释器,支持由vtocc注入的提供行变更更新流的DML文档分析
支持DDL
支持持久性连接 (张志平/编译)
相关文章推荐
- 优秀开源项目之三:高性能、高并发、高扩展性和可读性的网络服务器架构State Threads
- Yii高性能php框架介绍 – php开源项目交流
- 淘宝code—— 最给力的国内免费SVN(不限语言),异地团队开发、打造个人开源项目不再是梦
- 如何在 Github 打造你的爆款开源项目
- 优秀开源项目之三:高性能、高并发、高扩展性和可读性的网络服务器架构State Threads
- Netty+MUI从零打造一个仿微信的高性能聊天项目,兼容iPhone/iPad/安卓
- 最给力的国内免费SVN(不限语言),异地团队开发、打造个人开源项目不再是梦
- 使用SeasLog打造PHP项目中的高性能日志组件(一)
- 用开源项目ExpandableTextView打造可以下拉扩展的TextView
- 打造一个高逼格的android开源项目——小白攻略
- 使用开源项目打造GIS应用系统
- DIOCP开源项目-Delphi高性能无锁队列(lock-free)
- 使用SeasLog打造PHP项目中的高性能日志组件(一)
- 打造一个高逼格的android开源项目 | 小白全攻略
- Go语言开源项目vitess学习心得
- 如何在Github打造你的爆款开源项目
- DIOCP开源项目-Delphi高性能无锁队列(lock-free)
- fir.im Weekly - 如何打造 Github 「爆款」开源项目
- 打造一个高逼格的android开源项目——小白全攻略
- 使用开源项目打造GIS应用系统