何时使用属性文件以及何时查找数据库?

时间:2012-04-05 10:34:29

标签: java database properties

所有

我有一个维护配置数据的方案。据我所知,我们可以将配置数据存储在Properties文件或平面表中。

我正在寻找一个有效的分界线,它提供何时使用属性以及何时使用数据库表。

就我的理解而言,在属性中存储配置数据比使用API​​的成本和效率(在基于Java的应用程序的情况下)比数据库更便宜(因为为此目的建立连接是昂贵的)< / p>

欢迎您的评论!

感谢。

4 个答案:

答案 0 :(得分:6)

我认为你只会加载一次或很少加载配置数据,所以我不会太担心性能方面的问题。但要考虑几点:

  • 如果您不需要名称/值对,数据库可能会提供更丰富的数据模型。
  • 将配置存储在数据库中可能更容易在多台计算机之间共享
  • 即使在数据库中进行配置,您也需要自己配置数据库连接......
  • 使用数据库进行配置如果您不需要其他任何数据库似乎有点奇怪,尽管您可能会考虑使用嵌入式数据库,例如SQLite而不是传统的客户端/服务器之一。
  • 不要忘记除了你提到的两个之外还有其他选择

答案 1 :(得分:0)

属性文件数据库之间存在比较。 属性文件存储由 =或:分隔的键值对,键和值必须为字符串即可。

您可以在数据库中以二维表格格式存储任何数据。

答案 2 :(得分:0)

属性文件包含静态值,在编译时(或部署时)固定。数据库包含动态值,您可以在应用程序运行时更改这些值。

答案 3 :(得分:0)

尽管该服务未汇总大量配置,但效率并不是关键。 有一些问题可能会有所帮助:

  • 配置数据是否复杂?是? -数据库存储
  • 很少会重新加载数据吗?是? -属性文件
  • 服务有很多实例吗?是?我是否要支持像Puppet这样的配置管理系统?是? -属性文件
  • 服务有很多实例吗?是?服务是否需要A / B测试?是? -属性文件
  • 我是否需要紧急更新配置而不重启?是? -数据库存储(不包括Archaius的情况)
  • 我需要跟踪配置更新吗?是? -数据库存储
  • 服务是否有许多按逻辑划分的配置(例如,微服务中的服务连接配置)?是? -属性文件
  • 配置数据敏感吗? (例如秘密令牌,信用凭证)-属性文件