Trang này mô tả cách sử dụng bảng điều khiển Cloud và CLI Google Cloud để định cấu hình các chính sách về thời gian tồn tại (TTL). Trước khi đọc trang này, bạn nên hiểu Cloud Firestore mô hình dữ liệu.
Tổng quan về thời gian tồn tại
Sử dụng các chính sách về thời gian tồn tại để tự động xoá dữ liệu cũ khỏi cơ sở dữ liệu. Chính sách về thời gian tồn tại chỉ định một trường nhất định làm thời gian hết hạn cho các tài liệu trong một nhóm bộ sưu tập nhất định. Với thời gian tồn tại, bạn có thể giảm chi phí lưu trữ bằng cách xoá dữ liệu lỗi thời. Dữ liệu thường bị xoá trong vòng 24 giờ sau ngày hết hạn.
Giá
Các thao tác xoá theo thời gian tồn tại được tính vào chi phí xoá tài liệu. Để biết giá của các thao tác xoá, hãy xem Cloud Firestore giá.
Giới hạn và ràng buộc
- Bạn chỉ có thể đánh dấu một trường cho mỗi nhóm bộ sưu tập làm trường thời gian tồn tại.
- Bạn có thể có tối đa 1.000 cấu hình ở cấp trường. Một cấu hình trường có thể chứa nhiều cấu hình cho cùng một trường. Ví dụ: một trường được miễn lập chỉ mục và một chính sách về thời gian tồn tại trên cùng một trường được tính là một cấu hình trường theo giới hạn.
- Đối với khách hàng sử dụng Firestore ở chế độ Datastore, bạn không thể sử dụng thời gian tồn tại với chế độ đồng thời là Tối ưu hoá với nhóm thực thể. Hãy cân nhắc thay đổi chế độ đồng thời thành chế độ đồng thời Tối ưu hoá.
Xoá theo thời gian tồn tại
Hãy lưu ý những hành vi chính sau đây của việc xoá theo thời gian tồn tại:
Việc xoá thông qua thời gian tồn tại không phải là một quá trình diễn ra ngay lập tức. Các tài liệu đã hết hạn vẫn xuất hiện trong các truy vấn và yêu cầu tra cứu cho đến khi quá trình xoá theo thời gian tồn tại thực sự xoá các tài liệu đó. Thời gian tồn tại sẽ đánh đổi tính kịp thời của việc xoá để mang lại lợi ích là giảm tổng chi phí sở hữu cho các thao tác xoá. Dữ liệu thường bị xoá trong vòng 24 giờ sau ngày hết hạn.
Việc xoá một tài liệu thông qua thời gian tồn tại sẽ không xoá các tập hợp con trong tài liệu đó.
Việc áp dụng chính sách về thời gian tồn tại cho một nhóm bộ sưu tập hiện có sẽ dẫn đến việc xoá hàng loạt tất cả dữ liệu đã hết hạn theo chính sách mới về thời gian tồn tại. Xin lưu ý rằng thao tác xoá hàng loạt này cũng không diễn ra ngay lập tức và tuỳ thuộc vào lượng dữ liệu hiện có cho nhóm tập hợp đó.
Nếu một tài liệu có thời gian hết hạn trong quá khứ và bạn thêm một chính sách mới về thời gian tồn tại vào tập hợp, thì tài liệu đó sẽ bị xoá trong vòng 24 giờ kể từ khi chính sách về thời gian tồn tại hoàn tất quá trình thiết lập và trở nên hoạt động.
Thời gian tồn tại không nhất thiết phải xoá các tài liệu theo cùng thứ tự như dấu thời gian hết hạn của chúng.
Các thao tác xoá không được thực hiện theo giao dịch. Các tài liệu có cùng thời gian hết hạn không nhất thiết phải bị xoá cùng lúc. Nếu bạn yêu cầu hành vi này, hãy thực hiện các thao tác xoá bằng thư viện ứng dụng.
Cloud Firestore sẽ luôn tuân thủ trường thời gian tồn tại mới nhất để xác định thời gian hết hạn. Ví dụ: nếu một tài liệu đã hết hạn nhưng chưa bị xoá có trường thời gian tồn tại được cập nhật thành một ngày sau đó, thì tài liệu đó sẽ không hết hạn và ngày mới sẽ được sử dụng.
Cloud Firestore chỉ làm hết hạn một tài liệu khi trường thời gian tồn tại được đặt thành các loại giá trị cụ thể. Đối với cơ sở dữ liệu phiên bản Chuẩn, trường này phải được đặt thành giá trị
Date and time. Đối với cơ sở dữ liệu phiên bản Doanh nghiệp, trường này phải được đặt thành giá trịDate and timehoặc giá trịArraychứa giá trịDate and time. Việc để trống trường này hoặc đặt thành một giá trị nhưnullsẽ cho phép tắt thời gian hết hạn trên cơ sở từng tài liệu.Thời gian tồn tại được thiết kế để giảm thiểu tác động đến các hoạt động khác của cơ sở dữ liệu. Các thao tác xoá do thời gian tồn tại thực hiện được xử lý với mức độ ưu tiên thấp hơn. Các chiến lược khác cũng được áp dụng để làm giảm các đợt tăng đột biến lưu lượng truy cập do các thao tác xoá theo thời gian tồn tại.
Việc xoá thông qua thời gian tồn tại sẽ gọi tất cả trình nghe ảnh chụp nhanh đang hoạt động và kích hoạt các trình kích hoạt Cloud Functions Cloud Firestore.
Trường và chỉ mục thời gian tồn tại
Bạn có thể lập chỉ mục hoặc không lập chỉ mục cho trường thời gian tồn tại. Tuy nhiên, vì trường thời gian tồn tại là dấu thời gian, nên việc lập chỉ mục cho trường này có thể ảnh hưởng đến hiệu suất ở tốc độ lưu lượng truy cập cao hơn. Việc lập chỉ mục cho trường dấu thời gian có thể tạo ra các điểm nóng, điều này không phù hợp với các phương pháp hay nhất. Điểm nóng là tốc độ đọc, ghi và xoá cao đối với một phạm vi tài liệu hẹp.
Theo mặc định, Cloud Firestore phiên bản Chuẩn sẽ tạo một chỉ mục cho một trường cho tất cả các trường. Bạn có thể tạo một trường được miễn lập chỉ mục để tắt chỉ mục trên trường thời gian tồn tại.
Quyền
Chủ thể định cấu hình chính sách về thời gian tồn tại yêu cầu quyền sau đây trong dự án:
- Việc xem các chính sách về thời gian tồn tại yêu cầu quyền
datastore.indexes.listvàdatastore.indexes.get. - Việc sửa đổi các chính sách về thời gian tồn tại yêu cầu quyền
datastore.indexes.update. - Việc kiểm tra trạng thái của các thao tác theo thời gian tồn tại yêu cầu
datastore.operations.listvàdatastore.operations.get.
Để biết các vai trò chỉ định các quyền này, hãy xem Cloud Firestore Các vai trò của Identity and Access Management.
Tạo chính sách về thời gian tồn tại
Khi tạo chính sách về thời gian tồn tại, bạn sẽ chỉ định một trường tài liệu làm thời gian hết hạn cho các tài liệu trong một nhóm bộ sưu tập.
Thời gian tồn tại sử dụng một trường được chỉ định để xác định các tài liệu đủ điều kiện bị xoá.
Đối với cơ sở dữ liệu phiên bản Chuẩn, trường thời gian tồn tại phải được đặt thành giá trị Date and time.
Đối với cơ sở dữ liệu phiên bản Doanh nghiệp, trường này phải được đặt thành giá trị Date and time hoặc giá trị Array chứa giá trị Date and time. Bạn có thể chọn một trường đã tồn tại hoặc chỉ định một trường mà bạn dự định thêm sau.
Hãy cân nhắc những điều sau đây trước khi bạn đặt giá trị trường thời gian tồn tại:
Giá trị trường thời gian tồn tại có thể là thời gian trong tương lai, hiện tại hoặc trong quá khứ. Nếu giá trị là thời gian trong quá khứ, thì tài liệu đó sẽ đủ điều kiện bị xoá ngay lập tức. Ví dụ: bạn có thể tạo chính sách về thời gian tồn tại với trường
expireAt, sau đó thêm trường này vào các tài liệu hiện có.Việc sử dụng bất kỳ loại dữ liệu nào khác hoặc không đặt giá trị trường thời gian tồn tại sẽ tắt thời gian tồn tại cho từng tài liệu.
Để tạo chính sách về thời gian tồn tại, hãy làm theo các bước sau:
Bảng điều khiển Google Cloud
Trong bảng điều khiển Cloud, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
Chọn cơ sở dữ liệu bắt buộc trong danh sách cơ sở dữ liệu.
Trong trình đơn điều hướng, hãy nhấp vào Time-to-live (Thời gian tồn tại).
Nhấp vào Create Policy (Tạo chính sách).
Nhập tên nhóm bộ sưu tập và tên trường dấu thời gian.
Nhấp vào Create (Tạo).
Bảng điều khiển sẽ quay lại trang Time-to-live (Thời gian tồn tại). Nếu thao tác bắt đầu thành công, trang này sẽ thêm một mục vào bảng chính sách về thời gian tồn tại. Nếu không thành công, trang này sẽ hiển thị thông báo lỗi.
gcloud
Sử dụng lệnh firestore fields ttls
update
để định cấu hình chính sách về thời gian tồn tại. Thêm cờ --async để ngăn
CLI gcloud chờ thao tác hoàn tất.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
Thời gian bật chính sách về thời gian tồn tại
Bạn có thể mất tối thiểu 10 phút trở lên để bật chính sách về thời gian tồn tại. Sau khi bạn bắt đầu một thao tác, việc đóng thiết bị đầu cuối sẽ không huỷ thao tác đó.
Xem các chính sách về thời gian tồn tại
Để xem các chính sách về thời gian tồn tại và trạng thái của chúng, hãy làm theo các bước sau:
Bảng điều khiển Google Cloud
Trong bảng điều khiển Cloud, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
Chọn cơ sở dữ liệu bắt buộc trong danh sách cơ sở dữ liệu.
Trong trình đơn điều hướng, hãy nhấp vào Time-to-live (Thời gian tồn tại).
Bảng điều khiển sẽ liệt kê các chính sách về thời gian tồn tại cho cơ sở dữ liệu của bạn và bao gồm trạng thái của từng chính sách.
gcloud
Sử dụng lệnh
firestore fields ttls list
để định cấu hình chính sách về thời gian tồn tại. Lệnh sau đây liệt kê tất cả các chính sách về thời gian tồn tại.
gcloud firestore fields ttls list
Để liệt kê các chính sách về thời gian tồn tại trong một nhóm bộ sưu tập cụ thể, hãy sử dụng lệnh sau:
gcloud firestore fields ttls list --collection-group=collection_group_name
Xem thông tin chi tiết về thao tác
Bạn có thể sử dụng CLI gcloud để xem thêm thông tin chi tiết về chính sách về thời gian tồn tại ở trạng thái CREATING.
Sử dụng lệnh operations list để xem tất cả các thao tác đang chạy và
các thao tác đã hoàn tất gần đây:
gcloud firestore operations list
Phản hồi bao gồm thông tin ước tính về tiến trình của thao tác.
Tắt chính sách về thời gian tồn tại
Để tắt chính sách về thời gian tồn tại, hãy làm theo các bước sau:
Bảng điều khiển Google Cloud
Trong bảng điều khiển Cloud, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
Chọn cơ sở dữ liệu bắt buộc trong danh sách cơ sở dữ liệu.
Trong trình đơn điều hướng, hãy nhấp vào Time-to-live (Thời gian tồn tại).
Trong bảng chính sách về thời gian tồn tại, hãy tìm hàng cho chính sách về thời gian tồn tại. Trong hàng của bảng này, hãy nhấp vào nút Delete (Xoá) (thùng rác).
Xác nhận bằng cách nhấp vào Delete (Xoá).
Bảng điều khiển sẽ quay lại trang Time-to-live (Thời gian tồn tại). Nếu thành công, Cloud Firestore sẽ xoá chính sách về thời gian tồn tại khỏi bảng.
gcloud
1. Sử dụng lệnh
firestore fields ttls update
để định cấu hình chính sách về thời gian tồn tại. Thêm cờ --async để ngăn
CLI gcloud chờ thao tác hoàn tất.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
Theo dõi các thao tác xoá theo thời gian tồn tại
Bạn có thể sử dụng Cloud Monitoring để xem các chỉ số về các thao tác xoá theo thời gian tồn tại. Cloud Firestore cung cấp các chỉ số sau đây cho thời gian tồn tại:
| Loại chỉ số | Tên chỉ số | Nội dung mô tả chỉ số |
|---|---|---|
| firestore.googleapis.com/document/ttl_deletion_count | Số lượng xoá theo thời gian tồn tại |
Tổng số tài liệu bị xoá theo các chính sách về thời gian tồn tại. |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Độ trễ từ thời gian hết hạn đến thời gian xoá theo thời gian tồn tại |
Thời gian đã trôi qua kể từ khi một tài liệu hết hạn theo chính sách về thời gian tồn tại và thời điểm tài liệu đó thực sự bị xoá. |
Để thiết lập trang tổng quan bằng các chỉ số Cloud Firestore, hãy xem bài viết quản lý trang tổng quan tuỳ chỉnh và thêm các tiện ích trên trang tổng quan.