ติดตั้งใช้งานและจัดการสคีมาและเครื่องมือเชื่อมต่อของ Data Connect

บริการ Firebase Data Connect มีองค์ประกอบหลัก 3 ส่วน ได้แก่

  • ฐานข้อมูล PostgreSQL ที่อยู่เบื้องหลังซึ่งมีสคีมา SQL ของตัวเอง
  • Data Connect สคีมาแอปพลิเคชัน (ประกาศในไฟล์ .gql)
  • เครื่องมือเชื่อมต่อจำนวนหนึ่ง (ประกาศในไฟล์ .gql ของคุณ)

สคีมา SQL คือแหล่งข้อมูลจริง สคีมา Data Connect คือวิธีที่เครื่องมือเชื่อมต่อจะดูข้อมูลดังกล่าว และเครื่องมือเชื่อมต่อจะประกาศ API ที่ลูกค้าสามารถใช้เพื่อเข้าถึงข้อมูลดังกล่าว

เมื่อคุณติดตั้งใช้งานบริการ Data Connect ด้วย CLI คุณจะย้ายข้อมูลสคีมา SQL จากนั้นอัปเดตสคีมา Data Connect แล้วอัปเดตเครื่องมือเชื่อมต่อแต่ละรายการ

แนวคิดสําคัญในการใช้งาน

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

การติดตั้งใช้งานสคีมา

การใช้สคีมา Data Connect จะส่งผลต่อสคีมา SQL สำหรับฐานข้อมูล Cloud SQL Data Connect ช่วยคุณย้ายข้อมูลสคีมาระหว่างการติดตั้งใช้งาน ไม่ว่าคุณจะทํางานกับฐานข้อมูลใหม่หรือต้องปรับเปลี่ยนฐานข้อมูลที่มีอยู่โดยไม่ทําให้ข้อมูลเสียหาย

การย้ายข้อมูลสคีมา Data Connect มีโหมดการตรวจสอบสคีมา 2 โหมด ได้แก่ เข้มงวดและเข้ากันได้

  • การตรวจสอบโหมดเข้มงวดกำหนดให้สคีมาฐานข้อมูลตรงกับสคีมาแอปพลิเคชันทั้งหมดก่อนจึงจะอัปเดตสคีมาของแอปพลิเคชันได้ ระบบจะลบตารางหรือคอลัมน์ที่ไม่ได้ใช้ในสคีมา Data Connect ออกจากฐานข้อมูล

  • การตรวจสอบโหมดที่เข้ากันได้กำหนดให้สคีมาฐานข้อมูลต้องเข้ากันได้กับสคีมาแอปพลิเคชันก่อนจึงจะอัปเดตสคีมาแอปพลิเคชันได้ การเปลี่ยนแปลงเพิ่มเติมที่ลบสคีมา ตาราง หรือคอลัมน์นั้นไม่บังคับ

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

    • สคีมา
    • ตาราง
    • คอลัมน์

การติดตั้งใช้งานเครื่องมือเชื่อมต่อ

รหัสไคลเอ็นต์ไม่ได้ส่งการค้นหาและการเปลี่ยนแปลง Data Connect รายการและจะเรียกใช้บนเซิร์ฟเวอร์ แต่ระบบจะจัดเก็บการดำเนินการ Data Connect เหล่านี้ไว้ในเซิร์ฟเวอร์เมื่อติดตั้งใช้งาน เช่น Cloud Functions ซึ่งหมายความว่าการทำให้ใช้งานได้อาจทำให้ผู้ใช้ที่มีอยู่เสียหาย

ทำตามเวิร์กโฟลว์การทำให้ใช้งานได้

คุณสร้างโปรเจ็กต์ Data Connect ได้ทั้งในไดเรกทอรีโปรเจ็กต์ในเครื่องและในคอนโซล Firebase

ขั้นตอนการทำให้ใช้งานได้ที่แนะนำมีดังนี้

  1. แสดงรายการสคีมาและเครื่องมือเชื่อมต่อที่ใช้งานอยู่ด้วย firebase dataconnect:services:list
  2. การจัดการการอัปเดตสคีมา
    1. ตรวจสอบความแตกต่างของสคีมา SQL ระหว่างฐานข้อมูล Cloud SQL กับสคีมา Data Connect ในพื้นที่ด้วย firebase dataconnect:sql:diff
    2. หากจำเป็น ให้ย้ายข้อมูลสคีมา SQL ด้วย dataconnect:sql:migrate
  3. ดําเนินการสคีมาและการเชื่อมต่อกับแพลตฟอร์มต่างๆ โดยเรียกใช้ firebase deploy ไม่ว่าจะสําหรับสคีมาเพียงอย่างเดียว ตัวเชื่อมต่อเพียงอย่างเดียว หรือทั้ง 2 อย่าง

ติดตั้งใช้งานและจัดการทรัพยากร Data Connect

คุณควรยืนยันทรัพยากรเวอร์ชันที่ใช้งานจริงก่อนทำการทำให้ใช้งานได้จริง

firebase dataconnect:services:list

เมื่อทํางานในไดเรกทอรีโปรเจ็กต์ในเครื่อง โดยทั่วไปแล้วคุณจะใช้คำสั่ง firebase deploy เพื่อทําให้สคีมาและคอนเน็กเตอร์ใช้งานได้จริง พร้อมแสดงความคิดเห็นแบบอินเทอร์แอกทีฟ

เมื่อใช้คำสั่ง deploy ใดก็ตาม แฟล็ก --only dataconnect จะช่วยให้คุณแยกการทําให้Data Connectใช้งานได้ออกจากผลิตภัณฑ์อื่นๆ ในโปรเจ็กต์ได้

การติดตั้งใช้งานตามปกติ

firebase deploy --only dataconnect

ในการติดตั้งใช้งานปกตินี้ Firebase CLI จะพยายามติดตั้งใช้งานสคีมาและตัวเชื่อมต่อ

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

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

การติดตั้งใช้งาน --force Flag

firebase deploy --only dataconnect --force

หากไม่มีข้อกังวลใดๆ เกี่ยวกับการตรวจสอบเครื่องมือเชื่อมต่อหรือสคีมา SQL คุณสามารถเรียกใช้คำสั่ง --force อีกครั้งเพื่อละเว้นการตรวจสอบดังกล่าว

การทำให้ใช้งานได้ของ --force จะยังคงตรวจสอบว่าสคีมา SQL ตรงกับสคีมา Data Connect หรือไม่ พร้อมทั้งเตือนความไม่เข้ากันและมีข้อความแจ้ง

ติดตั้งใช้งานทรัพยากรที่เลือก

หากต้องการติดตั้งใช้งานด้วยการควบคุมที่ละเอียดยิ่งขึ้น ให้ใช้แฟล็ก --only ที่มีอาร์กิวเมนต์ serviceId วิธีทำให้การเปลี่ยนแปลงสคีมามีผลกับบริการหนึ่งๆ เท่านั้น

firebase deploy --only dataconnect:serviceId:schema

นอกจากนี้คุณยังปรับใช้ทรัพยากรทั้งหมดสำหรับเครื่องมือเชื่อมต่อและบริการที่ระบุได้

firebase deploy --only dataconnect:serviceId:connectorId

สุดท้าย คุณสามารถติดตั้งใช้งานสคีมาและตัวเชื่อมต่อทั้งหมดสําหรับบริการเดียว

firebase deploy --only dataconnect:serviceId

เปลี่ยนกลับการทำให้ใช้งานได้

หากต้องการดำเนินการย้อนกลับด้วยตนเอง ให้ลองใช้โค้ดเวอร์ชันก่อนหน้าแล้วติดตั้งใช้งาน หากการทําให้ใช้งานได้ครั้งแรกมีการเปลี่ยนแปลงที่ก่อให้เกิดความเสียหาย คุณอาจกู้คืนข้อมูลที่ลบไปแล้วไม่ได้ทั้งหมด

ย้ายสคีมาฐานข้อมูล

หากคุณกำลังสร้างต้นแบบอย่างรวดเร็ว ทดสอบสคีมา และทราบว่าการเปลี่ยนแปลงสคีมาจะทำให้เกิดความเสียหาย คุณอาจวางแผนที่จะใช้เครื่องมือ Data Connect เพื่อยืนยันการเปลี่ยนแปลงและควบคุมวิธีการอัปเดต

เปรียบเทียบการเปลี่ยนแปลงสคีมา SQL

คุณยืนยันการเปลี่ยนแปลงได้ดังนี้

firebase dataconnect:sql:diff

คุณสามารถส่งรายการบริการที่คั่นด้วยคอมมา

คำสั่งนี้จะเปรียบเทียบสคีมาภายในสำหรับบริการกับสคีมาปัจจุบันของฐานข้อมูล Cloud SQL ที่เกี่ยวข้อง หากมีความแตกต่าง ระบบจะพิมพ์คำสั่ง SQL ที่จะเรียกใช้เพื่อแก้ไขความแตกต่างนั้น

ใช้การเปลี่ยนแปลง

เมื่อพอใจและพร้อมที่จะทำให้การเปลี่ยนแปลงใช้งานได้ในอินสแตนซ์ Cloud SQL ของสคีมาแล้ว ให้ใช้คำสั่ง firebase dataconnect:sql:migrate ระบบจะแจ้งให้คุณอนุมัติการเปลี่ยนแปลง

firebase dataconnect:sql:migrate [serviceId]

ในสภาพแวดล้อมแบบอินเทอร์แอกทีฟ ระบบจะแสดงคำสั่งการย้ายข้อมูล SQL และข้อความแจ้งให้ดำเนินการ

การย้ายข้อมูลในโหมดเข้มงวดหรือที่เข้ากันได้

ในโปรเจ็กต์ใหม่ ระบบจะใช้โหมดการตรวจสอบสคีมาเริ่มต้น การทำงานของคำสั่ง migrate คือนำการเปลี่ยนแปลงสคีมาของฐานข้อมูลทั้งหมดที่สคีมาของแอปพลิเคชันต้องการ จากนั้นจะแจ้งให้คุณอนุมัติการดำเนินการที่ไม่บังคับซึ่งวางสคีมา ตาราง หรือคอลัมน์เพื่อบังคับให้สคีมาฐานข้อมูลตรงกับสคีมาของแอปพลิเคชันทุกประการ

คุณปรับลักษณะการทำงานนี้ได้โดยการแก้ไขไฟล์ dataconnect.yaml ยกเลิกการคอมเมนต์คีย์ schemaValidation และประกาศ COMPATIBLE เพื่อให้ใช้เฉพาะการเปลี่ยนแปลงที่จําเป็นในการย้ายข้อมูล

schemaValidation: "COMPATIBLE"

หรือตั้งค่าลักษณะการทำงานเป็น STRICT เพื่อให้ระบบใช้การเปลี่ยนแปลงสคีมาทั้งหมดและบังคับให้สคีมาฐานข้อมูลตรงกับสคีมาแอปพลิเคชัน

schemaValidation: "STRICT"

ดูข้อมูลเพิ่มเติมได้ที่Data Connect CLI Reference

แนวทางปฏิบัติแนะนำสำหรับการจัดการสคีมาและคอนเน็กเตอร์

Firebase ขอแนะนำแนวทางปฏิบัติบางอย่างที่ควรทำตามในโปรเจ็กต์ Data Connect ของคุณ

ลดการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นภายในให้น้อยที่สุด

  • Firebase ขอแนะนำให้เก็บสคีมาและไฟล์เครื่องมือเชื่อมต่อ Data Connect ไว้ในการควบคุมแหล่งที่มา
  • หลีกเลี่ยงการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องหากเป็นไปได้ ตัวอย่างการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องทั่วไปมีดังนี้
    • การนำฟิลด์ออกจากสคีมา
    • การทําให้ช่องที่อนุญาตค่า Null ในสคีมาไม่อนุญาตค่า Null (เช่น Int -> Int!)
    • การเปลี่ยนชื่อฟิลด์ในสคีมา
  • หากจำเป็นต้องนำช่องออกจากสคีมา ให้พิจารณาแยกช่องออกเป็น 2-3 ช่องเพื่อลดผลกระทบ ดังนี้
    • ก่อนอื่น ให้นำการอ้างอิงไปยังช่องในเครื่องมือเชื่อมต่อออก แล้วนำการเปลี่ยนแปลงไปใช้งาน
    • ถัดไป ให้อัปเดตแอปเพื่อใช้ SDK ที่สร้างขึ้นใหม่
    • สุดท้าย ให้นำช่องในไฟล์สคีมา .gql ออก ย้ายข้อมูลสคีมา SQL และทำให้ใช้งานได้อีกครั้ง

ใช้โหมดเข้มงวดเมื่อทำงานกับฐานข้อมูลใหม่

หากคุณใช้ Data Connect กับฐานข้อมูลใหม่และกำลังพัฒนาสคีมาแอปพลิเคชันอยู่ และต้องการให้สคีมาฐานข้อมูลสอดคล้องกับสคีมาแอปพลิเคชันทุกประการ คุณสามารถระบุ schemaValidation: "STRICT" ใน dataconnect.yaml ได้

การดำเนินการนี้จะทำให้มีการใช้การเปลี่ยนแปลงที่ไม่บังคับด้วย

ใช้โหมดที่เข้ากันได้เมื่อคุณมีข้อมูลเวอร์ชันที่ใช้งานจริงในฐานข้อมูล

หากคุณทำการเปลี่ยนแปลงฐานข้อมูลที่เก็บข้อมูลเวอร์ชันที่ใช้งานจริง เราขอแนะนำให้คุณทำการย้ายข้อมูลสคีมาในโหมดที่เข้ากันได้ เพื่อให้แน่ใจว่าระบบจะไม่ทิ้งข้อมูลที่มีอยู่ คุณระบุ schemaValidation: "COMPATIBLE" ใน dataconnect.yaml ได้

ในโหมดที่เข้ากันได้ จะมีเฉพาะการเปลี่ยนแปลงที่จำเป็นสำหรับการย้ายข้อมูลสคีมาเท่านั้นที่มีผลกับฐานข้อมูล

  • DROP SCHEMA, DROP TABLE และ DROP COLUMN ถือเป็นคำสั่งที่ไม่บังคับ และจะไม่สร้างสำหรับแผนของคุณ แม้ว่าสคีมาฐานข้อมูลจะมีสคีมา ตาราง หรือคอลัมน์ที่ไม่ได้ระบุไว้ในสคีมาของแอปพลิเคชันก็ตาม
  • หากตารางฐานข้อมูลมีคอลัมน์ที่เป็นค่าว่างซึ่งไม่ได้รวมอยู่ในสคีมาของแอปพลิเคชัน ระบบจะนำข้อจำกัด NOT NULL ออกเพื่อให้ยังคงเพิ่มข้อมูลลงในตารางด้วยเครื่องมือเชื่อมต่อที่คุณกำหนดได้

ขั้นตอนถัดไปคือ