Mongodb in Mycat指南

本文介绍Mycat如何通过JDBC接口支持MongoDB,并详细解释了配置步骤及支持的SQL语法特性,包括创建表、插入、更新、查询、删除等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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     升级

未来支持聚合运算等。

转载于:https://www.cnblogs.com/liang545621/p/8417548.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值