我有一个系统,可以每分钟按计划检查大量实体的状态。对于每个实体,将有一个JSON文件,其中包含指示不同属性状态的字段。系统将这些JSON文件转储到网络共享中。
每分钟运行一次的日程安排会生成一个JSON,其中包含20k个奇怪的实体,例如具有数十个属性的实体。
[
{
"entityid": 12345,
"attribute1": "queued",
"attribute2": "pending"
},
{
"entityid": 34563,
"attribute1": "running",
"attribute2": "successful"
}
]
我需要能够跟踪实体的属性状态随时间的变化,例如,回答诸如entity x
的状态何时变为“待处理”之类的问题。存储此数据并生成统计信息的最佳方法是什么?
答案 0 :(得分:0)
您应该将数据存储在数据库中。如果您的数据始终具有相同的结构,则可以使用“经典”数据库,例如Postgresql或Mysql。如果您的数据是杂乱的,请查看像MongoDB这样的NoSQL数据库。如果您需要使用JSON获取数据,则可以轻松地将数据从数据库导出到JSON。
这是一篇讨论JSON和数据库的文章:https://hashrocket.com/blog/posts/faster-json-generation-with-postgresql
答案 1 :(得分:0)
如果您仅更改字典中某些字段的值,并且不想使用数据库,则最好的选择是:
1)将您的Json文件转换为字符串,为此您可以使用json.dumps
,
2)使用diff lib来比较两个字符串(更新前后):
https://docs.python.org/3.6/library/difflib.html