1       前言

Mycat目前支持JDBC连接后端数据库,理论上支持任何数据库,如ORACLE、DB2、SQL Server等,是将其模拟为MySQL,所以对其他数据库只支持标准的SQL语句,而对NoSQL的支持,是封装NoSQL API 基于JDBC的实现。

2       MongoDB in Mycat

Mycat1.3实现了对mongodb的支持。

2.1     配置支持Mongodb

修改conf下的配置schema.xml文件中的以下内容:

配置dataHost

在<dataHost></dataHost>节点下在新增一个mongodb的连接

<dataHost name="jdbchost" maxCon="1000" minCon="1" balance="0" writeType="0" dbType="mongodb" dbDriver="jdbc">

<heartbeat>select user()</heartbeat>

<writeHost host="hostM" url="mongodb://192.168.0.99/" user="admin" password="123456" ></writeHost>

</dataHost>

配置表:

在<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">下加上表:

<table name="people" primaryKey="_ID"  dataNode="dn4" />

配置dataNode:

在 <dataNode>加上个节点:

<dataNode name="dn4" dataHost="jdbchost" database="test" />

dbDriver一定为jdbc

dbType代表数据库类型,可以为mysql,oracle,mongodb

通过配置这个可以支持其他数据库,

2.1.1  支持oracle的配置如下:

<dataHost name="jdbchost2" maxCon="1000" minCon="1" balance="0" writeType="0" dbType="oracle" dbDriver="jdbc">

<heartbeat>select user()</heartbeat>

<writeHost host="hostM2" url="jdbc:oracle:thin:@192.168.0.99:1521:orcl" user="jifeng" password="jifeng" ></writeHost>

</dataHost>

table,dataNode同mongodb的配置

2.2     支持Mongodb原理

通过实现标准的JDBC接口,调用mongodb api实现对mongodb的操作。

2.2.1  需要的jar

mongo-java-driver-2.11.4.jar

这是mongodb官方提供的支持java的驱动包。

2.2.2  实现原理

通过实现标准的JDBC接口,调用mongodb api实现对mongodb的操作:

(1)解析SQL语句(druid sql parser为SQL解析器)

(2)转化为mongodb api

(3)发送到mongodb服务端实现

2.3     支持的SQL语法

2.3.1  Create table

create table people (name varchar(30),age int,sex int,diqu varchar(20),lev int);

mongodb中不用创建表,也可以使用。

2.3.2  Insert into 插入语句

insert into people (name,age,sex,diqu,lev) values('cs',22,1,'sz',1);

注意在插入数据的时候,必须有字段名,否则会提示错误:

查询下插入的数据:

2.3.3  Update table 更新语句

update people set age =23 where name='mongo';

2.3.4  Select 查询语句

2.3.4.1 支持*的查询

select * from people where name='mongo';

2.3.4.2 支持指定字段名的查询

select name,age from people where name='mongo';

不过会显示mongodb默认的_id字段,下次升级可解决这个问题。

2.3.4.3 where条件

2.3.4.3.1       支持等于:

select name,age from people where name='mongo';

2.3.4.3.2       支持大于:

2.3.4.3.3       支持小于:

2.3.4.3.4       支持小于等于:

2.3.4.3.5       支持大于等于

2.3.4.3.6       支持不等于

2.3.4.3.7       支持AND

支持and表示范围

支持多个and

2.3.4.3.8       支持OR

支持多个or

2.3.4.3.9       支持AND 和OR混合条件

2.3.4.4 排序

支持升降序

多字段排序

2.3.4.5 支持Limit

2.3.5  Delete删除语句

delete from people where name='zz';

2.3.6  Drop语句

drop table people;

删除表

2.4     分片

多个节点的查询出来的数据会自动合并,但目前不支持分页,排序等。

2.5     升级

未来支持聚合运算等。

Mongodb in Mycat指南的更多相关文章

  1. MongoDB快速入门指南与docker-compose快体验

    MongoDB快速入门指南与docker-compose快体验 MongoDB相对于RDBMS的优势 模式少 -MongoDB是一个文档数据库,其中一个集合包含不同的文档.一个文档之间的字段数,内容和 ...

  2. MongoDB性能优化指南

    一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样.其实可以这样说说,索引 ...

  3. Mongodb实战使用指南

    REL_LINK: http://www.mongodb.org.cn/tutorial/9.html   一 启动 启动 mongodb 服务(Mac) $ mongod --config /usr ...

  4. mongodb节点配置指南

    修改复制集节点的优先级 复制集节点的 priority 参数的值决定了选举中该节点的优先级.值越高,优先级越高. 我们可以通过修改复制集配置参数中 members 数组位置的优先级来修改对应机器的优先 ...

  5. Mongodb在NUMA机器上的优化

    10gen在mongodb的部署指南上,提到了在NUMA机器上,mongodb可能会出现问题,参见:http://docs.mongodb.org/manual/administration/prod ...

  6. [翻译]lithium 快速上手(QuickStart)

      ​ 快速入门 经典博客教程 很感谢你尝试Li3!这一部分栏目为那些想了解这个框架可以做什么的php用户所设计.像这样深入代码是一种很好的方式去体会快速应用开发(Rapid Application ...

  7. ELK日志相关

    转: Logstash 讲解与实战应用 原创qw871122016-08-20 16:06:07评论(1)40217人阅读 一.Logstash 介绍 Logstash 是一款强大的数据处理工具,它可 ...

  8. [译] MongoDB Java异步驱动快速指南

    导读 mongodb-java-driver是mongodb的Java驱动项目. 本文是对MongoDB-java-driver官方文档 MongoDB Async Driver Quick Tour ...

  9. 大数据存储:MongoDB实战指南——常见问题解答

    锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当 ...

随机推荐

  1. [翻译]魅族的M1 Note是十分廉价(dirt-cheap)的iphone5C增强版

    Meizu's M1 Note is a dirt-cheap iPhone 5c on steroids 魅族的M1 Note是十分廉价(dirt-cheap)的ihone5C增强版 While m ...

  2. LeetCode 06 ZigZag Conversion

    https://leetcode.com/problems/zigzag-conversion/ 水题纯考细心 题目:依照Z字形来把一个字符串写成矩阵,然后逐行输出矩阵. O(n)能够处理掉 记i为行 ...

  3. Linux网络编程--字节序

    1 .谈到字节序,那么会有朋友问什么是字节序 非常easy:[比如一个16位的整数.由2个字节组成,8位为一字节,有的系统会将高字节放在内存低的地址上,有的则将低字节放在内存高的地址上,所以存在字节序 ...

  4. jquery--new返回值

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  5. Ajax跨域:Jsonp实例--百度搜索框下拉提示

    Ajax跨域:Jsonp实例--百度搜索框下拉提示 一.总结 一句话总结:a.找好接口:b.用script标签的src引入文件(json数据):c.定义及实现上一步引入文件中的函数 1.如何找到一个网 ...

  6. 关于Sleep函数介绍

    函数名: Sleep 功 能: 执行挂起一段时间 用 法: void Sleep(DWORD dwMilliseconds); 在VC中使用带上头文件 #include <windows.h&g ...

  7. 10. LCD驱动程序 ——框架分析

    引言: 由LCD的硬件原理及操作(可参看韦哥博客:第017课 LCD原理详解及裸机程序分析) 我们知道只要LCD控制器的相关寄存器正确配置好,就可以在LCD面板上显示framebuffer中的内容. ...

  8. 1.字符设备驱动------Linux中断处理体系结构

    一.中断处理体系结构的初始化 Linux内核将所有的中断统一编号,使用一个irq_desc结构数组来描述这些中断;每个数组项对应一个中断,也可能是一组中断,它们共用相同的中断号,里面记录了中断的名称. ...

  9. 【Educational Codeforces Round 35 D】Inversion Counting

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 排列中交换任意两个数字. 排列的逆序对个数的奇偶性会发生变化. 翻转这个过程其实就是len/2对数字发生交换. 交换了偶数次的话,不 ...

  10. Fragment 实现的 分类 效果

    Fragment   实现的 分类 效果 布局文件的信息: <LinearLayout xmlns:android="http://schemas.android.com/apk/re ...