java - 使用java在azure表存储中存储复杂数据类型的正确方法是什么?

标签 java azure azure-table-storage

我已经研究这个问题有一段时间了,但没有找到明确的答案。我想使用 azure 表存储而不是 cosmosdb。原因是,对于我的需求,我只需要键值查找,并且表存储要便宜得多。但是我想将复杂的数据存储在表存储中。也就是说,我想要保留的每个项目都可以有几个其他对象和几个列表。我尝试了几个小时,使用 azure 文档和谷歌搜索博客/教程来让它工作。我最终发现了一些似乎自相矛盾的信息,有些人说这是可能的,另一些人说不可能。我觉得这不应该成为一场辩论,我也觉得你应该能够做到。是否有在 Azure 表存储中存储复杂数据类型的最佳实践方法?或者我应该只使用 ObjectMapper 并将我想要保留的复杂数据字符串化然后保留它?

最佳答案

您在评论中描述的方法是正确的方法。 Azure 表存储是一种键/值对类型的存储,不支持按原样存储 JSON 文档。

一种方法是序列化 JSON 文档并将整个文档存储为字符串。请注意,在这种情况下,您将无法查询 JSON 文档属性。

其他方法是展平 JSON 文档,然后将每个属性存储为键/值对。例如,如果您的文档类似于:

{
  "firstName": "",
  "lastName": "",
  "address": {
    "streetAddress": "",
    "city": "",
    "state": "",
    "zip": ""
  }
}

你可以像下面这样压平它:

firstName: ""
lastName: ""
address_streetAddress: ""
address_city: ""
address_state: ""
address_zip: ""

并将其存储在您的表中。

关于java - 使用java在azure表存储中存储复杂数据类型的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70030499/

相关文章:

java - 尝试以特定方式从 StringBuilder 中删除多个特定字符

azure - 无法创建 MS Team 免费组织帐户

serialization - 通过 ASP.NET 5 DNX Core 在 Azure 表中使用自定义属性类型

azure - 我可以在一个分区中插入数百万行吗? (不需要良好的负载平衡)

java - 制作浏览网络的机器人

java - 如何仅在未渲染另一个组件时才渲染一个组件?

java - 为什么 EntityManager 为空?

azure - 未获取要传递的参数以及在 azure 门户上找到的 StorageCredentials 的位置

azure - 如何通过 SSH 连接到 Azure Function Linux

json - 如何在逻辑应用程序中搜索Azure表存储JSON响应?