如果我们想在应用层屏蔽分表的实现,那基于 ORM 或者原生 SQL 可能会执行:
SELECT a.id, a.user_id, a.birthday FROM a WHERE a.user_id=12345 ORDER BY a.birthday;
实际上真实执行的 SQL 应该是:
SELECT a_0045.id, a_0045.user_id, a_0045.birthday FROM a_0045 WHERE a_0045.user_id=12345 ORDER BY a_0045.birthday;
请教各位 V 友有没有用过类似的基础组件,任何包或者工具平台都可以,输入是 SQL 文本,输出也是 SQL 文本(其实也不限定形式,其他的输入输出也没问题,可以自己看看代码,看看别人是怎么实现的)
我们在之前的尝试中发现的一些问题 /需求:
SELECT xxxx FROM ...
里面 SELECT 和 FROM 之间的内容,只改写了 WHERE 条件里的内容,换句话说就是改写得不够完整,可能又很多语法没有尝试解析,举例:如果有胖友用过好用的组件或者平台的话求安利,如果没有的话咱也考虑自己写一个试试,看看能覆盖到多少的语法,好用再开源出来。
这样的组件如果只是负责 SQL 改写,可以很方便适配不同的客户端,例如 Go 语言里面 MySQL 的 client 常见的有 GORM
/ XORM
/ database/sql
等等,先实现 SQL 改写,再实现不同 client 的扩展包应该就很简单而且兼容。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.