Triển khai và quản lý các giản đồ và trình kết nối Data Connect

Dịch vụ Firebase Data Connect có ba thành phần chính:

  • Một cơ sở dữ liệu PostgreSQL cơ bản có giản đồ SQL riêng
  • Giản đồ ứng dụng Data Connect (được khai báo trong tệp .gql)
  • một số đầu nối (được khai báo trong tệp .gql).

Giản đồ SQL là nguồn đáng tin cậy cho dữ liệu của bạn, giản đồ Data Connect là cách trình kết nối có thể xem dữ liệu đó và trình kết nối khai báo các API mà ứng dụng của bạn có thể sử dụng để truy cập dữ liệu đó.

Khi triển khai dịch vụ Data Connect bằng CLI, bạn sẽ di chuyển giản đồ SQL, sau đó cập nhật giản đồ Data Connect, rồi cập nhật từng trình kết nối.

Các khái niệm quan trọng về việc triển khai

Để hiểu đầy đủ về việc triển khai, điều quan trọng là bạn phải lưu ý các khái niệm chính về giản đồ và trình kết nối.

Triển khai giản đồ

Việc triển khai giản đồ Data Connect sẽ ảnh hưởng đến giản đồ SQL cho cơ sở dữ liệu Cloud SQL. Data Connect giúp bạn di chuyển giản đồ trong quá trình triển khai, cho dù bạn đang làm việc với cơ sở dữ liệu mới hay cần điều chỉnh cơ sở dữ liệu hiện có mà không gây tổn hại.

Quá trình di chuyển giản đồ Data Connect có hai chế độ xác thực giản đồ khác nhau: nghiêm ngặttương thích.

  • Tính năng xác thực ở chế độ nghiêm ngặt yêu cầu giản đồ cơ sở dữ liệu chính xác khớp với giản đồ ứng dụng trước khi có thể cập nhật giản đồ ứng dụng. Mọi bảng hoặc cột không được sử dụng trong giản đồ Data Connect sẽ bị xoá khỏi cơ sở dữ liệu.

  • Quy trình xác thực chế độ tương thích yêu cầu giản đồ cơ sở dữ liệu phải tương thích với giản đồ ứng dụng trước khi có thể cập nhật giản đồ ứng dụng; mọi thay đổi bổ sung làm xoá giản đồ, bảng hoặc cột đều không bắt buộc.

    Tương thích có nghĩa là việc di chuyển giản đồ chỉ ảnh hưởng đến các bảng và cột được tham chiếu trong giản đồ ứng dụng của bạn. Các phần tử trong cơ sở dữ liệu không được giản đồ ứng dụng sử dụng sẽ không được sửa đổi. Do đó, sau khi triển khai, cơ sở dữ liệu của bạn có thể chứa:

    • Giản đồ
    • Bảng
    • Cột

Triển khai trình kết nối

Các truy vấn và đột biến Data Connect không được mã ứng dụng gửi và thực thi trên máy chủ. Thay vào đó, khi được triển khai, các thao tác Data Connect này sẽ được lưu trữ trên máy chủ, chẳng hạn như Cloud Functions. Điều này có nghĩa là việc triển khai có thể làm hỏng người dùng hiện tại.

Làm theo quy trình triển khai

Bạn có thể làm việc trên dự án Data Connect cả trong thư mục dự án cục bộ và trong bảng điều khiển Firebase.

Quy trình triển khai được đề xuất bao gồm:

  1. Liệt kê giản đồ và trình kết nối hiện đang được triển khai bằng firebase dataconnect:services:list.
  2. Quản lý mọi bản cập nhật giản đồ.
    1. Kiểm tra sự khác biệt về giản đồ SQL giữa cơ sở dữ liệu Cloud SQL và giản đồ Data Connect cục bộ bằng firebase dataconnect:sql:diff.
    2. Nếu cần, hãy di chuyển giản đồ SQL bằng dataconnect:sql:migrate.
  3. Thực hiện triển khai giản đồ và kết nối bằng cách chạy firebase deploy, chỉ dành cho giản đồ, chỉ dành cho trình kết nối hoặc tổ hợp tài nguyên.

Triển khai và quản lý tài nguyên Data Connect

Bạn nên xác minh tài nguyên sản xuất trước khi triển khai.

firebase dataconnect:services:list

Khi làm việc trong thư mục dự án cục bộ, bạn thường sẽ sử dụng lệnh firebase deploy để triển khai giản đồ và trình kết nối vào môi trường sản xuất, cùng với phản hồi tương tác.

Khi sử dụng bất kỳ lệnh deploy nào, cờ --only dataconnect cho phép bạn tách biệt các lượt triển khai Data Connect với các sản phẩm khác trong dự án.

Triển khai thông thường

firebase deploy --only dataconnect

Trong quá trình triển khai thông thường này, CLI Firebase sẽ tìm cách triển khai giản đồ và trình kết nối.

Bước này xác thực rằng giản đồ mới không làm hỏng bất kỳ trình kết nối nào hiện có. Làm theo các phương pháp hay nhất khi thực hiện các thay đổi có thể gây lỗi.

Phương thức này cũng xác minh rằng lược đồ SQL đã được di chuyển trước khi cập nhật lược đồ Data Connect. Nếu không, công cụ này sẽ tự động nhắc bạn thực hiện mọi bước cần thiết để di chuyển giản đồ.

Triển khai cờ --force

firebase deploy --only dataconnect --force

Nếu không quan tâm đến trình kết nối hoặc quy trình xác thực giản đồ SQL, bạn có thể chạy lại lệnh bằng --force để bỏ qua các lỗi đó.

Quá trình triển khai --force vẫn kiểm tra xem giản đồ SQL có khớp với giản đồ Data Connect hay không, cảnh báo về khả năng không tương thích và nhắc.

Triển khai các tài nguyên đã chọn

Để triển khai với quyền kiểm soát chi tiết hơn, hãy sử dụng cờ --only với đối số serviceId. Cách chỉ triển khai các thay đổi về giản đồ cho một dịch vụ cụ thể:

firebase deploy --only dataconnect:serviceId:schema

Bạn cũng có thể triển khai tất cả tài nguyên cho một trình kết nối và dịch vụ cụ thể.

firebase deploy --only dataconnect:serviceId:connectorId

Cuối cùng, bạn có thể triển khai giản đồ và tất cả các trình kết nối cho một dịch vụ.

firebase deploy --only dataconnect:serviceId

Quay lại một bản triển khai

Để thực hiện việc khôi phục theo cách thủ công, hãy xem phiên bản mã trước đó và triển khai phiên bản đó. Nếu quá trình triển khai ban đầu bao gồm các thay đổi có thể gây lỗi, thì bạn có thể không khôi phục được toàn bộ dữ liệu đã xoá.

Di chuyển giản đồ cơ sở dữ liệu

Nếu đang tạo bản minh hoạ nhanh, thử nghiệm với giản đồ và biết rằng các thay đổi về giản đồ sẽ gây hại, bạn có thể lên kế hoạch sử dụng các công cụ Data Connect để xác minh các thay đổi và giám sát cách thực hiện các bản cập nhật.

So sánh các thay đổi về giản đồ SQL

Bạn có thể xác minh các thay đổi:

firebase dataconnect:sql:diff

Bạn có thể truyền danh sách các dịch vụ được phân tách bằng dấu phẩy.

Lệnh này so sánh giản đồ cục bộ của một dịch vụ với giản đồ hiện tại của cơ sở dữ liệu Cloud SQL tương ứng. Nếu có sự khác biệt, lệnh này sẽ in ra các lệnh SQL sẽ được chạy để khắc phục sự khác biệt đó

Áp dụng thay đổi

Khi bạn đã hài lòng và sẵn sàng triển khai các thay đổi đối với phiên bản Cloud SQL của giản đồ, hãy đưa ra lệnh firebase dataconnect:sql:migrate. Bạn sẽ được nhắc phê duyệt các thay đổi.

firebase dataconnect:sql:migrate [serviceId]

Trong môi trường tương tác, các câu lệnh di chuyển SQL và lời nhắc hành động sẽ được hiển thị.

Di chuyển ở chế độ nghiêm ngặt hoặc tương thích

Trong một dự án hoàn toàn mới, chế độ xác thực giản đồ mặc định sẽ được áp dụng. Hành vi của lệnh migrate là áp dụng tất cả các thay đổi về giản đồ cơ sở dữ liệu mà giản đồ ứng dụng của bạn yêu cầu, sau đó nhắc bạn phê duyệt các thao tác không bắt buộc để xoá giản đồ, bảng hoặc cột nhằm buộc giản đồ cơ sở dữ liệu khớp chính xác với giản đồ ứng dụng.

Bạn có thể điều chỉnh hành vi này bằng cách sửa đổi tệp dataconnect.yaml. Bỏ ghi chú khoá schemaValidation và khai báo COMPATIBLE để chỉ áp dụng các thay đổi bắt buộc trong quá trình di chuyển.

schemaValidation: "COMPATIBLE"

Hoặc đặt hành vi thành STRICT để tất cả thay đổi về giản đồ được áp dụng và giản đồ cơ sở dữ liệu của bạn buộc phải khớp với giản đồ ứng dụng.

schemaValidation: "STRICT"

Hãy xem tài liệu tham khảo về CLI Data Connect để biết thêm thông tin.

Các phương pháp hay nhất để quản lý giản đồ và trình kết nối

Firebase đề xuất một số phương pháp để làm theo trong dự án Data Connect.

Giảm thiểu các thay đổi có thể gây lỗi

  • Firebase đề xuất bạn lưu trữ giản đồ và tệp trình kết nối Data Connect trong phần kiểm soát nguồn.
  • Tránh thay đổi có thể gây lỗi nếu có thể. Sau đây là một số ví dụ phổ biến về các thay đổi gây lỗi:
    • Xoá trường khỏi giản đồ
    • Đặt trường rỗng trong giản đồ thành trường không rỗng (tức là Int -> Int!)
    • Đổi tên trường trong giản đồ.
  • Nếu bạn cần xoá một trường khỏi giản đồ, hãy cân nhắc việc chia trường đó thành một vài lượt triển khai để giảm thiểu tác động:
    • Trước tiên, hãy xoá mọi tham chiếu đến trường này trong trình kết nối và triển khai thay đổi.
    • Tiếp theo, hãy cập nhật ứng dụng của bạn để sử dụng các SDK mới tạo.
    • Cuối cùng, hãy xoá trường trong tệp .gql của giản đồ, di chuyển giản đồ SQL và triển khai lại.

Sử dụng chế độ nghiêm ngặt khi làm việc với cơ sở dữ liệu mới

Nếu đang sử dụng Data Connect với một cơ sở dữ liệu mới và đang tích cực phát triển giản đồ ứng dụng, đồng thời muốn đảm bảo giản đồ cơ sở dữ liệu luôn khớp chính xác với giản đồ ứng dụng, bạn có thể chỉ định schemaValidation: "STRICT" trong dataconnect.yaml.

Điều này cũng sẽ đảm bảo các thay đổi không bắt buộc được áp dụng.

Sử dụng chế độ tương thích khi bạn có dữ liệu sản xuất trong cơ sở dữ liệu

Nếu đang thực hiện thay đổi đối với một cơ sở dữ liệu chứa dữ liệu sản xuất, bạn nên thực thi quá trình di chuyển giản đồ ở chế độ tương thích để đảm bảo dữ liệu hiện có không bị xoá. Bạn có thể chỉ định schemaValidation: "COMPATIBLE" trong dataconnect.yaml

Ở chế độ tương thích, chỉ những thay đổi bắt buộc đối với việc di chuyển giản đồ mới được áp dụng cho cơ sở dữ liệu.

  • DROP SCHEMA, DROP TABLEDROP COLUMN được coi là câu lệnh không bắt buộc và sẽ không được tạo cho kế hoạch của bạn, ngay cả khi giản đồ cơ sở dữ liệu của bạn chứa các giản đồ, bảng hoặc cột không được xác định trong giản đồ ứng dụng.
  • Nếu bảng cơ sở dữ liệu của bạn chứa một cột không rỗng không có trong giản đồ ứng dụng, thì quy tắc ràng buộc NOT NULL sẽ bị xoá để dữ liệu vẫn có thể được thêm vào bảng bằng các trình kết nối đã xác định.

Tiếp theo là gì?