Chuyển đến nội dung chính
Quay lại danh sách bài viết

เก็บ JSONB ใน PostgreSQL และเลือกดัชนีให้ถูก

JSONB เก็บข้อมูล JSON ในรูปแบบที่เหมาะกับการประมวลผลและสร้างดัชนีได้ อธิบายหลักการใช้งาน กรณีที่เหมาะ และข้อควรระวังจากเอกสารทางการ

เก็บ JSONB ใน PostgreSQL และเลือกดัชนีให้ถูก

JSONB เก็บข้อมูล JSON ในรูปแบบที่เหมาะกับการประมวลผลและสร้างดัชนีได้ เหมาะกับข้อมูลที่โครงสร้างย่อยเปลี่ยนบ่อยแต่ยังต้องคิวรีร่วมกับข้อมูล relational บทความนี้สรุปแนวคิดจากเอกสารทางการของ PostgreSQL และจุดที่ควรตรวจเมื่อนำไปใช้จริง

ภาพรวม

PostgreSQL มีทั้งกลไกธุรกรรม การจัดเก็บ และตัววางแผนคิวรี การเปลี่ยนค่าเพียงจุดหนึ่งอาจกระทบประสิทธิภาพ การกู้คืน และความถูกต้องของข้อมูล

หัวข้อนี้ตอบโจทย์เฉพาะเรื่อง: JSONB เก็บข้อมูล JSON ในรูปแบบที่เหมาะกับการประมวลผลและสร้างดัชนีได้ จึงควรเริ่มจากปัญหาที่ต้องแก้และผลลัพธ์ที่คาดหวัง ไม่ใช่เพียงเปิดฟีเจอร์เพราะมีอยู่ในเครื่องมือ

หลักการทำงาน

ตัวดำเนินการสำหรับ key, path และ containment ทำให้คิวรีข้อมูลยืดหยุ่นเมื่อออกแบบเงื่อนไขชัด

ให้ตรวจทั้งสถานะที่เครื่องมือรายงานและผลลัพธ์ปลายทางที่ผู้ใช้หรือระบบอื่นได้รับ หากสองส่วนไม่ตรงกัน ควรกลับไปตรวจค่าตั้งต้นและขอบเขตที่ฟีเจอร์นี้รับผิดชอบก่อนเปลี่ยนค่าเพิ่มเติม

เหมาะกับงานแบบไหน

เหมาะกับข้อมูลที่โครงสร้างย่อยเปลี่ยนบ่อยแต่ยังต้องคิวรีร่วมกับข้อมูล relational

ก่อนทดลอง ให้ระบุสิ่งที่จะใช้วัดผล เช่น เวลาตอบสนอง ความพร้อมใช้งาน ความถูกต้องของข้อมูล หรือภาระการดูแล แล้วเทียบกับสภาพเดิม วิธีนี้ช่วยให้รู้ว่าฟีเจอร์แก้ปัญหาจริงหรือย้ายภาระไปอีกจุดหนึ่ง

ขั้นตอนนำไปใช้

  1. เก็บค่าปัจจุบันและตัวเลขก่อนเปลี่ยน เช่น latency และขนาดตาราง
  2. ทดสอบกับข้อมูลที่มีขนาดและรูปแบบใกล้ production
  3. เตรียม backup ที่กู้คืนได้ และตรวจสถิติหลังเปลี่ยน

เริ่มจากขอบเขตเล็กและเก็บผลทดสอบไว้กับการเปลี่ยนแปลง หากจะใช้ใน production ให้กำหนดผู้ติดตามผลและเงื่อนไขที่จะหยุดการขยายการใช้งาน

ข้อควรระวัง

อย่าใช้ JSONB แทน schema ทั้งหมดโดยไม่มีเหตุผล เพราะ constraint และการคิวรีอาจซับซ้อนขึ้น

แปลงข้อควรระวังนี้เป็นรายการตรวจในการทบทวนงาน เพราะปัญหาจากค่าตั้งต้นอาจไม่แสดงทันทีในสภาพแวดล้อมทดสอบ

สรุป

JSONB เก็บข้อมูล JSON ในรูปแบบที่เหมาะกับการประมวลผลและสร้างดัชนีได้ เหมาะกับข้อมูลที่โครงสร้างย่อยเปลี่ยนบ่อยแต่ยังต้องคิวรีร่วมกับข้อมูล relational ก่อนนำไปใช้กับงานหลัก ควรตรวจผลตามขั้นตอนข้างต้นและทบทวนข้อจำกัดของระบบที่มีอยู่

อ่านเพิ่มเติม: เอกสารทางการของ PostgreSQL

Chia sẻ bài viết:
Xem thêm bài viết