数据库中间件的核心目的之一就是尽可能透明的线性扩展数据库能力。其主要功能介绍参考(http://www.onexsoft.com/zh/oneproxy.html)。 但是透明只是相对的,下面就简要叙述OneProxy的每个功能点及其限制。

1、透明连接池,

  a)不支持使用“use”命令来切换当前数据库, 出于性能考虑,我们不想在每次取得连接或归还连接时进行还原,这个操作需要一次额外的网络IO;如果要访问不同数据库下的表,请使用不同的用户进行连接(不同用户可提定不同的默认数据库),或者在表名前面加上库名进行访问(比如:db.tablename)。

  b)不支持set命令,但除“set autocommit={0|1}”外,因为这些操作会影响会话的上下文,除非放在事务中(由开发人员自己负责)。

  c)不支持带传出参数的存贮过程调用,实际上是通过执行几句“SET”语句来声明会话级变量,以进行参数传递的,如果不在一个事务中,则不同的调用就不能保证使用的是同一个连接了(除非放在事务中),故而OneProxy默认禁止存贮过程调用。
  d)不支持客户端级别和服务器端级别的Prepared接口,因为绑定变量及语句都是会话级别的。请不用担心,MySQL JDBC驱动本身就不是真正的Prepared接口的(除非显式指定了“useServerPrepStmts”参数);针对PHP PDO编程接口,请在连接数据库时指定“ATTR_EMULATE_PREPARES”选项,使用拼接SQL的方式进行底层交互(并不会影响安全性,增加SQL注放攻击的概率)。对于Web应用来讲连接池相对更重要,并且使用真正的Prepared接口需要更多的网络调用来完成一个SQL来回,并不利于性能。

2、自动故障切换

3、读写分离

4、水平分库分表

  a)不支持多列分区,分区键只支持单个列,分区和子分区的列可以不同。这个限制可以让中间件的分区定位代码更加高效。

  b)分区键的值必须是常量,在SQL中为分区键指定值是必须是明确的值,不能是函数或表达式。
  c)分区键不支持OR语句,其允许单值查找(“where pkey = xxx”),可以是多值列表比较(“where pkey in (1,2,3)”),或区间查找(“where pkey >; … and pkey & <; …”,包括“between”操作)。但不支持多个“or”条件(“where pkey = 1 or pkey = 2”)。
  d)分区键不允许为空,并且不应当被程序后续更新, OneProxy无法检测出更新后的目标值是否符合分区配置,也不支持分区之间的记录移动。
  e)对于“insert”和“replace”语句,请显式指定字段列表,例如:“insert into xxx (col1, col2,…) values (…,…)”。
分区键类型可以是“int”、 “char”、 “date”或“timestamp”中的一种,其中“date”表示不含时间信息的日期(如“2015-11-11”),而“timestamp”表示带时间的日期(如“2015-11-11 00:00:00”)。
5、结果集合并

a)临时结果集有大小限制,目前是100万行,以避免用完内存,可以通过“proxy-cache-rows”选项进行调整。

  b)不支持count distinct,对某个字段统计维一值个数(“count(distinct …)”)的操作。
    c)不支持avg,对字段求平均值(”avg(…)”)不被直接支持,请转换成计数(“count(…)”)和求和(“sum(…)”)两个操作,再作除法。
    d)不支持having不支持分组汇总下的“having xxx”条件过滤。
    e)不支持跨实例join。
    f)跨库关联查询,仅仅支持按相同维度分表的分表。

6、并行查询

  a)仅支持拆分的表

7、安全控制和SQL审计

8、SQL防火墙

9、OneProxy自身高可用

  a)需要依赖VIP

10、分布式sequence

11、SQL关联度分析

12、事务监控  

    

OneProxy的功能与限制的更多相关文章

  1. MySQL基础普及《MySQL管理之道:性能调优、高可用与监控》

    最近工作的内容涉及MySQL运维内容,陆陆续续读了几本相关的书,其中一本是<MySQL管理之道:性能调优.高可用与监控>. 内容涵盖性能调优(包括sql优化等).备份.高可用,以及读写分离 ...

  2. MySQL管理之道,性能调优,高可用与监控(第二版)pdf下载

    MySQL管理之道,性能调优,高可用与监控(第二版) 书中内容以实战为导向,所有内容均来自于笔者多年实践经验的总结和新知识的拓展,同时也针对运维人员.DBA等相关工作者会遇到的有代表性的疑难问题给出了 ...

  3. OneProxy自动剔除延迟节点

    在多种情况下,MySQL主从节点之间可能存在延迟.比如,主库的写入能力强于从库的写入能力.从库单线程复制.从库复制出错导致相关进程停止.为了保证数据的时效性,OneProxy提供了复制时效性检查,用于 ...

  4. 使用分布式数据库集群做大数据分析之OneProxy

    一.十亿数据,轻松秒出 实时监控领域有两个显著的特点,一是数据来源很多而且数据量大,有来自监控摄像头.GPS.智能设备等:二是需要实时处理.我们的客户在做实时处理时,就遇到这样的问题.客户的某个数据表 ...

  5. OneProxy主从延迟检测

    OneProxy具有主从延迟检测功能,检测方式有两种. 1.通过MySQL本身提供的延迟信息,即在从库中执行show slave status; 查看Seconds_Behind_Master值: 2 ...

  6. OneProxy分库分表演示--楼方鑫

    OneProxy分库分表演示 (杭州平民软件有限公司) OneProxy是为MySQL精心设计的数据访问层,可以为任何开发语言提供对MySQL数据库的智能数据路由功能,比如单点切换.读写分离.分库分表 ...

  7. OneProxy使用手册--致力于打造透明的数据层

    介绍      平民软件官网上线(http://www.onexsoft.com) OneProxy是由原支付宝首席架构师楼方鑫开发,目前由楼方鑫创立的杭州平民软件公司(@平民架构)提供技术支持.目前 ...

  8. ProxySQL 配置详解及读写分离(+GTID)等功能说明 (完整篇)

    ProxySQL是灵活强大的MySQL代理层, 是一个能实实在在用在生产环境的MySQL中间件,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行 cache,支持动态加载配 ...

  9. OneProxy构建

    OneProxy的主要功能有:1. 垂直分库 2. 水平分表 3. Proxy集群 4. 读高可用 5. 读写分离(master不参与读) 6. 读写分离(master参与读) 7. 写高可用 8. ...

随机推荐

  1. Maven-001-初识及本地环境配置

    前段时间想对自己之前写的一些代码或者小工具,因为写的比较乱,因而想系统的管理一下自己学习 Java 时写的源码,经过多方请教.网上查询,最终决定使用 Maven 来管理自己写的代码. Maven 是一 ...

  2. linq小笔记;

    1.比较LINQ to Entities的AsQueryable和AsEnumerable方法 C#程序: 复制内容到剪贴板程序代码 using (testContext context = new ...

  3. Oracle的日期时间范围查询

    Oracle日期时间范围查询 Sql代码 /* 日期时间范围查询 */ ---------- 创建日期时间测试表-------------------------------------------- ...

  4. 集合Hashtable Dictionary Hashset

    #region Dictionary<K,V> Dictionary<string, Person> dict = new Dictionary<string, Pers ...

  5. RDIFramework.NET ━ 9.4 角色管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.4 角色管理 -Web部分 角色管理模块主要为了方便框架权限的分配,提高权限分配的效率,减少重复设置权限的工作量.角色(用户组 ...

  6. Struts2(二):工作原理

    struts可查看源码:https://github.com/apache/struts 在学习struts2之前,我先看了一些比较早版本对struts2的工作原理相关的介绍,顺便抄写过来,用来帮助自 ...

  7. [翻译] java NIO Channel

    原文地址:http://tutorials.jenkov.com/java-nio/channels.html JAVA NIO channels和流的概念很像,下面是他们的一些区别: 你可以对cha ...

  8. matlab中动态绘图并保存为视频的小例子

    如题,多的就不说了,先上一个效果: 每隔0.1秒,绿色的直线转动一个角度. 再看看代码如何实现: fuction main clear; clc; %%%%%%%%%%%%%%%%%%%%%%%%%% ...

  9. jsp 环境配置记录

    1. jdk,下载地址1 环境变量配置: 1)新建 JAVA_HOME 变量 . 变量值填写jdk的安装目录(本人是 C:\Java\jdk1.7.0) 2)  系统变量→寻找 Path 变量→编辑 ...

  10. 0512 Scrum 4.0

    看板设计 每日例会时间定于下午放学回到宿舍,地点是在宿舍外的走廊或宿舍里,特殊情况待定: 团队开会照片 任务认领: 首页设计-------王俊杰 鸡汤版面-------列志华 论“汤”版面------ ...