Re: How is JSON stored in PG ?

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: David Gauthier <davegauthierpg(at)gmail(dot)com>, Postgres General <pgsql-general(at)postgresql(dot)org>
Subject: Re: How is JSON stored in PG ?
Date: 2021-11-16 16:26:21
Message-ID: d179aa08-0c6f-7890-0a8e-610169bbbef1@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 11/16/21 07:54, David Gauthier wrote:
> Hi:
>
> psql (11.5, server 11.3) on linux
>
> I'm considering using JSON as a datatype for something I'm working on.
> The reasons are...
>
> 1) the 'metadata' (if you want to call it that) in JSON is very
> flexible.  Doesn't require an alter table or anything like that to change.
> 2) The customers for this data is probably going to be python code.
> IOW, they can sort things out in their code after reading the whole JSON
> file/record.
> 3) Nice array of built-in functions for this datatype.
> 4) There does appear to be the ability to formulate query predicates on
> the JSON content (just in case)
>
> But #4 has me a bit worried.  I'm wondering how PG stores this data
> given that its content can be specified in a query predicate.  Does PG
> just store the content in traditional PG tables ?  If so, I can do that
> myself.  If not, is there a penalty to be paid at query time if PG needs
> to get the JSON data, then dismantle into a temp table (or something
> like that) to query.

1) Are you talking json or jsonb?

2) If you are going to store JSON in a non-JSON field then you will need
to cast the field value to json/jsonb to use the JSON capabilities in
Postgres. Not sure that is a good idea.

3) json(b) is stored in a field in a table per
https://www.postgresql.org/docs/current/datatype-json.html:

"The json and jsonb data types accept almost identical sets of values as
input. The major practical difference is one of efficiency. The json
data type stores an exact copy of the input text, which processing
functions must reparse on each execution; while jsonb data is stored in
a decomposed binary format that makes it slightly slower to input due to
added conversion overhead, but significantly faster to process, since no
reparsing is needed. jsonb also supports indexing, which can be a
significant advantage."

>
> Pros and Cons for using JSON ?

Pros

You get the warm fuzzy feeling of using NoSQL in a SQL database

Cons

You get the task of basically unfolding a host of embedded databases.

>
> Thanks for any help !
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2021-11-16 16:29:14 Re: pg_restore depending on user functions
Previous Message Joel Rabinovitch 2021-11-16 16:09:05 Performance question about using autosave=always and cleanupSavepoints=true