5

假设您的任务是编写一个必须以某种格式存储配置信息的 Web 应用程序。与将信息存储在文件中相比,将这些配置信息存储在关系数据库中的优点和缺点是什么?配置选项可能包括但不限于数据保留设置和与外部系统接口的设置(例如 IP 地址、端口、用户名、密码)。

4

3 回答 3

4

以下是优缺点总结

文件的优点:

  1. 快速访问配置数据。(假设没有缓存)
  2. 每个服务器都可以进行不同的配置(在负载平衡的情况下)
  3. 您已经需要一个用于数据库凭据的文件,以便所有内容都可以存储在一个地方。

文件的缺点:

  1. 在负载平衡环境中进行配置很困难。
  2. 在开发中添加设置时,最记得将它们移动到生产中每台服务器上的文件中。
  3. 如果您想编写控制面板以在运行时更改设置,则配置必须可由网络服务器写入。由于时间问题和/或锁定,在控制面板中操作文件很麻烦。

数据库的优点:

  1. 负载均衡器可以跨集群共享配置
  2. 远程检查设置或更改设置非常容易,例如在 phpMyAdmin 或直接 sql 客户端中。
  3. 控制面板开发变得简单。
  4. 可以通过在 memcached 或内存中的哈希中缓存配置来减轻性能影响。
  5. 程序员更有可能控制设置而不是 IT 人员,或者至少可以通过控制面板进行控制。

数据库的缺点:

  1. 如果您连续获取设置,性能可能会变慢。
  2. 如果您不提供工具,系统管理员可能更难管理产品而不是文件。他们可能不是 sql 专家。
  3. 集群更痛苦。

这归结为个人偏好以及任何当前或未来可能的提供简单配置的要求。

于 2012-04-09T19:53:58.563 回答
2

And now a real answer.

I guess in the end it is a matter of taste

Pro:

  • you could add an admin page to edit the settings in your applications

Con:

  • if your database is not available, your settings are also gone
  • if you migrate a database to a different environment (e.g. a production database to test to do some issue checking) your settings are included
  • slightly harder to deploy
  • more difficult to add to version control
  • you need a file anyway to store your database credentials
于 2012-04-09T19:24:28.570 回答
1

因为您所要做的就是正确配置连接池(无论如何您都应该这样做),然后您就知道所有设置的位置。此外,它们可以在运行时更新,随着应用程序的启动或关闭而更新,并且在部署应用程序时它们不能被踩踏。

各种好理由。

于 2012-04-09T19:23:21.220 回答