我正在构建数据库的配置设置,尽可能地抽象配置数据 在最常见的LAMP环境中,连接到数据库需要以下四个信息:
我想了解两件事:
如果用户和密码与主机相关,则他们可以访问该主机上的所有可用数据库,因此我可以代表以这种方式配置数据(无论是数组,对象还是其他):
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
数据库可能由不同的引擎(例如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
哪种数据结构适合最可能的实际情况?
答案 0 :(得分:1)
它有点复杂,因为不同的供应商有不同的功能。
首先,用户/密码凭据应该独立存在。他们可能应用到特定的数据库服务器,但也可以用于多个数据库,或其他一些软件。它们基本上是正交的。
某些数据库支持登录的Active Directory / LDAP / Kerberos,SSL证书,PAM等,而不仅仅是用户名/密码。
其他一些观点:
至少在PostgreSQL中,用户是群集的子节点,而不是特定数据库的子节点,除了我回想起一个让你改变它的模糊设置......