PostgreSQL เป็นฐานข้อมูลที่รองรับการเก็บข้อมูลในรูปแบบ JSON
ทำให้สามารถเก็บข้อมูลที่มีโครงสร้างแบบยืดหยุ่นได้
เช่น ข้อมูล API, ข้อมูล configuration หรือข้อมูลที่มีโครงสร้างไม่แน่นอน
PostgreSQL มี Data Type สำหรับ JSON อยู่ 2 แบบ คือ
- JSON
- JSONB
ความแตกต่างระหว่าง JSON และ JSONB
JSON
- เก็บข้อมูลในรูปแบบ text
- เก็บข้อมูลตามรูปแบบเดิมที่ใส่เข้าไป
- Query ช้ากว่าJSONB
- เก็บข้อมูลแบบ Binary
- สามารถ Index ได้
- Query ได้เร็วกว่า
โดยทั่วไปแนะนำให้ใช้ JSONB
เพราะมีประสิทธิภาพในการค้นหาที่ดีกว่า
ตัวอย่างการสร้างตารางเก็บ JSON
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
data JSONB
);
ในตัวอย่างนี้คอลัมน์ data จะใช้สำหรับเก็บข้อมูล JSON
ตัวอย่างการ Insert ข้อมูล JSON
INSERT INTO products (name, data)
VALUES (
'Laptop',
'{
"brand": "Dell",
"ram": "16GB",
"storage": "512GB",
"price": 35000
}'
);
การดึงข้อมูลจาก JSON
สามารถใช้ Operator ของ PostgreSQL เพื่อดึงข้อมูลจาก JSON ได้
SELECT data->>'brand'
FROM products;
ผลลัพธ์
Dell
การค้นหาข้อมูลใน JSON
SELECT *
FROM products
WHERE data->>'brand' = 'Dell';
การ Update ข้อมูล JSON
UPDATE products
SET data = jsonb_set(data, '{price}', '30000')
WHERE id = 1;
การสร้าง Index สำหรับ JSONB
ถ้าต้องค้นหาข้อมูล JSON บ่อย
สามารถสร้าง Index เพื่อเพิ่มความเร็วในการ Query ได้
CREATE INDEX idx_products_data
ON products
USING GIN (data);
สรุป
PostgreSQL รองรับการเก็บข้อมูล JSON ผ่าน Data Type
JSON และ JSONB ซึ่งช่วยให้สามารถเก็บข้อมูลที่มีโครงสร้างยืดหยุ่นได้
โดย JSONB จะมีประสิทธิภาพสูงกว่าและสามารถสร้าง Index ได้
จึงเหมาะกับการใช้งานในระบบจริง
