HintManager 我先看看这个。
现在计划做的SQL Hint 功能就是通过增加注释的方式来指定数据库==》没有理解增加注释是什么意思?
抱歉,写错了,是注解的方式。
就是说分库规则不是根据数据库表中的某个字段,而是根据登录的客户账号,我就锁定这个登录的客户的数据节点应该是哪一个。
如果在前端页面登录后,将自己的客户ID带到后台,这样后台就根据客户的ID,获取到该客户的数据库,可以通过拦截器拦截到SQL,加上/*DS=?? */类似模样的注解,这样SS执行SQL的时候,直接路由到DS制定的数据库中即可。
不知道我说清楚了没有。
这样对于业务系统来说,其实是很方便的,也不用做太大的系统改动,就可以完全做到数据库级别的多租户数据隔离
谢谢。
嗯嗯,我理解你的意思,这个计划应该是可以满足你的需求的
增加注释就是
例如
/*hint database=ds1*/select * from t_order
没错,大概就是这意思。
SQL Hint 通过增加注释的方式来指定数据库这个功能,大概啥时候能上线呢?期待啊
很期待这个功能的上线。
由这个问题引申出来另外一个问题,proxy不支持不同库同表名的场景。原因是路由是按照表名称进行路由查找,如果表同名路由就会有问题。我的想法是能否在url地址上带上primary_ds=ds1这样的参数,发现有同名表可以强行路由,不知道大家有没有更好的想法。
理论上如果把 proxy 当作一个数据库使用的话,应该是不允许重复表的。目前这种加上注释指定数据源的方案其实也是可以实现你说的功能吧?
这个就要看每个人都proxy的理解了,我想的是有了一个庞大的proxy集群,应用就可以完全忽略后端真实的数据库当一个云数据库来用,多个应用连接同一个云数据库,隔离的问题是proxy应该考虑的。
注解的方案可以解决问题,但是多个应用并不知道别人是否有和自己存在同名表,第二个,在sql层级写注解粒度太细的话要在很多地方都写。
嗯嗯,我理解你的意思,是期望 ShardingSphere 可以支持同名表的路由吧?
不过对于在 url 上添加参数的这种方式我感觉可能不怎么通用。
是的,我觉得ss可以考虑支持同名表路由。因为这个行为和客户端相关通过url添加参数控制个人感觉也是一个较为通用的做法,当然最终以什么样的方式实现可以探讨下。
嗯嗯,好的,感谢反馈 
@liuzhu @yw1 @YoungHu 可以试试我们做的第一版强制路由的功能,看看是否满足你们的需求 
https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/sharding/hint/
你好,这些功能都挺好,看起来应该是可以试试。
有没有强制路由结合springboot的完整例子?实现那种基于Hint的数据库级别的路由?谢谢。
嗨,我注意到一楼提到, Hint 现状是 通过 java api 方式操作.
现状应该指的是已经发布的shardingsphere 5.0.0吧? 只能通过行表达式配置的Hint分片算法(HintInlineShardingAlgorithm,就是基于行表达式的Hint分片算法) 和Hint强制路由有什么联系呢?
https://shardingsphere.apache.org/document/5.0.0/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/sharding/#hint-行表达式分片算法
强制路由 :: ShardingSphere (apache.org)
HintInlineShardingAlgorithm 是 shardingsphere 基于Hint 强制路由提供的一种内置算法,使用的话必须要基于 HintManager api 使用。当然你也可以实现自己的 Hint 算法。
HintManager结合proxy要怎么使用呀?

