假设您的任务是编写一个必须以某种格式存储配置信息的 Web 应用程序。与将信息存储在文件中相比,将这些配置信息存储在关系数据库中的优点和缺点是什么?配置选项可能包括但不限于数据保留设置和与外部系统接口的设置(例如 IP 地址、端口、用户名、密码)。
问问题
5219 次
3 回答
4
以下是优缺点总结
文件的优点:
- 快速访问配置数据。(假设没有缓存)
- 每个服务器都可以进行不同的配置(在负载平衡的情况下)
- 您已经需要一个用于数据库凭据的文件,以便所有内容都可以存储在一个地方。
文件的缺点:
- 在负载平衡环境中进行配置很困难。
- 在开发中添加设置时,最记得将它们移动到生产中每台服务器上的文件中。
- 如果您想编写控制面板以在运行时更改设置,则配置必须可由网络服务器写入。由于时间问题和/或锁定,在控制面板中操作文件很麻烦。
数据库的优点:
- 负载均衡器可以跨集群共享配置
- 远程检查设置或更改设置非常容易,例如在 phpMyAdmin 或直接 sql 客户端中。
- 控制面板开发变得简单。
- 可以通过在 memcached 或内存中的哈希中缓存配置来减轻性能影响。
- 程序员更有可能控制设置而不是 IT 人员,或者至少可以通过控制面板进行控制。
数据库的缺点:
- 如果您连续获取设置,性能可能会变慢。
- 如果您不提供工具,系统管理员可能更难管理产品而不是文件。他们可能不是 sql 专家。
- 集群更痛苦。
这归结为个人偏好以及任何当前或未来可能的提供简单配置的要求。
于 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 回答