代码拉取完成,页面将自动刷新
同步操作将从 MycatOne/Mycat2 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
在这里提交需求,
格式,需求编号,需求内容,需求目的,提出人的QQ
1.Mycat 2.0 HBT技术解决 多表关联案例
select a.id,a.price,b.username where a.id in (111,222,333,444) and b.id=a.id
解析步骤 :
select a.id,a.price where a.id in (111,222,333,444)——> fetchIntoMapStream(sql,new MapMeta(id,row))
join(b.id=a.id) ——>select b.id,b.username from b where id matchs mapA.key
join("select b.id,b.username from b", mapA);
Mycat 2.0 HBT 代码:
//fetchIntoMapStream(sql,new MapMeta(id,row)).forBatch(100,mapBachRec->{ });
String sql="select a.id,a.price where a.id in (111,222,333,444)";
String sql2="select b.id,b.username from b",
engine.streamOf(new FetchIntoRowStream(new SqlMeta(sql,"a"),new RowMeta("tableA")))
.joinAndOut(new SqlMeta(sql2,"b"),new RowMeta("tableB"),new JoinMeta("tableA.id","tableB.id",Engnine.MEM,100), new ResultSetMeta({"tableA.id,tableA.price,tableB.username"}),(arow,brow)->{out.write(arow,brow[1]});
实际上还有一些细节考虑:
String cond=sql.lastIndexOf("where");
RouteConditionList routeList=new RouteConditionList();
routeList.add(engine.createRouteCondition(Engine.AND,Engine.IN,"aa,bb,cc"));
routeList.add(engine.createRouteCondition(Engine.OR,Engine.GREATE,"aa,bb,cc"));
String[] partions=engine.calcSQLRoute("tableA",routeList);
上述了路由信息可能需要人工指定,放入 SqlMeta, new(sql,"a",routeList)
2.Mycat Exchanger
负责把实现JDBC方式连接Oracle,SQL Server,以及Redis。MongoDB等后端存储的,模拟成标准的MySQL Server,对接Mycat。这样 Mycat就统一支持各种数据库,并且核心还稳定简单。
3.管理命令
增加管理命令,mycat fetch config,返回三列?的表格,文件名称,修改时间,内容(文本),为了Web管理界面调用,展现配置文件内容
以及对应的 mycat update config xxx.conf <文件内容> ,即上传和更新生效某个配置文件,返回一行的Table,optcode ?错误码,以及说明。。。
包括返回集群状态的表格,哪几个节点,谁是Leader。以及是否有Proxy,Proxy的状态,节点上下线,这些都以后要命令行实现,同时给Web使用
所有管理命令都可以被Web调用
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。