使用替换保留配置键和值

时间:2014-08-01 20:18:57

标签: database configuration persistence graph-databases key-value-store

我正在创建一个有配置键和值的系统。例如:

config.key = 10

是配置键和值的示例。这些键也可以基于“尺寸”进行覆盖。例如,如果我们想将config.key应用于维度为foo的应用程序,则被覆盖的密钥基本上是:

config.key.foo = 20

将来我们可能会有任意顺序的多个维度,因此将来可能会出现这种情况:

config.key.foo.bar = 30

更具体的例子是,如果我们有一个名为display.pintrest.feed的键/切换,其值为boolean。因此默认值为false,但您可以进行覆盖:

display.pintrest.feed = false
display.pintrest.feed.femaleUser = true

此处femaleUser是一个维度(因此我们希望仅为女性用户将此配置的值设置为true。)

这基本上就是我想要做的。我的问题是坚持不懈。保留这类数据的最佳方法是什么?这些数据会经常被查询,但写的次数会减少。天真的解决方案是使用MySQL或PostgreSQL并创建一个这样的表:

+----------------------------------+-------+
|                Key               | Value |
+----------------------------------+-------+
| config.key                       | 10    |
| config.key.foo                   | 20    |
| display.pintrest.feed            | true  |
| display.pintrest.feed.femaleUser | false |
+----------------------------------+-------+

但是我们失去了Value的类型安全性,并且还有一个单点故障。我们也有很多冗余(每次重复配置键的基本部分)。所以我想知道可能将它表示为图形,以便我可以将其写入图形数据库。我正在考虑对它进行建模:

enter image description here

这是可行还是过度杀伤?

我不介意使用简单的键值存储,但它应该是容错的并且应该能够被群集化。此外,我们只关心最终的一致性(即,不要介意花时间将更改传播到所有节点)。

所以我的问题是我是否应该使用简单的键值存储来保存这些数据,还是应该使用图形数据库?我对后者的理由仅仅是减轻密钥的冗余,但我不知道这是否有充分的理由。

0 个答案:

没有答案