【问题标题】:Designing the filesystem and database for JSON data files为 JSON 数据文件设计文件系统和数据库
【发布时间】:2013-02-07 14:47:09
【问题描述】:

我目前有一个 API,它接受 JSON 文件(它们是 JSON 序列化对象,包含一些用户事务数据)并将其存储到服务器中。每个这样的 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 数据库与这些文件上的聚合代码结合起来。我怀疑这是否可以缩放

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

【问题讨论】:

  • mongo 的好处是您不必将 json blob 视为文件。它只是您的 mongodb 中的数据。因此,您插入它并查询它,并且可以根据需要进行聚合。这可能是满足您需求的最直接的方法。
  • 您想对 JSON 字符串执行哪种查询?

标签: sql json mongodb filesystems webserver


【解决方案1】:

我可以看到 2 个选项:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2019-07-15
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    相关资源
    最近更新 更多