• postgresql
  • jsonb
  • json
  • database

เชี่ยวชาญประเภท JSONB ของ PostgreSQL ในบทความเดียว

เรียนรู้วิธีใช้ประเภท JSONB ของ PostgreSQL เพื่อสต็อก ถาม และจัดการข้อมูล JSON ได้อย่างมีประสิทธิภาพ

Yijun
Yijun
Developer

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

JSONB คืออะไร?

JSONB เป็นประเภทข้อมูลของ PostgreSQL ที่จัดเก็บข้อมูล JSON ในรูปแบบไบนารี ซึ่งต่างจากประเภท JSON ปกติ JSONB มีประสิทธิภาพมากกว่าในงานสอบถามและการจัดการ มันรองรับตัวดำเนินการและฟังก์ชันที่หลากหลายที่ทำให้การจัดการข้อมูล JSON ง่ายขึ้น นอกจากนี้ JSONB ยังรองรับดัชนีหลายประเภท ได้แก่ ดัชนี B-tree, Hash, GIN, และ GiST ทำให้ประสิทธิภาพการสอบถามดีขึ้นไปอีก

การสร้างประเภท JSONB

การสร้างตารางที่มีประเภท JSONB

ก่อนอื่น มาสร้างตารางที่มีคอลัมน์ JSONB กัน สมมติว่าเรามีตาราง products เพื่อจัดเก็บข้อมูลผลิตภัณฑ์ โดยรายละเอียดของผลิตภัณฑ์จัดเก็บโดยใช้ประเภท JSONB

การแทรกข้อมูล JSONB

เราสามารถแทรกข้อมูล JSON ลงในฟิลด์ JSONB โดยใช้คำสั่ง INSERT ง่าย ๆ

การสอบถามข้อมูล JSONB

การดึงค่าออกจากฟิลด์ JSONB

เราสามารถใช้ตัวดำเนินการ ->> เพื่อดึงค่าข้อความจากฟิลด์ JSONB ตัวอย่างต่อไปนี้แสดงวิธีดึงข้อมูลแบรนด์ของผลิตภัณฑ์

การดึงค่าซ้อนด้วย JSONB

เราสามารถใช้การผสมผสานของตัวดำเนินการ -> และ ->> เพื่อดึงค่าที่ซ้อนกันในโครงสร้าง JSON ตัวอย่างต่อไปนี้แสดงวิธีดึงข้อมูล CPU ของผลิตภัณฑ์

การดึงค่าด้วยเส้นทาง JSONB

ด้วยการใช้ตัวดำเนินการ #>> เราสามารถดึงค่าจากเส้นทางที่เจาะจงภายในข้อมูล JSON ตัวอย่างต่อไปนี้แสดงวิธีดึงข้อมูลสตอเรจ

การใช้ตัวดำเนินการ @> สำหรับการสอบถามการครอบคลุม

ตัวดำเนินการ @> ตรวจสอบว่าออบเจ็กต์ JSONB หนึ่งครอบคลุมอีกออบเจ็กต์หนึ่ง ตัวอย่างต่อไปนี้แสดงวิธีสอบถามผลิตภัณฑ์ของแบรนด์เฉพาะ

การปรับเปลี่ยนข้อมูล JSONB

การอัปเดตข้อมูล JSONB

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

การลบฟิลด์ระดับบนในข้อมูล JSONB

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

การลบฟิลด์ที่ซ้อนกันในข้อมูล JSONB

เราสามารถใช้ตัวดำเนินการ #- เพื่อลบองค์ประกอบของเส้นทางเฉพาะจากข้อมูล JSONB ตัวดำเนินการนี้ลบคีย์ที่เส้นทางที่กำหนดไว้ ตัวอย่างต่อไปนี้แสดงวิธีลบข้อมูล CPU จากข้อกำหนดผลิตภัณฑ์

การสอบถาม JSONB ขั้นสูง

การใช้ JSONB arrays

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

ในตัวอย่างข้างต้น คุณยังสามารถใช้ตัวดำเนินการ ? เพื่อเช็คว่าหมายเลข array ของ JSONB มีองค์ประกอบเฉพาะหรือไม่:

การรวมข้อมูล JSONB

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

การรวมข้อมูล JSONB

เราสามารถใช้ฟังก์ชันการรวมเพื่อประมวลผลข้อมูล JSONB เช่น การนับจำนวนผลิตภัณฑ์ต่อแบรนด์

การจัดทำดัชนี JSONB และการเพิ่มประสิทธิภาพการทำงาน

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

  • ดัชนี GIN: เหมาะสำหรับการสอบถามที่ซับซ้อนที่เกี่ยวข้องกับข้อมูลหลายค่า array และการค้นหาข้อความเต็ม
  • ดัชนี B-tree: เหมาะสำหรับการสอบถามคู่คีย์-ค่าแบบง่าย การสอบถามช่วง และการดำเนินการเรียงลำดับ

การเลือกและสร้างดัชนีอย่างเหมาะสมสามารถเพิ่มประสิทธิภาพการสอบถามข้อมูล JSONB อย่างมาก

การสร้างดัชนี GIN

ดัชนี GIN เหมาะสำหรับเร่งการสอบถามที่เกี่ยวกับข้อมูลหลายค่าและ array ตัวอย่างเช่น เราสามารถสร้างดัชนี GIN สำหรับ array tags ที่กล่าวถึงก่อนหน้านี้เพื่อเร่งการสอบถามเกี่ยวกับองค์ประกอบ array

การสร้างดัชนี B-tree

สำหรับการสอบถามคู่คีย์-ค่าแบบง่าย ดัชนี B-tree ก็สามารถช่วยเพิ่มประสิทธิภาพได้อย่างมาก ดัชนี B-tree เหมาะสำหรับการสอบถามช่วงและการดำเนินการเรียงลำดับ ตัวอย่างต่อไปนี้แสดงวิธีสร้างดัชนี B-tree สำหรับคีย์ model ในฟิลด์ details

บทสรุป

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