2

全部:

我有一个场景来维护配置数据。据我了解,我们可以将配置数据存储在属性文件或平面表中。

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

据我了解,在 API 的成本和效率方面(在基于 Java 的应用程序的情况下),将配置数据存储在属性中比数据库(因为为此目的建立连接成本高昂)

欢迎您的意见!

谢谢。

4

4 回答 4

7

我假设您只会加载一次或很少加载配置数据,所以我不会太担心事情的性能方面。不过有几点需要考虑:

  • 如果您不仅需要名称/值对,那么数据库可能会提供更丰富的数据模型。
  • 将配置存储在数据库中可能更容易在多台计算机之间共享
  • 即使在数据库中进行配置,您也需要配置数据库连接本身......
  • 如果您不需要用于其他任何事情的数据库,则使用数据库进行配置似乎有点奇怪,尽管您可能会考虑使用嵌入式数据库(例如 SQLite)而不是传统的客户端/服务器数据库。
  • 不要忘记除了你提到的两个之外还有其他选择
于 2012-04-05T10:39:13.330 回答
2

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

于 2012-04-05T10:39:54.670 回答
1

虽然该服务没有汇总大量配置,但效率并不是这里的关键。有几个问题可能会有所帮助:

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

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

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

于 2012-04-05T10:39:34.787 回答