Sql 为JSON数据文件设计文件系统和数据库

Sql 为JSON数据文件设计文件系统和数据库,sql,json,mongodb,filesystems,webserver,Sql,Json,Mongodb,Filesystems,Webserver,我目前有一个API,它接受JSON文件(JSON序列化对象,包含一些用户事务数据)并将其存储到服务器中。每个这样的JSON文件都有一个唯一的全局id和一个与之关联的唯一用户。然后,用户应该能够查询与他相关的所有JSON文件,并在这些文件的基础上生成一系列聚合结果 **编辑: 需要存储的典型JSON文件如下所示: [{“sequenceNumber”:125435,“currencyCode”:“INR”,“vatRegistrationNumber”:“10868758650”,“receipt

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

**编辑:

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

[{“sequenceNumber”:125435,“currencyCode”:“INR”,“vatRegistrationNumber”:“10868758650”,“receiptNumber”:{“value”:“1E466GDX5X2C”},“retailTransaction”:[{“otherAttributes”:{},“lineItem”:[{“sequenceNumber”:1000,“otherAttributes”:{},“销售”:{“otherAttributes”:{},“说明”:“三星galaxy S3”,“单价”:{“数量”:1,“价值”:35000},“折扣金额”:{“值”:2500,“货币”:“INR”},“项目子类型”:“智能手机”},{“序列号”:1000,“其他属性”:{},“客户订单”orpickup:{“其他属性”:{},“描述”:“iPhone 5”,“单位成本价格”:{“数量”:1,“价值”:55000},“折扣金额”:{“值”:5000,“货币”:“INR”},“项目子类型”:“智能手机”},{“总金额”:35000,“类型”:”TransactionGrossAmount,“otherAttributes”:{}}],“grandTotal”:90000.0,“原因”:“Delivery”},null]}]

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

为了回答Sammaye的问题,我需要查询customerOrderForPickup的数量和价值或事务的总计,以及作为各种此类事务JSON的集合 **

我想就如何开展这项工作提出一些建议: 1) 将这些JSON文件存储在服务器上,文件系统 2) 我应该使用什么样的数据库来查询这些结构如此复杂的JSON文件

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

如果有人对此问题有任何见解,我将非常高兴。谢谢。

我可以看到两种选择:

  • 存储在MongoDB中,正如您所提到的,只需要创建一个集合,并将每个JSON文件直接作为文档添加到集合中。您可能需要稍微更改JSON的布局以提高可查询性
  • 存储在HDFS中,并在其上分层配置单元。配置单元中有一个JSON SerDe(序列化程序反序列化器)。这也可以很好地扩展

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