10k 租户和多租户数据库设计 [关闭]

2024-01-26

我们正在尝试为新的 Web 应用程序决定数据库设计。我们预计将有近 10,000 个租户,并且希望将他们的数据保存在单独的数据库中(如果这样做有意义的话)。每个租户都会有一个大约 20MB 的数据库,他们主要跟踪 50 到 100 名青少年和 100 到 300 名成年人的个人数据,以及活动、出席情况、奖项等。我不知道有多少用户会同时登录,但每个租客可以有几个。

据我了解,我的选择是:

  • 一种无共享方法,为每个租户提供单独的数据库。
  • 为每个租户提供单独的表的模式方法。
  • 共享一切的方法,每个租户都有自己的tenantID

理想情况下,我希望采用无共享方法,但我不清楚在遇到性能问题之前,SQL Server 中可以拥有多少个数据库。管理多个数据库并不是我们主要关心的问题,但如果 SQL Server 由于数据库数量过多而变得无响应,这就是我正在寻找的信息。请记住,数据库平均较小,只有 20MB。

就性能而言,哪种方法是我们采取的最佳路线?另请考虑拥有多个 SQL Server 许可证在成本方面并不理想。但如果有必要请告诉我。

我也在这里读过几篇文章,也多租户数据架构 https://msdn.microsoft.com/en-us/library/aa479086.aspx但我还没有看到一个真正明显的赢家,拥有大量租户但数据库很小。

另外哪个版本的 SQL Server 比较理想?

如果有人有类似的经验,请告诉我你是如何处理的以及效果是否良好。任何现实世界的经验/建议将不胜感激。

谢谢。


这在某种程度上是一个意见问题,因为确实没有正确的答案。所有这三个都适合你的情况。以下是一些需要考虑的事情:

为什么它必须位于单独的数据库中?:如果他们必须这样做是因为他们可以直接访问数据库,那么当然您必须这样做。听起来好像用户将拥有某种正在使用的应用程序,所以这不是最好的解决方案?另一件使它成为更好选择的事情是,如果可能的话,租户稍后可能会转移到单独的服务器。示例:ABC_Widgets 可能会在某个时间点将数据托管在自己的服务器上。目前,他们与所有其他租户住在一起。

每个数据库都有自己的开销尽管很小,但请记住 SQL 将为每个数据库分配一些空间。现在,将其乘以 10,000 DB,就会产生一大块被浪费的空间。

连接字符串从开发的角度来看,当您连接到数据库时,您必须拥有多个连接字符串或基于所使用的数据库动态创建的连接字符串。

模式方法我认为最好的用例是,例如租户 A 不会拥有相同的表,而租户 G 或租户 F 可能需要针对自定义情况的专门表/模式。

恕我直言,我认为你最好使用分配atenantID到每个租户并将其存储在 1 个数据库中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10k 租户和多租户数据库设计 [关闭] 的相关文章

随机推荐

  • 向 TextView 添加底线边框 - iOS

    添加底线边框的最佳方法是什么TextView具有动态高度 我试过这个 func addBottomBorderWithColor color UIColor width CGFloat let border CALayer border b
  • 如何获取 $date + 5 来排除周末?

    我有一些页面需要设置将来的日期 由变量设置的 2 天或 5 天 该日期只需计算周一至周五 不包括周末 到目前为止我所拥有的 tts 是 2 或 5 的变量 具体取决于页面 Today date N m y NewDate date l t
  • 在 Cassandra 列中存储 JSON 字符串的有效方法?

    卡桑德拉新手问题 我正在使用 REST 调用从社交网站收集一些数据 所以我最终得到了 JSON 格式的数据 JSON 只是我表中的列之一 我试图找出存储 JSON 字符串的 最佳实践 首先我想到使用map类型 但 JSON 包含字符串 数字
  • 如何阻止 while 循环无限运行?

    不知道如何阻止这个 while 循环无限重复 我在用着hasNextInt检查用户输入是否为 int 如果未输入 int 则循环将无限重复 public static void validatingInput Scanner scan ne
  • 选择另一个表中不存在的值

    我有两张桌子 Table A ID 1 2 3 4 Table B ID 1 2 3 我有两个请求 我想选择表 A 中表 B 没有的所有行 在本例中是第 4 行 我想删除表 B 中没有的所有行 我正在使用 SQL Server 2000 你
  • Sonar:复制/高可用性或集群解决方案

    SonarQube Sonar 是否支持复制 高可用性解决方案 我的目标是在当前实例运行的计算机上出现硬件故障时拥有一个故障转移 SonarQube 实例 目前不支持 SonarQube 集群 目前您能做的只是准备好虚拟机 以便在 Sona
  • 如何对数据表中的列进行排序。 JSF 2.0

    我正在 jsf 2 0 中构建一个 WebApp 它用于存储信息并将其显示在屏幕上 所以我放入了一些 http java sun com jsf html 数据表来显示一些列表 我的 Java 代码返回一个列表 然后将它们显示在屏幕上 但现
  • 从 SSIS 目录执行包时无法访问网络共享

    我目前遇到一个问题 我可以从 SQL Server Data Tools 完美地执行包 但在尝试从 SSIS 目录中执行时出现以下错误 文件系统任务 错误 发生错误 并显示以下错误消息 访问路径 xxxxxxxx xxxx 被拒绝 我使用相
  • 定义Windows Phone中PhoneTextBox的样式

    我正在重写 PhoneTextBox 的样式 将默认背景更改为 透明 将前景更改为 白色 将 BorderBrush 更改为 白色 因为我想设计一个深色主题 但是出现了一个问题 文本输入指示器消失了 我感谢原因是文本输入指示器的前景是黑色的
  • apache Drill 是否可以执行更新、删除、插入操作

    众所周知 apache Drill 很容易查询 但我有一些问题如下 First 如果apache Drill可以对HDFS执行更新 删除 插入操作 Second 如果第一个问题的答案是肯定的 我如何使用 apache Drill 在 HDF
  • Objective-c:使用带有导航栏的第二个视图启动应用程序

    我正在为 iPad 创建一个应用程序 我创建了 3 个带有导航栏的视图 但我想不在第一个视图中启动我的应用程序 而是在第二个视图中启动我的应用程序 我该怎么办 您可以设置UI导航控制器 http developer apple com li
  • 编写一个 Rust 宏重复,它可能会也可能不会初始化结构体字段

    我正在尝试编写一个列出多个结构字段的宏 但有条件地仅从列表中的某些字段创建初始化程序代码 具体来说 可能看起来像这样 test fn test derive PartialEq Debug struct Foo bar usize let
  • 批量验证 yaml 文件

    我需要验证一大堆 YAML 文件 我尝试了 yaml 在线解析器 http yaml online parser appspot com http yaml online parser appspot com 效果很完美 但是将每个 YAM
  • 将 HttpContent 转换为 byte[]

    我目前正在开发 C Web API 对于特定调用 我需要使用 ajax 调用 API 发送 2 个图像 以便 API 可以将它们以 varbinary max 形式保存在数据库中 你如何提取一个Image or byte from a Ht
  • 如何打开没有菜单项的侧边栏?

    是否可以打开侧边栏而无需打开菜单并单击某个项目 我的意思是我们可以添加一个像按钮一样的菜单并在单击时打开侧边栏吗 我知道的最短的方法是将单个项目添加到菜单中 function onOpen e SpreadsheetApp getUi cr
  • 如何在 quill 编辑器中使用 v-model

    我用的是Vue 3 我以前用过这个 效果很好
  • mysql:信息架构上的访问被拒绝

    当我创建新用户或向现有用户授予权限时 出现此错误 ERROR 1045 28000 Access denied for user root localhost using password YES 对除 information schema
  • 迭代范围内的单元格时出现类型不匹配错误

    您好 我正在尝试在电子表格上运行以下 vb 代码 但在范围内出现数据类型不匹配的错误 我只是想锁定值为 0 的单元格 有些单元格的值为 NA 有什么想法吗 Sub Test Dim Cell As Range Set MyPlage Ran
  • Maven glassfish 嵌入式插件中的 JSP 热插拔

    我正在尝试设置嵌入式 glassfish maven 插件并且成功了 但是我无法使 jsp 文件热交换 这是我的配置
  • 10k 租户和多租户数据库设计 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在尝试为新的 Web 应用程序决定数据库设计 我们预计将有近 10 000 个租户 并且希望将他们的数据保存在单独的数据库中 如