Hiểu dữ liệu JSON trong Postgres

Giới thiệu về NoSQL

Jake Roach

Data Engineer

JSON và JSONB trong Postgres

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

JSON

  • Lưu dữ liệu dạng JSON
  • Cặp khóa-giá trị, mảng, đối tượng lồng nhau

$$

JSONB

  • Dữ liệu lưu ở dạng nhị phân
  • Tương tự BSON trong MongoDB
  • Lưu trữ và truy xuất hiệu quả hơn
  • Hỗ trợ lập chỉ mục bổ sung
Giới thiệu về NoSQL

Vì sao dùng dữ liệu bán cấu trúc trong Postgres?

Một bảng Postgres có cột kiểu JSON.

Giới thiệu về NoSQL

Truy vấn dữ liệu JSON với Postgres

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

$$

  • row_to_json, json_to_record
  • Toán tử ->, ->>, #>, #>>
  • json_extract_path, json_extract_path_text

Chúng ta cũng sẽ có thể:

  • Chèn bản ghi định dạng JSON vào bảng Postgres
  • Dạng bảng ↔ JSON
  • Trích xuất bản ghi riêng lẻ từ đối tượng JSON
Giới thiệu về NoSQL

Chạy truy vấn với sqlalchemy và pandas

import sqlalchemy
import pandas as pd
# Tạo kết nối
db_engine = sqlalchemy.create_engine(
    "postgresql+psycopg2://<user>:<password>@<host>:5432/<database>"
)
# Viết truy vấn
query = "SELECT * FROM table_name;"
# Thực thi truy vấn, hiển thị kết quả
results = pd.read_sql(query, db_engine)
Giới thiệu về NoSQL

Hãy thực hành!

Giới thiệu về NoSQL

Preparing Video For Download...