Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JSONB Tricks: Operators, Indexes, and When to (...

JSONB Tricks: Operators, Indexes, and When to (Not) Use It | SF Bay Area PostgreSQL Meetup | Colton Shepard

When do you use jsonb, and when don’t you? How do you make it fast? What operators are available, and what can they do? How will this change? These are all very good questions, but jsonb support in Postgres moves so fast that it’s hard to keep up.

In this talk, you will get details on these topics, complete with practical examples and real-world stories:

*When to use jsonb, what it’s good for, and when to not use it
*Operators and how to use them effectively
*Indexing, operator support for indexes, and the tradeoffs involved
*Postgres 12 improvements and new features

Citus Data

May 19, 2020
Tweet

More Decks by Citus Data

Other Decks in Technology

Transcript

  1. Who am I? Colton Shepard Former Citus Data employee, now

    at Microsoft thanks to the acquisition Postgres and Citus implementation and migration specialist Work with on-premise, Azure, edge, and other cloud environments
  2. What is all this, anyways? JavaScript Object Notation Data Interchange

    Format RFC 7158 Human readable lightweight data format One of 2 Postgres JSON data types. Decomposed for storage, not stored as string • Fast and indexable • High disk usage
  3. Postgres 12 New datatype: jsonpath Provides a binary representation of

    the parsed SQL/JSON path expression 1. .key returns object member with specified key 2. .* returns all object members at current level 3. .** returns all object members at current level and below 4. .**{level} or .**{start_level to end_level} returns all at specified level(s) 5. [subscript, ...] returns the value at specified array location https://www.postgresql.org/docs/12/functions-json.html#FUNCTIONS-SQLJSON-OP-TABLE
  4. General resources to learn more https://www.youtube.com/watch?v=AeMaBwd90SI https://heap.io/blog/engineering/when-to-avoid-jsonb-in-a- postgresql-schema https://bitnine.net/blog-postgresql/postgresql-internals-jsonb- type-and-its-indexes/

    https://www.postgresql.org/docs/12/functions- json.html#FUNCTIONS-SQLJSON-PATH https://paquier.xyz/postgresql-2/postgres-12-jsonpath/ https://www.citusdata.com/blog/2016/07/25/sharding-json-in- postgres-and-performance/