mycat系列-对MongoDB的支持
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;
删除表