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