使用 Postgres JSONB 值数组而不是仅使用 JSONB 有什么意义吗?

Hau*_*eth 6 postgresql array json

是否有任何理由使用 JSONB 值数组而不仅仅是原始 JSONB?

我的用例是我需要在 JSON 对象列表中存储自定义表单定义。我的问题是将其存储为原始 JSON 值还是将其拆分为单独的 JSONB 对象会更好。

每种解决方案的优缺点是什么?

Eva*_*oll 6

通常,如果您有一个包含一件事的数组(静态类型),最好将它们存储为jsonb[](本机 SQL 数组)。有更多的函数可以操作 SQL 数组和索引。它还倾向于减少存储开销。JSONb 只有,

jsonb_array_length(jsonb)
jsonb_array_elements(jsonb)
jsonb_array_elements_text(jsonb)
Run Code Online (Sandbox Code Playgroud)

虽然 Array 的功能远不止这些,但其中大部分功能都是作为运算符实现的。

最终,在大多数用例中,它并不重要。你最好规范化你的数据。您真的不应该在一行中存储多个 json 文档。这听起来像是一个很大的“骗局”。