构建数据库配置设置

时间:2014-09-08 12:25:50

标签: database database-design data-structures

我正在构建数据库的配置设置,尽可能地抽象配置数据 在最常见的LAMP环境中,连接到数据库需要以下四个信息:

  • DB_HOST
  • DB_NAME
  • DB_USER
  • DB_PASSWORD

我想了解两件事:

1 - 凭据是否与主机 db 相关?

如果用户密码主机相关,则他们可以访问该主机上的所有可用数据库,因此我可以代表以这种方式配置数据(无论是数组,对象还是其他):

db_config
    └─db_host
        ├─db_user
        ├─db_password
        └─databases
            ├─db_name
            └─db_engine

如果用户密码与特定数据库相关,则他们可以访问指定的唯一db_name;在这种情况下,我可以通过这种方式模式化配置数据:

db_config
    └─db_host
        └─databases
            └─db_name
                ├─db_engine
                ├─db_user
                └─db_password

2 - 具有不同引擎的数据库是否存在于同一主机上?

数据库可能由不同的引擎(例如PostgreSQL,MySQL,MSSQL,Oracle,Firebird等)提供支持。
如果凭据与主机相关,并且如果具有不同引擎的数据库可以在同一主机上共存,则可以通过以下方式表示配置数据:

db_config
    └─db_host
        ├─db_user
        ├─db_password
        └─databases
            └─db_name
                └─db_engine

但是这种结构不允许具有不同引擎的数据库具有同名 具有不同引擎的数据库是否可以在同一主机上使用相同的名称? 如果是,则可以构造配置数据:

db_config
    └─db_host
        └─db_engine
            └─databases
                ├─db_name
                ├─db_user
                └─db_password

哪种数据结构适合最可能的实际情况?

1 个答案:

答案 0 :(得分:1)

它有点复杂,因为不同的供应商有不同的功能。

首先,用户/密码凭据应该独立存在。他们可能应用到特定的数据库服务器,但也可以用于多个数据库,或其他一些软件。它们基本上是正交的。

某些数据库支持登录的Active Directory / LDAP / Kerberos,SSL证书,PAM等,而不仅仅是用户名/密码。

其他一些观点:

  • 由于复制,数据库服务器可能存在多个主机
  • 单台计算机可以在同一IP地址(通过不同的端口)或不同的IP地址上托管多个数据库服务器。请参阅PostgreSQL集群
  • 数据库群集可以有多个实例。请参阅SQL Server实例
  • 数据库群集可以有许多数据库
  • 数据库可以有多个模式
  • MySQL调用他们的模式“数据库”

至少在PostgreSQL中,用户是群集的子节点,而不是特定数据库的子节点,除了我回想起一个让你改变它的模糊设置......