【发布时间】:2014-07-03 23:54:59
【问题描述】:
当前的问题是如何以“正交方式”向预先存在的应用程序发出的 SQL 数据库查询添加条件,这意味着该操作应该以应用程序不需要关心的方式完成。如果您好奇,实际问题涉及添加多租户相关标准,以防止租户相互获取数据。实际上,这意味着向 WHERE 子句添加额外的条件(可能在查询中的多个位置)。
我的团队一直在研究一种解决方案,该解决方案涉及在将查询发送到 DBMS 之前“拦截”和解析查询。许多人可能都知道,SQL 解析并不是最简单的实现方式,尤其是当您需要支持大多数主要 DBMS 的语法扩展时。
另一个被抛出的想法是可以让 DBMS 自己处理标准注入。毕竟,它是对查询语法有充分了解的一个元素,并且(希望)在执行它之前对其进行修改应该没有问题。那么问题将是弄清楚如何将多租户元数据传递给 DBMS。这完全可行吗?这是个坏主意吗?
关于如何解决这个问题的任何其他想法?
感谢您的宝贵时间。
【问题讨论】:
标签: sql parsing multi-tenant database