这更像是一个概念性问题,因此如果它们能够实现相同的概念,则欢迎对堆栈进行变体。我们目前正在使用 MySQL 并将一些服务扩展到 MongoDB。
我们的想法是,我们希望能够管理单个物理数据库模式/结构,以便随着使用该结构的客户数量增长到数千、数十、数百个,调整、扩展等不会变得过于繁琐等,但是我们希望在这个级别而不是简单地在应用程序层隔离他们的数据,以提供更严格的分离。是否可以使用相同的结构为每个客户端创建虚拟箱,但它们的数据在结构上彼此分离?
正常的方法显然是直接或通过外部关系将客户端密钥添加到每一行数据,但鉴于我们无法预见 20/20 的情况下我们的系统可能会如何发生黑客攻击,从而允许“跨客户端”数据检索,我想要更进一步,将分离嵌入到一个几乎结构层面。
我还在这里阅读了另一篇文章:MySQL:如何进行行级安全性(如 Oracle 的虚拟专用数据库)?它使用“视图”作为一种方法,但是随着客户列表的增加,这似乎变得更有效。
谢谢!
- - 编辑 - -
根据下面建议的一些文献,这里有更多关于我们意图的信息:
@Stennie 提供的 MSDN 文章中概述的三者中最接近的情况是单个数据库、多模式,但不同之处在于,我们对创建后自定义客户端模式不感兴趣,我们实际上希望它们保持锁定到父/主模式。
理想情况下,该解决方案将保持每个模式链接到父表集结构,而不是简单地复制它,希望对父模式或主模式的任何更改都将级联到所有客户端/租户模式。
更进一步,在集群中,我们可以有一个具有主模式的主控,每个从属从它复制,但有一组分片的租户。然后可以在不中断的情况下通过集群过滤对主节点的更改,并在所有实例之间保持一致性,还允许我们更快地更新应用程序层,因为我们知道所有数据库都与更新的模式兼容。
希望这是有道理的,我在这个级别上仍然有点新鲜。