以高效的方式将Postgres数据库数据转换为Json

时间:2019-07-29 10:01:47

标签: java database postgresql web-applications array-agg

  1. 我的要求是获取多个表数据(超过20万行)并转换为Json并返回。

  2. 我可以通过两种方法达到上述目的(如果有其他建议,请建议我)

    a。在查询本身中将数据库数据转换为Json(array_to_json(array_agg()或json_agg()) b。提取数据库数据并使用rowmapper等将其转换为Java对象列表,然后将Java对象列表转换为json。

  3. 我的观察与这两种方式有关

    a。在查询本身中将数据库数据转换为Json(array_to_json(array_agg()或json_agg()):

    1. array_to_json(array_agg()) is taking long time and which is leading to crash my application
    2. replaced array_to_json(array_agg()) with json_agg() and query execution is taking long time(infact more than array_to_json(array_agg())) here too.
    

    b。获取数据库数据并使用rowmapper等将其转换为Java对象列表,然后将Java对象列表转换为json:

    1. Application crahsed with outofmemory issue while parsing list of java objects(Count would be more than 200K) to Json
    

数据库:Postgres

查询:

选择array_to_json(array_agg(dev_info))FROM(从device_instance_global中选择*加入device_active_global                  在device_instance_global.device_id = device_active_global.device_id上​​加入dev_management                  device_active_global.system_id = dev_management.node_id                  在device_active_global.device_code = device_model.device_code上加入device_model                 和device_instance_global.device_error_class = device_model.device_severity
        其中dev_management.node_type <>'F'由device_instance_global.device_raise_time DESC排序)                                dev_info;

选择json_agg(alarm_info)FROM(从device_instance_global选择* *加入device_active_global                  在device_instance_global.device_id = device_active_global.device_id上​​加入dev_management                  device_active_global.system_id = dev_management.node_id                  在device_active_global.device_code = device_model.device_code上加入device_model                 和device_instance_global.device_error_class = device_model.device_severity
        其中dev_management.node_type <>'F'由device_instance_global.device_raise_time DESC排序)                                dev_info;

请建议我有什么最好的方法来满足我的要求。

0 个答案:

没有答案