0

我目前有一个接受 JSON 文件(包含一些用户事务数据的 JSON 序列化对象)并将其存储到服务器中的 API。每个这样的 JSON 文件都有一个唯一的全局 id 和一个与之关联的唯一用户。然后,用户应该能够查询与他关联的所有 JSON 文件,并生成一堆在这些文件之上计算的聚合结果。

**编辑:

需要存储的典型 JSON 文件如下所示:

[{"sequenceNumber":125435,"currencyCode":"INR","vatRegistrationNumber":"10868758650","re​​ceiptNumber":{"value":"1E466GDX5X2C"},"retailTransaction":[{"otherAttributes":{} ,"lineItem":[{"sequenceNumber":1000,"otherAttributes":{},"sale":{"otherAttributes":{},"description":"Samsung Galaxy S3","unitCostPrice":{"quantity" :1,"value":35000},"discountAmount":{"value":2500,"currency":"INR"},"itemSubType":"SmartPhone"}},{"sequenceNumber":1000,"otherAttributes" :{},"customerOrderForPickup":{"otherAttributes":{},"description":"iPhone5","unitCostPrice":{"quantity":1,"value":55000},"discountAmount":{"value":5000,"currency":"INR"},"itemSubType":"SmartPhone"}}],"total ":[{"value":35000,"type":"TransactionGrossAmount","otherAttributes":{}}],"grandTotal":90000.0,"reason":"Delivery"},null]}]

上面的 JSON 是一个复杂对象的序列化版本,它包含单个或其他类的对象数组作为属性。所以“receiptNumber”是 JSON 文件的通用 ID。

要回答 Sammaye 的问题,我需要查询诸如 customerOrderForPickup 的数量和价值或交易的总金额之类的东西,并作为各种此类交易 JSON 的集合**

我想对如何进行一些建议:1)将这些JSON文件存储在服务器上,即文件系统,即2)我应该使用什么样的数据库来查询这些具有如此复杂结构的JSON文件

我的研究产生了两种可能性:1)使用 MongoDB 数据库存储对象的 JSON 代表并通过数据库进行查询。JSON 文件将如何存储?将事务 JSON 存储在 MongoDB 数据库中的最佳方式是什么?2) 将包含唯一全局 ID、用户 ID 和服务器上 JSON 文件地址的 SQL 数据库与这些文件上的聚合代码耦合。我怀疑这是否可以缩放

如果有人对这个问题有任何见解,我会很高兴。谢谢。

4

1 回答 1

1

我可以看到 2 个选项:

  1. 存储在MongoDB中,如您所说,只需要创建一个集合,并将每个JSON文件直接作为文档添加到集合中。您可能需要稍微更改 JSON 的布局以提高可查询性。
  2. 存储在 HDFS 中,并在其上分层 Hive。Hive 中有一个 JSON SerDe(Serializer Deserializer)。这也将很好地扩展。
于 2013-02-07T15:13:26.020 回答