我们在WebAPI中要求以JSON的形式从外部API中提取有效负载,清理并将其发布到Azure Sql中。对于此要求,我们目前依赖于blob存储,我们将json有效负载存储到azure blob中并将其检索到UI以进行数据清理活动。用户可以花费大量时间验证数据并根据需要进行修改。用户可以将其草拟几天,并在完成所有清理后单击“导入”按钮。现在,我观察到,在这些草稿中,blob只是被检索并反序列化为对象列表,以找到要更新的相应属性。在单击用户草稿时完成更新后,相同的列表将序列化为json并存储回blob。序列化/反序列化的过程似乎很昂贵。相反,我正在考虑用Cosmos DB替换blob。这真的会即兴表演吗?建议Azure Sql Json支持是否比所有这些选项更可行?我甚至想到Redis Cache?决策的主要因素也是成本效益。
答案 0 :(得分:1)
如果您希望搜索JSON对象并且搜索结果的大小明显小于整个对象列表,那么使用Cosmos DB将具有很大的性能优势。无论如何,您将为查询返回的对象支付序列化/反序列化价格,因为它们应通过网络发送到您的应用程序。
Cosmos DB的价格远远高于标准的Blob存储,但这是一个非常容易使用JSON工作负载的工具。您有SQL和MongoDB查询API,不知何故,您将能够设计与数据库无关的应用程序(至少在查询级别)。
我认为使用Redis Cache是有意义的,如果你有比其他人更频繁参考的JSON对象列表,那么你可以将它们预加载到缓存中,利用更高性能的搜索操作,并在以后上传到persitent Blob Storage。