Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

JSONB Tricks: Operators, Indexes, and When (Not) to Use It | PostgresOpen 2019 | Colton Shepard

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité

Consultez-les par la suite

1 sur 37 Publicité

JSONB Tricks: Operators, Indexes, and When (Not) to Use It | PostgresOpen 2019 | Colton Shepard

Télécharger pour lire hors ligne

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

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

Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à JSONB Tricks: Operators, Indexes, and When (Not) to Use It | PostgresOpen 2019 | Colton Shepard (20)

Publicité

Plus par Citus Data (20)

Plus récents (20)

Publicité

JSONB Tricks: Operators, Indexes, and When (Not) to Use It | PostgresOpen 2019 | Colton Shepard

  1. 1. Colton Shepard PostgresOpen 2019
  2. 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. 3. Good use cases Entity–attribute–value model tables
  4. 4. Customer Story!
  5. 5. Less Good Use Cases: Statistics Gathering Issues
  6. 6. Other Less Good Use Cases
  7. 7. Customer Story: Heap Analytics https://heap.io/blog/engineering/when-to-avoid-jsonb-in-a-postgresql-schema
  8. 8. Customer Story: Anonymous, Inc.
  9. 9. Operators
  10. 10. -> and ->>
  11. 11. The ? operator Does this string exist as a top-level key within the JSON value?
  12. 12. The ? operator What about this array of strings?
  13. 13. The ? operator
  14. 14. The @ operator
  15. 15. #> and #>>
  16. 16. Operator-friendly indexes
  17. 17. B-Tree
  18. 18. B-Tree Function Index
  19. 19. Hash
  20. 20. Hash function indexes
  21. 21. GiST, SP-GiST, and BRIN
  22. 22. GIN This
  23. 23. GIN with jsonb_path_ops
  24. 24. GIN with jsonb_ops (default)
  25. 25. Special mention: GIN function index with gin_trgm_ops
  26. 26. 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/devel/datatype-json.html#DATATYPE-JSONPATH
  27. 27. Postgres 12: The jsonb_path_query operator
  28. 28. Postgres 12: jsonb_path_query with .* and .**
  29. 29. Postgres 12: jsonb_path_query with .**{level}
  30. 30. Postgres 12: jsonb_path_query with arrays
  31. 31. Postgres 12: the jsonb_path_exists operator Gives bool indicating whether the path exists.
  32. 32. Postgres 12: the jsonb_path_match operator This allows for any logic that’ll output Boolean results
  33. 33. Postgres 12: the jsonb_path_query_array operator Much like jsonb_path_query, but you get an array instead:
  34. 34. Postgres 12: the jsonb_path_query_first operator Get first matching result:
  35. 35. Conclusion
  36. 36. 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.citusdata.com/blog/2016/07/14/choosing-nosql- hstore-json-jsonb/ 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/
  37. 37. @Azure Database for MySQL, PostgreSQL & MariaDB

×