【问题标题】:2 databases, vs 1?2 个数据库,vs 1 个?
【发布时间】:2010-08-18 21:31:41
【问题描述】:

我有一个包含所有国家和城市的数据库,我想使用 ajax 来在表单中的国家城市字段中给出建议,我的数据库中有很多与网站内部工作相关的表格.如果我把它放在不同的数据库(只是这个世界地图数据库)中可以吗?我宁愿把它放在一个不同的数据库中,这样它更有条理,而且我不会真正在连接到主数据库的相同页面上连接到它。基本上是一个小的 php 页面,它会建议带有 json 的字符串。我想知道一个单独的数据库是否意味着共享数据库池并降低性能!??

我应该补充一点,这些新表是 geobytes.com 上的 sql 脚本,我不知道它们有多好,或者我是否会在后面使用它们!我希望通过最新的 ip 表列表找到更好的东西!比如ip2location

【问题讨论】:

  • 你为什么要这样复杂化你的设计?

标签: mysql database-connection rdbms


【解决方案1】:

这并没有什么特别的问题。我不知道它是否必要 - 如果它只是一两张桌子,我不明白为什么它对性能或安全性很重要,无论哪种方式。如果您担心脚本访问这些额外的表,您可以为您的 json 脚本使用不同的数据库用户名并将其设置为只读,这样如果它确实以某种方式被利用,它就无法更改您的其他表。

老实说,我认为最好的办法是暂时将其保存在一个数据库中,但编写脚本时要足够灵活,以便在需要时将其指向单独的数据库。

【讨论】:

    【解决方案2】:

    避免过早优化。如果您试图将事物分开(出于架构原因),那很好。如果您正在尝试提高性能,那么您怎么知道这甚至会提高性能?您将承担额外数据文件的开销,并且可能会在数据库服务器上增加管理多个数据库的开销。

    充其量它可能是一个性能清洗。

    【讨论】:

    • 不,我同意,甚至说它让我担心性能,我的目标是关注点分离和潜在的扩展能力。
    【解决方案3】:

    我不太明白你为什么要这样做。它在以下方面使事情复杂化:

    1. 管理 2 个数据库 - 例如备份和恢复。
    2. 管理 2 个连接配置 + 连接池。
    3. 未来潜在的参照完整性(例如,在某个阶段,您会拥有与城市/国家相关联的实体吗?)

    我会暂时将这些表格留在原处。如果/当它们导致您出现性能问题时,请将它们拉出来。

    【讨论】:

      【解决方案4】:

      如果您需要向外扩展,您的应用已经将它们拆分,因此会更容易。如果它成为性能问题,您可以将第二个数据库放在第二台机器上。

      如果您有多个核心数据库服务器,那么将它们放在一台机器上对大多数应用来说应该不是问题。

      【讨论】:

        【解决方案5】:

        听起来这个地理参考数据是您自己的,而您的网站还有很多其他“内部运作”。

        您的网站是来自第三方的 CMS 或类似网站 - Drupal/Joomla/等吗?

        如果是这样,请将您自己的数据放在外面。如果您打算将此地理数据公开给 Web 服务,它会独立存在。

        如果此站点是您自己的,请考虑该数据库中的其他表与您的地理参考表之间的规范化程度。

        【讨论】:

        • 我的朋友们,情况正好相反。这是我自己写的 cms,我从 geobytes.com 获得了世界地图和地理编码,即使它足够好我也不知道,我会在以后的道路上使用它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        • 1970-01-01
        • 2011-06-12
        • 1970-01-01
        • 2016-06-17
        • 2020-02-12
        相关资源
        最近更新 更多