DEV Community

Cover image for Working with JSON in PostgreSQL, why?
Abdul Aziz A.B
Abdul Aziz A.B

Posted on

Working with JSON in PostgreSQL, why?

You may be using JSON to extract data from an API and use it, but you need to find a way to store it if you ever wanted to use it in the future. However, that's a big problem when you don't know what the heck is going on with it as it keeps changing everytime you request a new API call depending on the usecase. So, you may be wondering, if you could store this in a database of some sort, you know, something that let's you prost-gress further! Enter, PostgreSQL, the only database system that you'd ever need, and hey, it's free!

Let's explore how PostgreSQL enables us to store, query, and manipulate JSON data more easily, with a slight more focus on the JSONB data type.

Why JSON in PostgreSQL?

Image description

JSON (JavaScript Object Notation) has established itself as the de facto standard for data interchange in contemporary web applications. Its elegance and human-readable format have endeared it to developers and data enthusiasts alike. PostgreSQL's innate support for JSON data seamlessly integrates this structured yet flexible data format into its database. JSON data can be indexed for swift retrieval, searched with finesse, and molded to suit diverse requirements. It's like having the best of both worlds.

JSON vs. JSONB: What Distinguishes Them?

Image description

PostgreSQL offers you two kinds for handling JSON data, namely the JSON and JSONB.

JSON: It's more like the textual rendition of structured data and is easily decipherable and adaptable to human interaction - however, it may not be the fastest when it comes to querying and indexing, as it stores data in a non-binary format.

JSONB: This is the star of the show, as it employs binary encoding to compactly and efficiently store data making it the preferred choice for most applications, thanks to its ability to accelerate queries compared to JSON.

Image description

Storing JSON Data

Storing JSON data in PostgreSQL is as straightforward as a stroll in the park. You create a table with a JSON or JSONB column and then insert your JSON documents. Let's sample the experience:

CREATE TABLE products (
    id serial PRIMARY KEY,
    name text,
    attributes JSONB
);

INSERT INTO products (name, attributes)
VALUES ('Product A', '{"color": "red", "size": "medium"}');
Enter fullscreen mode Exit fullscreen mode

Image description

Querying JSON Data

PostgreSQL boasts a diverse set of operators and functions designed for navigating JSON data. You can pluck specific JSON properties, sift through rows based on JSON values, and even perform intricate maneuvers. Here are some eloquent examples:

Extract a JSON property:

SELECT attributes->>'color' FROM products WHERE name = 'Product A';
Enter fullscreen mode Exit fullscreen mode

Winnow rows based on JSON values:

SELECT * FROM products WHERE attributes @> '{"size": "medium"}';
Enter fullscreen mode Exit fullscreen mode

Refine JSON data with finesse:

UPDATE products
SET attributes = jsonb_set(attributes, '{color}', '"blue"')
WHERE name = 'Product A';
Enter fullscreen mode Exit fullscreen mode

Enhance Your Queries with Indexing

To turbocharge your query performance, PostgreSQL empowers you to erect indexes on JSONB columns. This is particularly invaluable when grappling with colossal datasets. Behold the mystical incantation:

CREATE INDEX idx_color ON products USING GIN (attributes jsonb_path_ops);
Enter fullscreen mode Exit fullscreen mode

And? That's all?

Image description

No. PostgreSQL's embrace of JSON extends far beyond rudimentary functions. You can delve into the world of nested JSON structures, orchestrate aggregations, and wield sophisticated functions like jsonb_array_elements to extract elements from JSON arrays. It's like having a Swiss Army knife for data manipulation.

Real-world JSON Expeditions

Image description

Where does JSON shine in the real world, you ask? It's not merely reserved for straightforward scenarios. Here are some illustrious applications:

  • Storing configuration data in a structured format.
  • Managing user profiles embellished with bespoke attributes.
  • Unraveling the mysteries of logging and monitoring, especially in domains where data schemas possess the flexibility of a slinky.
  • Constructing APIs that converse in JSON, welcoming and dispatching data in a format that developers adore.

In Conclusion

Image description

PostgreSQL's dalliance with JSON and JSONB data types unveils a treasure trove of opportunities for developers and data enthusiasts. Whether you're crafting a web application that thrives on JSON or need to navigate the labyrinth of semi-structured data, PostgreSQL stands as your steadfast companion. As you acquaint yourself with the nuances between JSON and JSONB, master the art of storing and querying JSON data, harness the potency of indexing for expeditious searches, and explore the realm of advanced JSON features, PostgreSQL transforms the world of data into a playground where the JSON adventure begins.

Top comments (0)