【问题标题】:JSON - MongoDB versioningJSON - MongoDB 版本控制
【发布时间】:2015-01-06 05:59:39
【问题描述】:

我正在尝试使用 JSON 进行应用程序配置。我需要动态创建 JSON 中的一些对象(例如:从 SQL 数据库中查找)。它还需要存储 JSON 文件的版本历史。由于我想来回从旧配置切换到新配置版本。

最初的想法是将 JSON 放在 MongoDB 上,并为 JSON 对象的动态部分使用占位符。有人可以指导我的想法是否正确吗?(我正在考虑使用 JSON.NET 来序列化/去化 JSON 对象)。提前致谢。

编辑:

例如:假设我们有 2 个环境。环境1(v1.0.0.0) 环境2(v1.0.0.1)

**Env1** 

{

   id: env1 specific process id
   processname: process_name_specific_to_env1
   host: env1_specific_host_ip

   ...
   threads: 10(this is common across environments for V1.0.0.0 release)

}

**Env2** 

{

   id: env2 specific process id
   processname: process_name_specific_to_env2
   host: env2_specific_host_ip

   ...
   threads: 10(this is common across environments for V1.0.0.1 release)
   queue_size:15 (this is common across environments for V1.0.0.1 release)
}

我想要存储的是一个通用的 JSON 文件 PER 版本。这个想法是如果我想升级版本让我们说 env1 到 1.0.0.1(从 1.0.0.0),应该能够采用 JSON 配置的 v1.0.0.1 并从 SQL 填充 env 特定数据并生成一个新的JSON)。这样,在将环境从一个版本迁移到另一个版本时,无需重新进行配置。

 ex: 1.0.0.0 JSON file
{

   id: will be dynamically filled in from SQL
   processname: will be dynamically filled in from SQL
   host: will be dynamically filled in from SQL

   ...
   threads: 10(this is common across environments for V1.0.0.0 release))


}

=> 根据要求为任何环境生成一个新文件。

希望我清楚我想要实现的目标

【问题讨论】:

  • 您是否将结果复制到另一个集合中?为什么不能在应用代码中加入这两个配置?

标签: json mongodb json.net


【解决方案1】:

正如您所说,您需要某种方式来动态包含 SQL 部分,这意味着在您的应用程序中手动连接。简单的 Id 引用另一个表就足够了,你不需要发明占位符机制。

选择哪个更适合您:

MongoDB 到 SQL 参考

MongoDB

{
     "configParamA": "123", // ID of SQL row
     "configParamB": "456", // another SQL ID
     "configVersion": "2014-11-09"
}

SQL 到 MongoDB 参考

MongoDB

{
     "configVersion": "2014-11-09"
}

SQL

只需在每个关联的配置行中添加一个具有 MongoDB 中使用的配置 id 的列。

【讨论】:

  • @Cham:不知道你是不是这个意思。
  • 非常感谢您的回复,我已经编辑了我真正想做的问题。只是想你的建议是否适合。
猜你喜欢
  • 2012-08-19
  • 1970-01-01
  • 2010-10-01
  • 2013-03-17
  • 2013-02-23
  • 2018-05-28
  • 1970-01-01
  • 2011-06-17
  • 2011-05-10
相关资源
最近更新 更多