โปรเจ็กต์ SQL Connect ประกอบด้วยองค์ประกอบโครงสร้างพื้นฐานหลัก 2 อย่าง ได้แก่
- SQL Connectอินสแตนซ์บริการอย่างน้อย 1 รายการ
- อินสแตนซ์ Cloud SQL สำหรับ PostgreSQL อย่างน้อย 1 รายการ
คำแนะนำนี้จะกล่าวถึงวิธีตั้งค่าและจัดการอินสแตนซ์บริการ SQL Connect รวมถึงแนะนำวิธีจัดการอินสแตนซ์ที่เชื่อมโยงCloud SQL
กำหนดค่าภูมิภาคสำหรับ Firebase SQL Connect
โปรเจ็กต์ที่ใช้ SQL Connect ต้องมีการตั้งค่าตำแหน่ง
เมื่อสร้างSQL Connectอินสแตนซ์บริการSQL Connectใหม่ ระบบจะแจ้งให้คุณเลือกตำแหน่งของบริการ
ประเทศที่ให้บริการ
คุณสร้างบริการ SQL Connect ได้ในภูมิภาคต่อไปนี้
- asia-east1
- asia-east2
- asia-northeast1
- asia-northeast2
- asia-northeast3
- asia-south1
- asia-southeast1 (ไม่พร้อมให้บริการสำหรับการทดลองใช้แพ็กเกจ Spark)
- asia-southeast2 (ไม่พร้อมให้บริการสำหรับช่วงทดลองใช้แพ็กเกจ Spark)
- australia-southeast1
- australia-southeast2
- europe-central2
- europe-north1
- europe-southwest1
- europe-west1
- europe-west2
- europe-west3
- europe-west4
- europe-west6
- europe-west8
- europe-west9
- me-west1
- northamerica-northeast1
- northamerica-northeast2
- southamerica-east1
- southamerica-west1
- us-central1
- us-east1
- us-east4
- us-south1
- us-west1
- us-west2
- us-west3
- us-west4
จัดการอินสแตนซ์บริการ SQL Connect
สร้างบริการ
หากต้องการสร้างบริการใหม่ ให้ใช้ Firebase คอนโซลหรือเรียกใช้การเริ่มต้นโปรเจ็กต์ที่อยู่ในเครื่องโดยใช้ Firebase CLI เวิร์กโฟลว์เหล่านี้จะสร้างSQL Connectบริการใหม่
นอกจากนี้ ขั้นตอนเหล่านี้ยังแนะนำคุณในเรื่องต่อไปนี้ด้วย
- การจัดสรรอินสแตนซ์ Cloud SQL ใหม่ (ระดับไม่มีค่าใช้จ่าย)
- การลิงก์อินสแตนซ์ Cloud SQL ที่มีอยู่กับ SQL Connect (แพ็กเกจ Blaze)
จัดการผู้ใช้
SQL Connect มีเครื่องมือในการจัดการสิทธิ์เข้าถึงของผู้ใช้ตามหลักการให้สิทธิ์น้อยที่สุด (ให้สิทธิ์ขั้นต่ำที่จำเป็นแก่ผู้ใช้หรือบัญชีบริการแต่ละรายเพื่อรองรับฟังก์ชันการทำงานที่จำเป็น) และแนวคิดการควบคุมการเข้าถึงตามบทบาท (RBAC) (มีบทบาทที่กำหนดไว้ล่วงหน้าเพื่อจัดการสิทธิ์ของฐานข้อมูล ซึ่งช่วยลดความซับซ้อนในการจัดการความปลอดภัย)
หากต้องการเพิ่มสมาชิกในโปรเจ็กต์เป็นผู้ใช้ที่แก้ไขSQL Connect อินสแตนซ์ในโปรเจ็กต์ได้ ให้ใช้คอนโซล Firebase เพื่อเลือก บทบาทของผู้ใช้ที่กำหนดไว้ล่วงหน้าที่เหมาะสม
บทบาทเหล่านี้ให้สิทธิ์โดยใช้ Identity and Access Management (IAM) บทบาทคือคอลเล็กชันของสิทธิ์ เมื่อมอบหมายบทบาทให้กับสมาชิกโปรเจ็กต์ คุณจะมอบสิทธิ์ทั้งหมดที่มีอยู่ในบทบาทนั้นให้กับสมาชิกโปรเจ็กต์ ดู ข้อมูลเพิ่มเติมได้ที่
- ภาพรวมของบทบาท IAM ของ Firebase
- รายการบทบาทของ SQL Connectโดยละเอียด
เลือกบทบาทเพื่อเปิดใช้เวิร์กโฟลว์ที่เฉพาะเจาะจง
บทบาท IAM ช่วยให้Firebaseเวิร์กโฟลว์ CLI ช่วยให้คุณจัดการโปรเจ็กต์ SQL Connectได้
| คำสั่ง CLI, เวิร์กโฟลว์อื่นๆ | บทบาทที่จำเป็น |
|---|---|
firebase init dataconnect
|
|
firebase deploy -–only dataconnect
|
|
firebase dataconnect:sql:diff
|
|
firebase dataconnect:sql:migrate
|
|
firebase dataconnect:sql:grant
|
|
ตรวจสอบSQL Connectประสิทธิภาพของบริการ
ทำความเข้าใจประสิทธิภาพของบริการ
ประสิทธิภาพของทั้งบริการ SQL Connect และ Cloud SQL สำหรับ บริการ PostgreSQL อาจส่งผลต่อประสบการณ์การใช้งานของคุณ
- สำหรับCloud SQLบริการสำหรับ PostgreSQL โปรดดูคำแนะนำทั่วไปในเอกสารประกอบเกี่ยวกับโควต้าและขีดจำกัด
สำหรับบริการ SQL Connect จะมีโควต้าสำหรับคำขอ GraphQL ซึ่งจะส่งผลต่ออัตราที่คุณสามารถเรียกใช้และดำเนินการค้นหาได้ ดังนี้
- โควต้าต่อโปรเจ็กต์ต่อภูมิภาคสำหรับคำขอ GraphQL 24000 รายการต่อนาที
หากพบว่ามีการจำกัดโควต้าดังกล่าว โปรดติดต่อทีมสนับสนุน Firebase เพื่อปรับโควต้าที่เกี่ยวข้อง
ตรวจสอบประสิทธิภาพ การใช้งาน และการเรียกเก็บเงินของบริการ
คุณสามารถตรวจสอบคำขอ ข้อผิดพลาด และอัตราการดำเนินการได้ทั้งในระดับโลกและต่อการดำเนินการในFirebaseคอนโซล
จัดการอินสแตนซ์ Cloud SQL
ข้อจำกัดของช่วงทดลองใช้ฟรี
ระบบไม่รองรับCloud SQLฟีเจอร์สำหรับ PostgreSQL ต่อไปนี้ในช่วงทดลองใช้ Spark หรือ Blaze ฟรี
- ระดับเครื่องที่แตกต่างจาก db-f1-micro
- การเปลี่ยนทรัพยากรของอินสแตนซ์ เช่น ภูมิภาค พื้นที่เก็บข้อมูล หน่วยความจำ CPU
- PostgreSQL เวอร์ชันอื่นๆ นอกเหนือจาก 15.x
- ตัวจำลองสำหรับอ่าน
- ที่อยู่ IP ส่วนตัวของอินสแตนซ์
- ความพร้อมใช้งานสูง (หลายโซน) รองรับเฉพาะอินสแตนซ์แบบโซนเดียว
- รุ่น Enterprise Plus
- สำรองข้อมูลอัตโนมัติ
- การเพิ่มพื้นที่เก็บข้อมูลอัตโนมัติ
ข้อจำกัดของฐานข้อมูลการเริ่มต้นใช้งานชั่วคราว
เมื่อเพิ่ม SQL Connect ลงในโปรเจ็กต์ Firebase คุณจะเริ่ม สร้างต้นแบบโมเดลข้อมูลและโหลดข้อมูลได้ทันที เนื่องจากระบบจะจัดเก็บข้อมูลไว้ใน ฐานข้อมูลชั่วคราว โปรดทราบว่า Cloud SQL แบบถาวรสำหรับ อินสแตนซ์ PostgreSQL จะใช้เวลา 5-20 นาทีในการจัดสรร ระบบจะย้ายข้อมูลเริ่มต้นที่คุณโหลดไปยังฐานข้อมูล PostgreSQL ถาวรโดยอัตโนมัติเมื่อมีการจัดสรร
ฐานข้อมูลชั่วคราวนี้เหมาะอย่างยิ่งสำหรับการสำรวจสคีมาและการดำเนินการ CRUD
หากไม่ต้องการใช้ฐานข้อมูลชั่วคราว ให้รอจนกว่าจะมีการจัดสรรอินสแตนซ์ Cloud SQL
ฐานข้อมูลชั่วคราวไม่ใช่ฐานข้อมูล PostgreSQL และไม่มีฟีเจอร์ทั้งหมดของ PostgreSQL
ข้อจำกัดที่สำคัญมีดังนี้
- ฐานข้อมูลต้องมีขนาดไม่เกิน 1 MB
- จำนวนแถวต่อตารางต้องน้อยกว่า 1,000
- น้อยกว่า 1 คำค้นหาต่อวินาที
- ไม่รองรับการค้นหาข้อความแบบเต็ม
- ไม่รองรับการสร้างการฝังเวกเตอร์
- ไม่รองรับฟีเจอร์ SQL เช่น
@view,@col(dataType)หรือ SQL ดั้งเดิม
ดูแลระบบอินสแตนซ์ Cloud SQL
โดยทั่วไป คุณสามารถจัดการอินสแตนซ์ Cloud SQL ได้โดยใช้คอนโซล Google Cloud เพื่อทำเวิร์กโฟลว์ต่อไปนี้
หยุดและรีสตาร์ทอินสแตนซ์ Cloud SQL
สร้างและลบฐานข้อมูล Cloud SQL (ภายในอินสแตนซ์)
เริ่มต้นอินสแตนซ์ฐานข้อมูล PostgreSQL ด้วย Flag และใช้ส่วนขยายที่หลากหลาย
ตรวจสอบประสิทธิภาพด้วย Cloud SQLฟีเจอร์ความสามารถในการสังเกต ในGoogle Cloudคอนโซล
จัดการCloud SQLการเข้าถึงและความปลอดภัยด้วยฟีเจอร์ต่างๆ เช่น IAM, Secret Manager, การเข้ารหัสข้อมูลและพร็อกซีการตรวจสอบสิทธิ์
เพิ่ม ลบ และดูแลระบบผู้ใช้ Cloud SQL
ดูเวิร์กโฟลว์เหล่านี้และเวิร์กโฟลว์อื่นๆ ได้ในCloud SQLเอกสารประกอบสำหรับ PostgreSQL
มอบบทบาทผู้ใช้ PostgreSQL
SQL Connect มีเครื่องมือในการจัดการสิทธิ์เข้าถึงของผู้ใช้ตามหลักการให้สิทธิ์น้อยที่สุด (ให้สิทธิ์ขั้นต่ำที่จำเป็นแก่ผู้ใช้หรือบัญชีบริการแต่ละรายเพื่อรองรับฟังก์ชันการทำงานที่จำเป็น) และแนวคิดการควบคุมการเข้าถึงตามบทบาท (RBAC) (มีบทบาทที่กำหนดไว้ล่วงหน้าเพื่อจัดการสิทธิ์ของฐานข้อมูล ซึ่งช่วยลดความซับซ้อนในการจัดการความปลอดภัย)
ในบางกรณี คุณอาจต้องการเชื่อมต่อกับฐานข้อมูล SQL Connect ที่จัดการ Cloud SQL โดยตรงผ่านไคลเอ็นต์ SQL ที่คุณเลือก เช่น Cloud Run, Cloud Functions หรือ GKE
หากต้องการเปิดใช้การเชื่อมต่อดังกล่าว คุณต้องให้สิทธิ์ SQL โดยทำดังนี้
- มอบหมาย
roles/cloudsql.clientบทบาท IAM ให้กับผู้ใช้หรือบัญชีบริการ ที่ต้องเชื่อมต่อกับอินสแตนซ์จากGoogle Cloudคอนโซลหรือ ใช้gcloud CLI - การให้บทบาท PostgreSQL ที่จำเป็นโดยใช้ Firebase CLI
มอบหมายบทบาท IAM Cloud SQL
ดูข้อมูลเกี่ยวกับการทำงานกับ Cloud SQL สำหรับ PostgreSQL เพื่อกำหนดบทบาท IAM
roles/cloudsql.client ได้ที่บทบาทและสิทธิ์
มอบบทบาท PostgreSQL
การใช้ Firebase CLI ช่วยให้คุณมอบบทบาท PostgreSQL ที่กำหนดไว้ล่วงหน้าให้กับผู้ใช้
หรือบัญชีบริการที่เชื่อมโยงกับโปรเจ็กต์ได้ด้วยคำสั่ง firebase dataconnect:sql:grant
เช่น หากต้องการให้สิทธิ์บทบาทผู้เขียน ให้เรียกใช้คำสั่งนี้โดยใช้ Firebase CLI
firebase dataconnect:sql:grant --role writerดูรายละเอียดได้ที่Firebaseคู่มืออ้างอิง CLI
ผสานรวม Cloud SQL ที่มีอยู่สำหรับฐานข้อมูล PostgreSQL
โฟลว์การจัดสรรและการจัดการฐานข้อมูลเริ่มต้นจะถือว่าโปรเจ็กต์ของคุณ
ใช้ฐานข้อมูลใหม่ (Greenfield) และเมื่อคุณเรียกใช้ firebase deploy
SQL Connect จะแสดงการเปลี่ยนแปลงสคีมาของฐานข้อมูลที่จะดำเนินการ และ
ทำการย้ายข้อมูลหลังจากที่คุณอนุมัติ
สำหรับฐานข้อมูลที่มีอยู่ (บราวน์ฟิลด์) คุณอาจมีเวิร์กโฟลว์ของคุณเองสำหรับ การจัดการสคีมาและใช้SQL Connectเครื่องมือสำหรับการย้ายข้อมูลไม่ได้ แต่ต้องการใช้ฐานข้อมูลในโปรเจ็กต์ SQL Connect เพื่อใช้ประโยชน์จาก การสร้าง SDK สำหรับอุปกรณ์เคลื่อนที่และเว็บ การให้สิทธิ์ตามการค้นหา การจัดการการเชื่อมต่อไคลเอ็นต์ และอื่นๆ
ส่วนนี้จะให้คำแนะนำเกี่ยวกับกรณีหลัง นั่นคือการผสานรวมฐานข้อมูลที่มีอยู่กับ SQL Connect
ผสานรวมฐานข้อมูลที่มีอยู่เข้ากับSQL Connectโปรเจ็กต์
โดยทั่วไปแล้ว เวิร์กโฟลว์สำหรับการผสานรวมฐานข้อมูลที่มีอยู่จะเกี่ยวข้องกับขั้นตอนต่อไปนี้
ในระหว่างSQL Connectการตั้งค่าโปรเจ็กต์ในFirebaseคอนโซล เลือกอินสแตนซ์และฐานข้อมูล
ใช้ Firebase CLI แล้วเรียกใช้คำสั่ง
firebase dataconnect:sql:setupและปฏิเสธตัวเลือกเพื่ออนุญาตให้ SQL Connect จัดการการย้ายข้อมูล SQLหากต้องการป้องกันไม่ให้มีการเปลี่ยนแปลงสคีมาของฐานข้อมูลที่ไม่ได้เกิดจากเครื่องมือที่กำหนดเอง คำสั่ง
setupจะกำหนดบทบาทผู้อ่านและผู้เขียนที่เหมาะสม แต่จะไม่กำหนดบทบาทownerดูข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งsetupและบทบาท PostgreSQL ได้ในFirebase คู่มืออ้างอิง CLIเขียนSQL Connectสคีมา GraphQL ที่ตรงกับสคีมาฐานข้อมูล
คุณจะติดตั้งใช้งานสคีมา GraphQL, การค้นหา และการเปลี่ยนแปลงได้ก็ต่อเมื่อ สคีมา GraphQL เข้ากันได้กับสคีมา PostgreSQL
เรามีคำสั่ง
firebase dataconnect:sql:diffเพื่อให้การจัดแนวทั้ง 2 สคีมาเป็นเรื่องง่าย ซึ่งจะให้คำสั่ง SQL ที่จำเป็นแก่คุณในการย้ายข้อมูลฐานข้อมูล คุณสามารถใช้สิ่งนี้เพื่อ ปรับแต่งสคีมา GraphQL ซ้ำๆ ให้ตรงกับสคีมาฐานข้อมูลที่มีอยู่หลังจากนี้ คุณจะสามารถทำซ้ำสคีมา GraphQL, การค้นหา และ การเปลี่ยนแปลงได้อย่างรวดเร็วในสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ในเครื่อง จากนั้นเมื่อพอใจแล้ว คุณจะ ใช้
firebase dataconnect:sql:diffเพื่อรับคำสั่งการย้ายข้อมูล SQL ที่ใช้กับ PostgreSQL ได้โดยใช้เครื่องมือและโฟลว์ที่กำหนดเองหรือคุณอาจทำการเปลี่ยนแปลงในฐานข้อมูล PostgreSQL โดยตรงก่อน แล้วลองพอร์ตกลับไปยังสคีมา GraphQL เราขอแนะนำให้ใช้ แนวทาง GraphQL-first เนื่องจากอาจมีกรณีที่ไม่รองรับการเปลี่ยนแปลงสคีมา นอกจากนี้ หากคุณใช้การเปลี่ยนแปลงที่ทำให้สคีมา PostgreSQL ไม่สามารถใช้งานร่วมกับคำค้นหาหรือการเปลี่ยนแปลงของตัวเชื่อมต่อที่ใช้งานอยู่ ตัวเชื่อมต่อเหล่านั้นอาจหยุดทำงานหรือทำงานผิดปกติ