บริการ Firebase SQL Connect มีคอมโพเนนต์หลัก 3 อย่าง ได้แก่
- ฐานข้อมูล PostgreSQL เบื้องหลังที่มีสคีมา SQL ของตัวเอง
- SQL Connect สคีมาแอปพลิเคชัน SQL Connect (ประกาศไว้ในไฟล์
.gql) - เครื่องมือเชื่อมต่อ จำนวนหนึ่ง (ประกาศไว้ในไฟล์
.gqlและกำหนดค่าไว้ในไฟล์connector.yaml)
สคีมา SQL เป็นแหล่งข้อมูลที่เชื่อถือได้สำหรับข้อมูลของคุณ สคีมา SQL Connect เป็นวิธีที่เครื่องมือเชื่อมต่อจะเห็นข้อมูลดังกล่าว และเครื่องมือเชื่อมต่อจะประกาศ API ที่ไคลเอ็นต์ใช้เพื่อเข้าถึงข้อมูลนั้นได้
เมื่อคุณทำให้บริการ SQL Connect ใช้งานได้ด้วย CLI คุณจะ ย้ายข้อมูลสคีมา SQL จากนั้นอัปเดตสคีมา SQL Connect แล้ว อัปเดตเครื่องมือเชื่อมต่อแต่ละรายการ
แนวคิดสำคัญเกี่ยวกับการทำให้ใช้งานได้
คุณควรทราบแนวคิดสำคัญเกี่ยวกับสคีมาและเครื่องมือเชื่อมต่อเพื่อให้เข้าใจการทำให้ใช้งานได้อย่างครบถ้วน
การทำให้สคีมาใช้งานได้
การทำให้สคีมา SQL Connect ใช้งานได้จะส่งผลต่อสคีมา SQL สำหรับฐานข้อมูล Cloud SQL SQL Connect ช่วยให้คุณ ย้ายข้อมูล สคีมา ของคุณ ในระหว่างการทำให้ใช้งานได้ ไม่ว่าคุณจะใช้ฐานข้อมูลใหม่หรือต้องการปรับฐานข้อมูลที่มีอยู่ โดยไม่ทำให้ข้อมูลเสียหาย
การย้ายข้อมูลสคีมา SQL Connect มีโหมดการตรวจสอบสคีมา 2 โหมด ได้แก่ จำกัด และ เข้ากันได้
การตรวจสอบโหมดเข้มงวดกำหนดให้สคีมาฐานข้อมูลต้องตรงกับสคีมาแอปพลิเคชัน ทุกประการ ก่อนที่จะอัปเดตสคีมาแอปพลิเคชันได้ ระบบจะลบ ตารางหรือคอลัมน์ที่ไม่ได้ใช้ในสคีมา SQL Connect ออกจากฐานข้อมูล
การตรวจสอบโหมดเข้ากันได้กำหนดให้สคีมาฐานข้อมูลต้อง เข้ากันได้ กับสคีมาแอปพลิเคชันก่อนที่จะอัปเดตสคีมาแอปพลิเคชันได้ ส่วนการเปลี่ยนแปลงเพิ่มเติมที่ลบสคีมา ตาราง หรือคอลัมน์นั้นไม่บังคับ
คำว่า "เข้ากันได้" หมายความว่าการย้ายข้อมูลสคีมาจะส่งผลเฉพาะตารางและคอลัมน์ที่อ้างอิงในสคีมาแอปพลิเคชันเท่านั้น ระบบจะไม่แก้ไของค์ประกอบในฐานข้อมูลที่สคีมาแอปพลิเคชันไม่ได้ใช้ ดังนั้น หลังจากทำให้ใช้งานได้ ฐานข้อมูลของคุณอาจมีองค์ประกอบต่อไปนี้ที่ไม่ได้ใช้
- สคีมา
- ตาราง
- คอลัมน์
การทำให้เครื่องมือเชื่อมต่อใช้งานได้
SQL Connect การค้นหาและการเปลี่ยนแปลงจะไม่ถูกส่งโดยโค้ดไคลเอ็นต์ และดำเนินการบนเซิร์ฟเวอร์ แต่เมื่อทำให้ใช้งานได้ ระบบจะจัดเก็บการดำเนินการ SQL Connect เหล่านี้ไว้ในเซิร์ฟเวอร์ เช่น Cloud Functions ซึ่งหมายความว่าการทำให้ใช้งานได้อาจส่งผลกระทบต่อผู้ใช้ที่มีอยู่
SQL Connect จะผสานรวมการวิเคราะห์การเปลี่ยนแปลงที่อาจส่งผลกระทบต่อการทำงานของระบบในการอัปเดต เครื่องมือเชื่อมต่อเข้ากับ Firebase CLI
CLI จะวิเคราะห์การเปลี่ยนแปลงเครื่องมือเชื่อมต่อแต่ละรายการเทียบกับ สคีมาของคุณ และออกชุดข้อความประเมินเกี่ยวกับการเปลี่ยนแปลงเครื่องมือเชื่อมต่อ ที่อาจ เปลี่ยนแปลงลักษณะการทำงานของไคลเอ็นต์ (ข้อความระดับคำเตือน) หรือ อาจส่งผลกระทบต่อการทำงาน (ข้อความระดับส่งผลกระทบต่อการทำงานของระบบ) ของโค้ดไคลเอ็นต์เวอร์ชันก่อนหน้า
ตัวอย่างเช่น
- การเปลี่ยนแปลงเครื่องมือเชื่อมต่อที่อาจเปลี่ยนแปลงลักษณะการทำงานของไคลเอ็นต์ ได้แก่ การนำช่องที่อนุญาตให้เป็นค่าว่างออกจากคําค้นหาโดยไม่มีคำอธิบายประกอบสคีมา
@retired - การเปลี่ยนแปลงเครื่องมือเชื่อมต่อที่อาจส่งผลกระทบต่อการทำงานของไคลเอ็นต์ ได้แก่ การเปลี่ยนตัวแปรการดำเนินการที่อนุญาตให้เป็นค่าว่างเป็นค่าที่ไม่ใช่ค่าว่างโดยไม่มีค่าเริ่มต้น หรือการเปลี่ยนประเภทข้อมูลของช่องเป็นประเภทที่ไม่เข้ากัน (เช่น
Stringเป็นInt)
รายการสถานการณ์ระดับคำเตือนและระดับส่งผลกระทบต่อการทำงานของระบบที่ครอบคลุมมากขึ้นจะอยู่ใน คู่มืออ้างอิง CLI
ทำตามเวิร์กโฟลว์การทำให้ใช้งานได้
คุณสามารถทำงานในโปรเจ็กต์ SQL Connect ได้ทั้งในไดเรกทอรีโปรเจ็กต์ที่อยู่ในเครื่อง และในคอนโซล Firebase
ขั้นตอนการทำให้ใช้งานได้ที่แนะนำมีดังนี้
- แสดงรายการสคีมาและเครื่องมือเชื่อมต่อ ที่ทำให้ใช้งานได้ในปัจจุบันด้วย
firebase dataconnect:services:list - จัดการการอัปเดตสคีมา
- ตรวจสอบความแตกต่างของสคีมา SQL ระหว่างCloud SQL
ฐานข้อมูลกับสคีมาSQL Connectในเครื่องด้วย
firebase dataconnect:sql:diff - หากจำเป็น ให้ย้ายข้อมูลสคีมา SQL ด้วย
dataconnect:sql:migrate
- ตรวจสอบความแตกต่างของสคีมา SQL ระหว่างCloud SQL
ฐานข้อมูลกับสคีมาSQL Connectในเครื่องด้วย
- ทำให้สคีมาและเครื่องมือเชื่อมต่อใช้งานได้ โดยเรียกใช้
firebase deployสำหรับสคีมา เครื่องมือเชื่อมต่อ หรือการผสมผสานทรัพยากร
ทำให้ทรัพยากร SQL Connect ใช้งานได้และจัดการทรัพยากรดังกล่าว
คุณควรตรวจสอบทรัพยากรที่ใช้งานจริงก่อนที่จะทำให้ใช้งานได้
firebase dataconnect:services:listเมื่อทำงานในไดเรกทอรีโปรเจ็กต์ที่อยู่ในเครื่อง โดยทั่วไปคุณจะใช้คำสั่ง firebase deploy เพื่อทำให้สคีมาและเครื่องมือเชื่อมต่อใช้งานจริงในเวอร์ชันที่ใช้งานจริง โดยจะมีการแสดงความคิดเห็นแบบอินเทอร์แอกทีฟ
การใช้แฟล็ก --only dataconnect ในคำสั่ง deploy จะช่วยให้คุณแยกการทำให้
SQL Connect ใช้งานได้ออกจากผลิตภัณฑ์อื่นๆ ในโปรเจ็กต์
การทำให้ใช้งานได้ตามปกติ
firebase deploy --only dataconnectในการทำให้ใช้งานได้ตามปกติ Firebase CLI จะพยายามทำให้สคีมา และเครื่องมือเชื่อมต่อใช้งานได้
ระบบจะตรวจสอบว่าสคีมาใหม่ไม่ส่งผลกระทบต่อการทำงานของเครื่องมือเชื่อมต่อที่มีอยู่ โปรดทำตามแนวทางปฏิบัติแนะนำเมื่อทำการเปลี่ยนแปลงที่อาจส่งผลกระทบต่อการทำงานของระบบ
นอกจากนี้ ระบบยังตรวจสอบว่าได้ย้ายข้อมูลสคีมา SQL แล้วก่อนที่จะอัปเดต SQL Connect สคีมา หากยังไม่ได้ย้ายข้อมูล ระบบจะแจ้งให้คุณทำตามขั้นตอนที่จำเป็นในการ ย้ายข้อมูลสคีมาโดยอัตโนมัติ
การทำให้ใช้งานได้ด้วยแฟล็ก --force
firebase deploy --only dataconnect --forceหากคุณไม่กังวลเกี่ยวกับการตรวจสอบเครื่องมือเชื่อมต่อหรือสคีมา SQL คุณสามารถเรียกใช้คำสั่งอีกครั้งด้วย --force เพื่อข้ามการตรวจสอบดังกล่าวได้
การทำให้ใช้งานได้ด้วย --force จะยังคงตรวจสอบว่าสคีมา SQL ตรงกับ
SQL Connect สคีมาหรือไม่ แจ้งเตือนถึงความไม่เข้ากัน และแจ้งให้คุณดำเนินการ
ทำให้ทรัพยากรที่เลือกใช้งานได้
หากต้องการทำให้ใช้งานได้โดยมีการควบคุมแบบละเอียดมากขึ้น ให้ใช้แฟล็ก --only กับอาร์กิวเมนต์ serviceId หากต้องการทำให้เฉพาะการเปลี่ยนแปลงสคีมาสำหรับบริการหนึ่งๆ ใช้งานได้ ให้ทำดังนี้
firebase deploy --only dataconnect:serviceId:schemaนอกจากนี้ คุณยังทำให้ทรัพยากรทั้งหมดสำหรับเครื่องมือเชื่อมต่อและบริการที่ระบุใช้งานได้ด้วย
firebase deploy --only dataconnect:serviceId:connectorIdสุดท้าย คุณสามารถทำให้สคีมาและเครื่องมือเชื่อมต่อทั้งหมดสำหรับบริการเดียวใช้งานได้
firebase deploy --only dataconnect:serviceIdย้อนกลับการทำให้ใช้งานได้
หากต้องการย้อนกลับด้วยตนเอง ให้ตรวจสอบโค้ดเวอร์ชันก่อนหน้าแล้วทำให้ใช้งานได้ หากการทำให้ใช้งานได้ครั้งแรกมีการเปลี่ยนแปลงที่อาจส่งผลกระทบต่อการทำงานของระบบและทำให้ข้อมูลเสียหาย คุณอาจกู้คืนข้อมูลที่ลบไปแล้วทั้งหมดไม่ได้
ย้ายข้อมูลสคีมาฐานข้อมูล
หากคุณกำลังสร้างต้นแบบอย่างรวดเร็ว ทดลองใช้สคีมา และทราบว่าการเปลี่ยนแปลงสคีมา จะทำให้ข้อมูลเสียหาย คุณสามารถวางแผนที่จะใช้เครื่องมือ SQL 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"
ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิง SQL Connect CLI
อัปเดตเครื่องมือเชื่อมต่อ
เมื่อคุณเรียกใช้ firebase deploy CLI จะเริ่มการอัปเดตเครื่องมือเชื่อมต่อที่เกี่ยวข้องและออกข้อความประเมินระดับคำเตือน (อาจส่งผลต่อลักษณะการทำงานของไคลเอ็นต์) และระดับส่งผลกระทบต่อการทำงานของระบบ (อาจส่งผลกระทบต่อการทำงานของระบบหรือส่งผลกระทบต่อการทำงานของระบบอย่างแน่นอน)
จัดการการอัปเดตเครื่องมือเชื่อมต่อด้วย CLI
CLI จะมีลักษณะการทำงานที่แตกต่างกันเล็กน้อยในโหมดอินเทอร์แอกทีฟและโหมดที่ไม่ใช่แบบอินเทอร์แอกทีฟ
ในโหมดอินเทอร์แอกทีฟ CLI จะแจ้งให้คุณยอมรับข้อความทั้งหมด คุณสามารถลบล้างและบังคับให้เครื่องมือเชื่อมต่อใช้งานได้ด้วยแฟล็ก --force
# Prompts for acceptance for any warning-level or breaking-level changes prior # to deploying connectors. firebase deploy --only dataconnect# Will deploy connectors without prompting. firebase deploy --only dataconnect --force
ในโหมดที่ไม่ใช่แบบอินเทอร์แอกทีฟ CLI จะทำให้เครื่องมือเชื่อมต่อใช้งานได้ตราบใดที่ไม่มีการประเมินระดับส่งผลกระทบต่อการทำงานของระบบ มิเช่นนั้น สคริปต์จะออกพร้อมกับบันทึกการเปลี่ยนแปลงที่อาจส่งผลกระทบต่อการทำงานของระบบ คุณสามารถลบล้างและทำให้ใช้งานได้โดยตั้งค่าแฟล็ก --force
# Will deploy connectors with warning-level changes. If any breaking changes # are present, the deploy will fail and output any breaking changes firebase deploy --only dataconnect --non-interactive# Will deploy the connectors from the previous step, if the same issues are present. firebase deploy --only dataconnect --non-interactive --force
ดูข้อมูลเพิ่มเติมได้ที่คู่มืออ้างอิง CLI
แนวทางปฏิบัติแนะนำสำหรับการจัดการสคีมาและเครื่องมือเชื่อมต่อ
Firebase แนะนำแนวทางปฏิบัติบางอย่างที่คุณควรทำตามในโปรเจ็กต์ SQL Connect
ลดการเปลี่ยนแปลงที่อาจส่งผลกระทบต่อการทำงานของระบบ
- Firebase แนะนำให้เก็บไฟล์สคีมา SQL Connect และไฟล์เครื่องมือเชื่อมต่อ ไว้ในการควบคุมแหล่งที่มา
- หลีกเลี่ยงการเปลี่ยนแปลงที่อาจส่งผลกระทบต่อการทำงานของระบบเมื่อเป็นไปได้ ตัวอย่างการเปลี่ยนแปลงที่อาจส่งผลกระทบต่อการทำงานของระบบที่พบบ่อยมีดังนี้
- การนำช่องออกจากสคีมา
- การเปลี่ยนช่องที่อนุญาตให้เป็นค่าว่างในสคีมาเป็นค่าที่ไม่ใช่ค่าว่าง (เช่น
Int->Int!) - การเปลี่ยนชื่อช่องในสคีมา
- หากจำเป็นต้องนำช่องออกจากสคีมา ให้พิจารณาแยกการดำเนินการออกเป็น 2-3 ครั้งเพื่อลดผลกระทบ ดังนี้
- ขั้นแรก ให้นำการอ้างอิงช่องออกจากเครื่องมือเชื่อมต่อ แล้วทำให้การเปลี่ยนแปลงใช้งานได้
- จากนั้นอัปเดตแอปเพื่อใช้ SDK ที่สร้างขึ้นใหม่
- สุดท้าย ให้นำช่องออกจากไฟล์สคีมา
.gqlย้ายข้อมูลสคีมา SQL แล้วทำให้ใช้งานได้อีกครั้ง
ใช้โหมดเข้มงวดเมื่อใช้ฐานข้อมูลใหม่
หากคุณใช้ SQL Connect กับฐานข้อมูลใหม่และกำลังพัฒนาสคีมาแอปพลิเคชันอย่างจริงจัง และต้องการให้สคีมาฐานข้อมูลสอดคล้องกับสคีมาแอปพลิเคชันทุกประการ คุณสามารถระบุ schemaValidation: "STRICT" ใน dataconnect.yaml ได้
ซึ่งจะช่วยให้ระบบใช้การเปลี่ยนแปลงที่ไม่บังคับด้วย
ใช้โหมดเข้ากันได้เมื่อฐานข้อมูลมีข้อมูลที่ใช้งานจริง
หากคุณทำการเปลี่ยนแปลงฐานข้อมูลที่มีข้อมูลที่ใช้งานจริง เราขอแนะนำให้คุณดำเนินการย้ายข้อมูลสคีมาในโหมดเข้ากันได้ เพื่อให้มั่นใจว่าระบบจะไม่ลบข้อมูลที่มีอยู่ คุณสามารถระบุ schemaValidation: "COMPATIBLE"
ใน dataconnect.yaml ได้
ในโหมดเข้ากันได้ ระบบจะใช้เฉพาะการเปลี่ยนแปลงการย้ายข้อมูลสคีมาที่จำเป็นกับฐานข้อมูล
DROP SCHEMA,DROP TABLEและDROP COLUMNถือเป็นคำสั่งที่ไม่บังคับและระบบจะไม่สร้างคำสั่งเหล่านี้สำหรับแผนของคุณ แม้ว่าสคีมาฐานข้อมูลจะมีสคีมา ตาราง หรือคอลัมน์ที่ไม่ได้กำหนดไว้ในสคีมาแอปพลิเคชันก็ตาม- หากตารางฐานข้อมูลมีคอลัมน์ที่ไม่ใช่ค่าว่างซึ่งไม่ได้รวมอยู่ในสคีมาแอปพลิเคชัน ระบบจะนำข้อจำกัด
NOT NULLออก เพื่อให้ยังคงเพิ่มข้อมูลลงในตารางด้วยเครื่องมือเชื่อมต่อที่คุณกำหนดไว้ได้
ขั้นตอนต่อไปคืออะไร
- การทำให้โค้ดไคลเอ็นต์ที่คุณพัฒนาด้วย SDK ที่สร้างขึ้นใช้งานได้และการจัดการโค้ดดังกล่าวจะ อธิบายไว้ในคู่มือสำหรับ Android, iOS, เว็บ และ Flutter
- ดูข้อมูลเพิ่มเติมเกี่ยวกับเครื่องมือการทำให้ใช้งานได้ในข้อมูลอ้างอิง SQL Connect CLI และข้อมูลอ้างอิงไฟล์การกำหนดค่า SQL Connect