【发布时间】:2016-12-02 09:17:43
【问题描述】:
我正在努力将数据存储在 azure 表中,同时我发现 JSON 支持 Azure 表 here。因此,为了改变计划,现在我有一个 JSON 格式的数据,我需要将它存储在 azure 表中。我发现很少有代码 sn-ps,但都是针对 c# 的。你能指导我吗?
提前致谢
【问题讨论】:
-
你是怎么解决的?
标签: java azure azure-table-storage
我正在努力将数据存储在 azure 表中,同时我发现 JSON 支持 Azure 表 here。因此,为了改变计划,现在我有一个 JSON 格式的数据,我需要将它存储在 azure 表中。我发现很少有代码 sn-ps,但都是针对 c# 的。你能指导我吗?
提前致谢
【问题讨论】:
标签: java azure azure-table-storage
Azure 表存储是 Key/Value 对存储,而不是 document 存储(DocumentDB 就是一个很好的例子)。本质上,一个表包含实体(广义地认为它们是行)并且每个实体都包含一些属性(广义地认为它们是列)。每个属性由三部分组成:属性名称(即键/值对中的键)、属性值(即键/值对中的值)和属性数据类型。
要回答您的问题,是的,您可以将 JSON 文档存储在 Azure 表中,但它作为属性进入,因此您需要为 JSON 文档分配一个键。此外,每个属性的大小不能超过 64KB,因此您需要考虑到这一点。
如果您的要求是存储 JSON 文档,我建议您查看 DocumentDB。更适合存储 JSON 数据,做很多 Azure Tables 做不到的事情。
关于您对 Azure 表的 JSON 支持的评论,它谈到了向 Azure 表发送/检索数据的格式。在早期,数据是使用 ATOM PUB XML 格式传输的,这使得请求负载/响应体非常庞大。使用 JSON 格式,大小大大减小。但是,无论您采用哪种方式,Azure Tables 都会以键/值对格式存储数据。
【讨论】:
@AnandDeshmukh,根据我的理解,我想你可能想用 Java 用 C# 编写类似的代码。建议大家可以尝试参考Azure Storage SDK的javadoc用Java重写示例代码。
例如,您可以使用 Java 代码代替 C# 代码,如下所示。
C#代码:
CloudTableClient tableClient = new CloudTableClient(baseUri, cred)
{
// Values supported can be AtomPub, Json, JsonFullMetadata or JsonNoMetadata
PayloadFormat = TablePayloadFormat.JsonNoMetadata
};
Java 代码:
CloudTableClient tableClient = new CloudTableClient(baseUri, cred)
tableClient.getDefaultRequestOptions().setTablePayloadFormat(TablePayloadFormat.JsonNoMetadata);
【讨论】: