正确的方法将大型JSON对象归档在可以通过API访问的PostgreSQL表中?

亚历克斯·D

我已经在这个问题上工作了一段时间了。我正在一个统计网站上工作,作为我玩游戏的爱好。

基本上,我有一个脚本,每5分钟访问一次游戏的API(可能将其增加到15分钟),并立即提取所有比赛的当前状态。我最初是将此对象存储为表中的JSON列。(然后,每行的JSON列中都有一个118kb的对象)

问题是试图查询表以获取整个档案的一周时间(这是比赛的持续时间)。基本上,当我想要的只是JSON中的特定密钥时,它将拉长2016个118kb记录,进行为期一周的比赛。对该API端点的请求大约需要10秒钟才能完成!

我仅在PostgreSQL中找到了基于JSON键查询行的方法,但没有找到类似的方法SELECT match.kills FROM matches WHERE...

我已经意识到那是行不通的,所以我想尝试从JSON对象中获取键并将其插入到相应的表列中。

JSON对象框架如下所示:

{
  id: string,
  start_time: timestamp,
  end_time: timestamp,
  scores: {
    green: number,
    blue: number,
    red: number 
  },
  worlds: number[],
  all_worlds: number[][],
  deaths: {
    green: number,
    blue: number,
    red: number
  },
  kills: {
    green: number,
    blue: number,
    red: number
  },
  maps: [
    {
      id: number,
      type: string,
      scores: same as above,
      bonuses: {
        type: string,
        owner: string
      },
      deaths: same as above,
      kills: same as above,
      objectives: [
        {
          id: string,
          type: string,
          owner: string,
          last_flipped: timestamp,
          claimed_by: guild id (put this into another api endpoint),
          claimed_at: timestamp
        },
        ... (repeat 17 times)
      ]
    },
    ... (repeat 3 times)
  ]
}

因此,我想将其作为键存储在数据库中,但是我不确定如何对具有type值的键完成此操作object

最终目标是以一种可以通过URL访问的API的方式存储该信息,例如:

mywebsite.com/api/v1/matcharchive?data=kills,deaths,score&matchid=1-1&archive_time=2016-07-09T02:00:00Z

它将只查询数据库中对象中的那三个键并返回它们。

将具有这么多键的JSON对象存储到PSQL表中的正确方法是什么?

NovaDenizen

您只需要->在json字段上使用运算符即可。此示例进行了稍微编辑,因此自动增量键略有偏离。

host=# create table tmp1 ( id serial primary key, data json);
CREATE TABLE
host=# \d tmp1
                         Table "public.tmp1"
 Column |  Type   |                     Modifiers
--------+---------+---------------------------------------------------
 id     | integer | not null default nextval('tmp1_id_seq'::regclass)
 data   | json    | 
Indexes:
    "tmp1_pkey" PRIMARY KEY, btree (id)

host=# insert into tmp1 (data) values ('{"a":1, "b":2}'), ('{"a":3, "b":4}'), ('{"a":5, "c":6}');
INSERT 0 3
host=# select * from tmp1;
 id |      data      
----+----------------
  2 | {"a":1, "b":2}
  3 | {"a":3, "b":4}
  4 | {"a":5, "c":6}
(3 rows)   

host=# select id, data->'b' from tmp1;
 id | ?column?
----+----------
  2 | 2
  3 | 4
  4 |
(3 rows)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

访问json对象的最佳或正确方法?

来自分类Dev

我可以在“ applicationWillTerminate:”中归档对象吗?

来自分类Dev

在大型 PostgreSQL 表中处理/合并“后继记录”的方法?

来自分类Dev

我可以在LibreOffice Calc中通过HTTP检索和访问简单的JSON对象吗?

来自分类Dev

将大型嵌套字典转储到 JSON 对象中

来自分类Dev

访问大型 PHP 对象中的某个属性

来自分类Dev

是否可以通过某种方式将JSON对象直接存储到DOM中?

来自分类Dev

Perl:通过类中的同一对象访问方法和json hashref数据

来自分类Dev

在Typescript中声明JSON对象的正确方法

来自分类Dev

在Typescript中声明JSON对象的正确方法

来自分类Dev

如何通过Google Drive API的导出方法将PDF正确读取到nodejs Buffer中?

来自分类Dev

除了实现SessionAware接口之外,还可以通过多种方法在struts2中获取会话访问对象

来自分类Dev

一次将大型JSON文件拆分为100个批次,以通过API运行

来自分类Dev

通过JDBC将“ daterange”字段值插入PostgreSQL表中

来自分类Dev

Postgresql在一个列或大型表中获取唯一值集的最快方法

来自分类Dev

通过Powershell中的键匹配两个大型对象阵列的最快方法

来自分类Dev

通过对象与继承访问方法

来自分类Dev

通过此方法访问对象

来自分类Dev

通过JS中的onclick访问对象外部的方法

来自分类Dev

通过对象/方法访问simpleXML中的mysql字段

来自分类Dev

通过指针 cpp 访问对象中的方法 - vscode 错误

来自分类Dev

有什么方法可以将变形的json加载到python对象中?

来自分类Dev

将JSON映射到Java对象的正确方法

来自分类Dev

有什么办法可以通过给定的对象地址访问gdb中的python对象?

来自分类Dev

将JSON对象数组动态放置到表中的有效方法是什么?

来自分类Dev

如果可以通过任何其他方法访问该对象,那么对同步块中的对象进行锁定有什么用?

来自分类Dev

通过特定表访问关联对象

来自分类Dev

通过特定表访问关联对象

来自分类Dev

是否可以通过Kotlin中的方法引用创建对象实例

Related 相关文章

  1. 1

    访问json对象的最佳或正确方法?

  2. 2

    我可以在“ applicationWillTerminate:”中归档对象吗?

  3. 3

    在大型 PostgreSQL 表中处理/合并“后继记录”的方法?

  4. 4

    我可以在LibreOffice Calc中通过HTTP检索和访问简单的JSON对象吗?

  5. 5

    将大型嵌套字典转储到 JSON 对象中

  6. 6

    访问大型 PHP 对象中的某个属性

  7. 7

    是否可以通过某种方式将JSON对象直接存储到DOM中?

  8. 8

    Perl:通过类中的同一对象访问方法和json hashref数据

  9. 9

    在Typescript中声明JSON对象的正确方法

  10. 10

    在Typescript中声明JSON对象的正确方法

  11. 11

    如何通过Google Drive API的导出方法将PDF正确读取到nodejs Buffer中?

  12. 12

    除了实现SessionAware接口之外,还可以通过多种方法在struts2中获取会话访问对象

  13. 13

    一次将大型JSON文件拆分为100个批次,以通过API运行

  14. 14

    通过JDBC将“ daterange”字段值插入PostgreSQL表中

  15. 15

    Postgresql在一个列或大型表中获取唯一值集的最快方法

  16. 16

    通过Powershell中的键匹配两个大型对象阵列的最快方法

  17. 17

    通过对象与继承访问方法

  18. 18

    通过此方法访问对象

  19. 19

    通过JS中的onclick访问对象外部的方法

  20. 20

    通过对象/方法访问simpleXML中的mysql字段

  21. 21

    通过指针 cpp 访问对象中的方法 - vscode 错误

  22. 22

    有什么方法可以将变形的json加载到python对象中?

  23. 23

    将JSON映射到Java对象的正确方法

  24. 24

    有什么办法可以通过给定的对象地址访问gdb中的python对象?

  25. 25

    将JSON对象数组动态放置到表中的有效方法是什么?

  26. 26

    如果可以通过任何其他方法访问该对象,那么对同步块中的对象进行锁定有什么用?

  27. 27

    通过特定表访问关联对象

  28. 28

    通过特定表访问关联对象

  29. 29

    是否可以通过Kotlin中的方法引用创建对象实例

热门标签

归档