我正在开发一个管理多个实体数据的网站。实体之间不共享数据,但它们可能由同一客户拥有。客户可能希望从单个“仪表板”管理其所有实体。那么我应该有一个数据库用于所有内容,还是将数据分成单独的数据库? 有最好的做法吗?有一个:/ / p>的正面/负面是什么?
多个数据库似乎会有更好的性能(更少的行和连接)但最终可能成为维护的噩梦。
答案 0 :(得分:5)
就个人而言,我更喜欢单独的数据库,特别是每个实体的数据库。我喜欢这种方法,原因如下:
确保升级架构需要更多时间,但根据我的经验,一旦部署和添加很简单,修改就不常见了。
答案 1 :(得分:2)
我认为如果没有更多信息,这很难回答。
我靠在一个数据库的一边。正确编码的业务对象应该可以防止您在查询中忘记clientId。
您使用的数据库类型及其扩展方式可能有助于您做出决定。
对于未来的架构更改,从维护角度来看,似乎有一个数据库更容易 - 你有一个地方可以制作它们。
答案 2 :(得分:1)
备份和恢复怎么样?您是否可以体验想要为其中一个实体恢复备份的客户?
答案 3 :(得分:1)
这是多租户SAAS应用程序中相当正常的情况。两种方法都有其优点和缺点。搜索多租户SAAS(软件即服务)的最佳实践,您会发现需要思考的大量内容。
答案 4 :(得分:1)
在微软的网站上查看此article。我认为它可以很好地规划与多租户设计相关的不同成本和收益。另请参阅wikipedeia上的多租户article。有很多权衡,你最好的匹配在很大程度上取决于你正在开发的产品类型。
答案 5 :(得分:0)
将它们保存在单独的数据库中的一个好理由是它更容易扩展(您可以简单地安装多个服务器,客户端数据库分布在服务器上)。
另一个论点是,一旦您登录,您就不需要在每个查询中添加额外的检查位置(用于客户端ID)。
因此,每个客户端由多个DB支持的主数据库可能是更好的方法,
答案 6 :(得分:0)
如果客户端需要从备份中仅恢复单个实体并使其他实体保持其当前状态,那么如果每个实体位于单独的数据库中,则维护将更加容易。如果它们可以一起备份和恢复,那么将实体维护为单个数据库可能更容易。
答案 7 :(得分:0)
我认为你必须采用最现实的方案,而不一定是客户“未来”想要做的事情。如果您要推销该功能(即在一个仪表板中查看所有实体),那么您必须找到解决方案(可能从多个数据库中获取仪表板)或使用单个数据库来存储整个应用程序。
恕我直言,拥有同一数据库中多个客户的数据对我来说似乎不是一个好主意。您必须记住始终按clientID过滤您的查询。答案 8 :(得分:0)
它还取决于您的RDBMS,例如
使用SQL服务器数据库是
使用Oracle可以很容易地按客户“customerID”对表进行分区,因此单个大型数据库的运行速度可以与每个客户的小型数据库一样快。
不过你选择的每个人都会尝试将其隐藏在数据访问代码中的低级别
答案 9 :(得分:0)
您是否计划将代码部署到多个环境?
如果是这样,那么尝试将其保留在一个数据库中,并使所有表引用都以配置文件中的命名空间为前缀。
答案 10 :(得分:0)
单个数据库选项可以使维护更容易。