Dịch vụ Firebase Data Connect có ba thành phần chính:
- Một cơ sở dữ liệu 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ề giao thức 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 một 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 phá huỷ.
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ặt và tươ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 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 có.
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:
- Liệt kê các giản đồ và trình kết nối đang triển khai bằng
firebase dataconnect:services:list
. - Quản lý mọi bản cập nhật giản đồ.
- 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
. - Nếu cần, hãy di chuyển giản đồ SQL bằng
dataconnect:sql:migrate
.
- 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
- Thực hiện giản đồ và kết nối các quy trình triển khai bằng cách chạy
firebase deploy
cho riêng giản đồ của bạn, chỉ cho các 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 lệnh deploy
bất kỳ, cờ --only dataconnect
cho phép bạn tách riêng các hoạt động 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 cả trình kết nối hoặc quy trình xác thực giản đồ SQL đều không được quan tâm, bạn có thể chạy lại lệnh bằng --force
để bỏ qua các lệnh đó.
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ả trình kết nối cho một dịch vụ.
firebase deploy --only dataconnect:serviceId
Huỷ 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 hoạt động triển khai ban đầu có các thay đổi có thể gây lỗi gây thiệt hại, thì bạn có thể sẽ không khôi phục được hoàn toàn bất kỳ dữ liệu nào đã 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 đồ là có 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ẽ xuất hiện.
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 yêu cầu, sau đó nhắc bạn phê duyệt các thao tác không bắt buộc để thả giản đồ, bảng hoặc cột để buộc giản đồ cơ sở dữ liệu khớp chính xác với giản đồ ứng dụng của bạn.
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ú phím 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 các thay đổi có thể gây lỗi khi có thể. Sau đây là một số ví dụ phổ biến về các thay đổi có thể gây lỗi:
- Xoá một trường khỏi giản đồ của bạ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 một 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 trong trình kết nối của bạn rồi 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
giản đồ, di chuyển giản đồ SQL và triển khai thêm một lần nữa.
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 cơ sở dữ liệu mới và 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 TABLE
vàDROP 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 và 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 bạn đã xác định.
Tiếp theo là gì?
- Việc triển khai và quản lý mã ứng dụng mà bạn phát triển bằng các SDK đã tạo được đề cập trong hướng dẫn dành cho Android, iOS, web và Flutter.
- Để biết thêm thông tin về công cụ triển khai, hãy xem tài liệu tham khảo về Giao diện dòng lệnh (CLI) Data Connect và tài liệu tham khảo về tệp cấu hình Data Connect.