查看原文
其他

mycat系列-对MongoDB的支持

2016-06-23 IT哈哈


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

配置支持Mongodb

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

配置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>  

1.dbDriver一定为jdbc,dbType代表数据库类型,可以为mongodb,oracle,通过配置这个可以支持其他数据库, 

2.url地址是jdbc连接的地址,和一般开发java web的jdbc.url地址一致 

3.user,password是用户名和密码,可以是任意值,目前不支持mongodb配置用户名和密码 

4.是心跳包的查询语句,可为空 

5.如果需要支持多个mongodb数据库,可以不用指定数据库名,在dataNode中指定

配置表:

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">

之后加上表的配置:


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

新增dataNode配置:


<dataNode name="dn4" dataHost="jdbchost" database="test1" /><dataNode name="dn5" dataHost="jdbchost" database="test2" />

需要的jar

mongo-java-driver-2.11.4.jar

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

实现原理

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

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

(2)转化为mongodb api

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

支持的SQL语法

Create table

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


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

Insert into 插入语句

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


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


查询下插入的数据:


Update table 更新语句

update people set age =23 where name=‘mongo’;


Select 查询语句

支持*的查询

select * from people where name=‘mongo’;


支持指定字段名的查询

select name,age from people where name=‘mongo’;


where条件

支持等于:

select name,age from people where name=‘mongo’;

支持大于:


支持小于:


支持小于等于:


支持大于等于


支持不等于


支持AND


支持and表示范围


支持多个and


支持OR



支持多个or


支持AND 和OR混合条件


排序

支持升降序


多字段排序


支持Limit



Delete删除语句

delete from people where name=‘zz’;


Drop语句

drop table people;

删除表


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存