Mongodb in Mycat指南
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指南的更多相关文章
- MongoDB快速入门指南与docker-compose快体验
MongoDB快速入门指南与docker-compose快体验 MongoDB相对于RDBMS的优势 模式少 -MongoDB是一个文档数据库,其中一个集合包含不同的文档.一个文档之间的字段数,内容和 ...
- MongoDB性能优化指南
一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样.其实可以这样说说,索引 ...
- Mongodb实战使用指南
REL_LINK: http://www.mongodb.org.cn/tutorial/9.html 一 启动 启动 mongodb 服务(Mac) $ mongod --config /usr ...
- mongodb节点配置指南
修改复制集节点的优先级 复制集节点的 priority 参数的值决定了选举中该节点的优先级.值越高,优先级越高. 我们可以通过修改复制集配置参数中 members 数组位置的优先级来修改对应机器的优先 ...
- Mongodb在NUMA机器上的优化
10gen在mongodb的部署指南上,提到了在NUMA机器上,mongodb可能会出现问题,参见:http://docs.mongodb.org/manual/administration/prod ...
- [翻译]lithium 快速上手(QuickStart)
快速入门 经典博客教程 很感谢你尝试Li3!这一部分栏目为那些想了解这个框架可以做什么的php用户所设计.像这样深入代码是一种很好的方式去体会快速应用开发(Rapid Application ...
- ELK日志相关
转: Logstash 讲解与实战应用 原创qw871122016-08-20 16:06:07评论(1)40217人阅读 一.Logstash 介绍 Logstash 是一款强大的数据处理工具,它可 ...
- [译] MongoDB Java异步驱动快速指南
导读 mongodb-java-driver是mongodb的Java驱动项目. 本文是对MongoDB-java-driver官方文档 MongoDB Async Driver Quick Tour ...
- 大数据存储:MongoDB实战指南——常见问题解答
锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当 ...
随机推荐
- 【hihocoder 1122】二分图二•二分图最大匹配之匈牙利算法
[Link]:https://hihocoder.com/problemset/problem/1122 [Description] [Solution] 二分图匹配,匈牙利算法模板题; 这里我先把染 ...
- linux常用命令之lsof 、netstat、ipcs、ldd
一.lsof lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.每行 ...
- 使用Cygwin在Windows上体验Linux的快感
前言 记得大学的时候就以前使用过Cygwin,可惜当时没有发现她的美,我相信如今大多数朋友可能会更加倾向于使用Git或者干脆直接使用虚拟机以及原生Unix. 只是对于刚进入Linux的世界新人来说,使 ...
- 史上最简单,js并获取手机型号
原先获取不了苹果系列的型号,但转换思路,先推断是否是苹果,再用分辨率获取型号 //获取手机型号函数begin function getPhoneType(){ //正则,忽略大写和小写 var pa ...
- 洛谷P3273 [SCOI2011]棘手的操作
题目描述 有N个节点,标号从1到N,这N个节点一开始相互不连通.第i个节点的初始权值为a[i],接下来有如下一些操作:U x y: 加一条边,连接第x个节点和第y个节点A1 x v: 将第x个节点的权 ...
- 给VG增加磁盘,给文件目录增加空间
一: #lspv 找到新增加的物理卷(逻辑驱动器,以hdisk8为例). #chdev –l hdisk8 –a pv=yes写入新的物理卷的pvid. #extendvg cwdatavg hdis ...
- 非常有用的sql脚本
/*sql 语法学习*/ /*函数的学习---------------------------------------*/ 获取当前时间(时/分/秒):select convert(varchar(1 ...
- HttpClient的基本使用
HttpClient的基本使用 前言 HttpClient是Apache提供的一个用于在Java中处理HTTP请求.响应操作的工具,由于JDK自带的API对HTTP协议的支持不是很友好,使用起来也不是 ...
- iptables转发安卓手机热点的数据到指定的端口
iptables转发安卓手机热点的数据到指定的端口 手机安装了VPN,可以上GOOGLE的那种.然后我打开手机的热点,连上笔记本,想让本本上个google 没想到被GFW挡住了.看了一下手机的网络工作 ...
- Elasticsearch和MongoDB
Elasticsearch和MongoDB分片及高可用对比 本文旨在对比Elasticsearch和MongoDB高可用和分片的实现机制. Elasticsearch ES天生就是分布式的,那她又是如 ...