【问题标题】:Database tables - how many database?数据库表 - 有多少个数据库?
【发布时间】:2011-02-14 23:43:34
【问题描述】:

一个社交网站需要多少个数据库?我的技术团队正在开发一个社交网站,但他们所有的表格都在一个数据库中。我想为用户数据、临时表等创建单独的表集,并认为可能只有一个单独的数据库用于关键数据等,但我不是技术人员,现在确定这是如何工作的?该网站将成为本地评论网站。

【问题讨论】:

  • 我不是 db 专家,所以我不会给出答案,但是…… 将 100 个表放在一个数据库中还是将 1 个表放在 100 个数据库中并不重要。我能想到拥有多个数据库的唯一充分理由是将需要更安全的数据(密码列表)与不需要的数据分开。前任。如果有人从您的媒体上传器成功管理 sql 注入并截断所有表,他们将不会触及密码条目列表。
  • 如果您自己承认“不是技术人员,现在 [原文如此] 确定这是如何工作的”,那么使用多少数据库有什么区别?
  • 如果黑客获得具有足够影响力的帐户凭据,则同一实例上的多个数据库是没有实际意义的。保护用于访问数据库的帐户的权限。

标签: database


【解决方案1】:

【讨论】:

  • 注意事项:将此类答案标记为社区 wiki。那些没有幽默感的人可能会否决您,您的代表不会影响社区 wiki 答案(向上或向下)。否则,请使用评论。
【解决方案2】:

与往常一样,简单的答案是尽可能少

稍微复杂一点的答案是,一旦您开始突破服务器的限制并开始考虑使用主/从复制的多个服务器,那么您可能希望将您的频繁写入表与您的很少写表,会降低主从更新要求。

【讨论】:

    【解决方案3】:

    如果您开始使用单独的数据库,您也可能会遇到随身备份/恢复策略。如果您有 5 个数据库并备份所有五个,当您需要恢复其中一个时会发生什么情况,您是否需要恢复所有五个?

    我会选择最少数量的数据库。

    【讨论】:

      【解决方案4】:

      您想要拥有多个数据库的原因是为了向外扩展至多台机器。在关注大容量/高可用性的“社交应用程序”的上下文中。如果您预计需要扩展到多台机器来处理大量数据,那么表的拆分应该是那些在逻辑上需要保持在一起的表。

      因此,例如,您可能希望将与特定主题领域相关的表(可能是状态更新)一起保存在一个数据库中,而将与不同主题领域相关的其他表(比如用户的图片库)一起保存在一个数据库中不同的数据库。

      将表保存在单独的物理或逻辑数据库中存在逻辑和性能方面的原因。

      【讨论】:

        【解决方案5】:

        您希望它在不同数据库中的原因是什么?

        您可以将所有表放入一个数据库中而不会出现问题,即使安装了多个开源软件包也是如此。在这种情况下,您可以使用表前缀。

        【讨论】:

          【解决方案6】:

          除非您正在开发一个非常大的网站,否则只有一个数据库才能继续进行(顺便说一下,您是否考虑过使用各种数据库时可能出现的问题?)。

          如果您担心性能,您总是可以在多个存储设备上配置不同的表空间以提高时序。

          如果你担心安全性,就增加它(更好的密码,不要直接root登录,不要端口转发,避免隧道等)

          【讨论】:

            【解决方案7】:

            我不是只做功能分析的技术人员,但我拥有这个项目,所以我需要监督技术团队。我拥有多个数据库的原因是安全性和性能。

            由于这将是一家新的初创公司,因此没有资金投资于强大的安全性或让数据库设计完美无瑕。另外,目前没有备份策略,因此: 1)我想分离关键数据,如用户密码/基本个人资料信息,然后分离出用户媒体(他们在个人资料上上传的照片),然后是用户内容。然后分离出系统内容。当前的设计是必须有表层:整个系统的主表和每个单独模块的模块表。 2) 性能:设计了很多模块,这是一个数据密集型社交网站,内置了很多报告/分析,因此有很多读/写。根据目的在数据库之间分配负载也许更好?

            由于没有太多资金,因此我希望通过我的投资在第一时间把它弄好,这样数据库就可以扩展并运行良好,直到收入来实际投资以使其正确。当然,这可能还需要 6 个月的时间,也可能需要 100 万用户。

            哦,是否有计划添加分段/生产模式也如此独立或相同的数据库?

            【讨论】:

            • Thomas,您应该编辑自己的问题,添加额外信息,而不是给出“答案”。
            • 如果您负担不起“强大的安全性”或备份,那么多个数据库将无济于事。当社交网站丢失除登录名和密码之外的所有用户数据时,他们就不会回来了。并习惯于第一次出错,因为世界上最聪明的人无法预测复杂系统的性能。好消息是,除非你每 15 秒就有一个新用户,否则你不会在 6 个月内达到 100 万用户——你有更多的时间。 :-)
            【解决方案8】:

            您现在可以坚持使用一个数据库。您的开发人员可以通过使用数据库模式来隔离/分离应用程序数据。使用多个数据库很快就会变成一个痛苦的世界,除非它绝对至关重要,否则应该避免。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-05-26
              • 2011-03-17
              • 1970-01-01
              • 2012-04-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多