ทำความเข้าใจข้อมูล JSON ใน Postgres

NoSQL เบื้องต้น

Jake Roach

Data Engineer

JSON และ JSONB ใน Postgres

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

JSON

  • เก็บข้อมูลในรูปแบบ JSON
  • คู่ key-value, อาร์เรย์, ออบเจกต์ซ้อน

$$

JSONB

  • เก็บข้อมูลในรูปแบบไบนารี
  • คล้าย BSON ใน MongoDB
  • จัดเก็บและเรียกข้อมูลได้มีประสิทธิภาพกว่า
  • รองรับการทำ index เพิ่มเติม
NoSQL เบื้องต้น

เหตุใดจึงใช้ข้อมูลกึ่งโครงสร้างใน Postgres?

ตาราง Postgres ที่มีคอลัมน์ชนิด JSON

NoSQL เบื้องต้น

การคิวรีข้อมูล JSON ด้วย Postgres

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

$$

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

นอกจากนี้ยังทำได้:

  • แทรกระเบียนรูปแบบ JSON ลงในตาราง Postgres
  • แปลงตารางเป็น JSON และ JSON เป็นตาราง
  • ดึงข้อมูลแต่ละรายการจากออบเจกต์ JSON
NoSQL เบื้องต้น

รันคิวรีด้วย sqlalchemy และ pandas

import sqlalchemy
import pandas as pd
# Create a connection
db_engine = sqlalchemy.create_engine(
    "postgresql+psycopg2://<user>:<password>@<host>:5432/<database>"
)
# Write a query
query = "SELECT * FROM table_name;"
# Execute the query, show results
results = pd.read_sql(query, db_engine)
NoSQL เบื้องต้น

มาฝึกกันเถอะ!

NoSQL เบื้องต้น

Preparing Video For Download...