Capire i dati JSON in Postgres

Introduzione ai database NoSQL

Jake Roach

Data Engineer

JSON e JSONB in Postgres

{
    'guardian': 'mother',
    'status': 'A',
    'educations': [4, 4],
    'jobs': {
        'P1': 'teacher',
        'P2': 'at_home'
    }
}
CREATE TABLE students
    <column-name> JSON,
    <column-bame> JSONB
;

JSON

  • Archivia dati in formato JSON
  • Coppie chiave-valore, array, oggetti annidati

$$

JSONB

  • Dati archiviati in formato binario
  • Simile a BSON in MongoDB
  • Archiviazione e lettura più efficienti
  • Consente indicizzazione aggiuntiva
Introduzione ai database NoSQL

Perché dati semi-strutturati in Postgres?

Una tabella Postgres con una colonna di tipo JSON.

Introduzione ai database NoSQL

Interrogare dati JSON con Postgres

SELECT
    address,
    famsize,
    ...
FROM students
[WHERE | GROUP BY | ORDER BY];

$$

  • row_to_json, json_to_record
  • Operatori ->, ->>, #>, #>>
  • json_extract_path, json_extract_path_text

Potrai anche:

  • Inserire record in formato JSON in una tabella Postgres
  • Da tabellare a JSON e da JSON a tabellare
  • Estrarre singoli record da oggetti JSON
Introduzione ai database NoSQL

Eseguire query con sqlalchemy e pandas

import sqlalchemy
import pandas as pd
# Crea una connessione
db_engine = sqlalchemy.create_engine(
    "postgresql+psycopg2://<user>:<password>@<host>:5432/<database>"
)
# Scrivi una query
query = "SELECT * FROM table_name;"
# Esegui la query e mostra i risultati
results = pd.read_sql(query, db_engine)
Introduzione ai database NoSQL

Esercitiamoci!

Introduzione ai database NoSQL

Preparing Video For Download...