Trang này mô tả cách sử dụng Google Cloud Console và CLI Google Cloud để định cấu hình chính sách về thời gian tồn tại (TTL). Trước khi đọc trang này, bạn nên tìm hiểu về mô hình dữ liệu Cloud Firestore.
Tổng quan về thời gian tồn tại
Sử dụng chính sách TTL để tự động xoá dữ liệu cũ khỏi cơ sở dữ liệu. Chính sách TTL 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 tập hợp nhất định. Với TTL, bạn có thể giảm chi phí lưu trữ bằng cách dọn dẹp dữ liệu lỗi thời. Dữ liệu thường được xoá trong vòng 24 giờ sau ngày hết hạn.
Giá
Thao tác xoá TTL được tính vào chi phí xoá tài liệu. Để biết giá của thao tác xoá, hãy xem phần giá của Cloud Firestore.
Giới hạn và quy định ràng buộc
- Bạn chỉ có thể đánh dấu một trường cho mỗi nhóm tập hợp là trường TTL.
- 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 hợp miễn lập chỉ mục cho một trường và một chính sách TTL trên cùng một trường được tính là một cấu hình trường trong giới hạn.
- Đối với khách hàng sử dụng Firestore ở chế độ Kho dữ liệu, bạn không thể sử dụng TTL với chế độ đồng thời là Lạc quan với nhóm thực thể. Hãy cân nhắc việc thay đổi chế độ đồng thời thành Chế độ đồng thời lạc quan.
Xoá TTL
Hãy lưu ý các hành vi chính sau đây của tính năng xoá dựa trên TTL:
Xoá thông qua TTL không phải là một quy trình tức thời. Tài liệu đã hết hạn tiếp tục xuất hiện trong các truy vấn và yêu cầu tra cứu cho đến khi quy trình TTL thực sự xoá chúng. TTL đánh đổi tính kịp thời của việc xoá để đổi lấy lợi ích là giảm tổng chi phí sở hữu cho việc xoá. Dữ liệu thường được xoá trong vòng 24 giờ sau ngày hết hạn.
Khi bạn xoá một tài liệu thông qua TTL, các tập hợp con trong tài liệu đó sẽ không bị xoá.
Việc áp dụng chính sách TTL cho một nhóm tập hợ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 TTL mới. Xin lưu ý rằng việc xoá hàng loạt này cũng không diễn ra ngay lập tức và phụ thuộc vào lượng dữ liệu tồn tại 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 TTL mớ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 TTL hoàn tất quá trình thiết lập và bắt đầu hoạt động.
TTL không nhất thiết phải xoá tài liệu theo cùng thứ tự với dấu thời gian hết hạn của tài liệu.
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 một lúc. Nếu bạn cần hành vi này, hãy thực hiện việc xoá bằng thư viện ứng dụng.
Cloud Firestore sẽ luôn tuân theo trường TTL 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 TTL đượ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ỉ hết hạn một tài liệu khi trường TTL được đặt thành các loại giá trị cụ thể. Đối với cơ sở dữ liệu phiên bản Standard, bạn phải đặt trường này thành giá trị
Date and time. Đối với cơ sở dữ liệu phiên bản Enterprise, 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. Nếu bạn để trống trường này hoặc đặt thành một giá trị nhưnull, thì bạn có thể tắt tính năng hết hạn cho từng tài liệu.TTL đượ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 TTL thực hiện sẽ đượ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 để giảm bớt lưu lượng truy cập tăng đột biến do các thao tác xoá dựa trên TTL.
Thao tác xoá thông qua TTL sẽ gọi tất cả trình nghe ảnh chụp nhanh đang hoạt động và kích hoạt trình kích hoạt Cloud Functions Cloud Firestore.
Trường và chỉ mục TTL
Trường TTL có thể được lập chỉ mục hoặc không được lập chỉ mục. Tuy nhiên, vì trường TTL là dấu thời gian, nên việc lập chỉ mục trường này có thể ảnh hưởng đến hiệu suất khi lưu lượng truy cập cao hơn. Việc lập chỉ mục trường dấu thời gian có thể tạo ra điểm phát sóng, điều này trái với các phương pháp hay nhất. Điểm phát sóng là tỷ lệ đọc, ghi và xoá cao đối với một phạm vi tài liệu hẹp.
Theo mặc định, phiên bản Cloud Firestore Standard sẽ tạo một chỉ mục trường đơn cho tất cả các trường. Bạn có thể tạo một trường hợp miễn trừ chỉ mục trường đơn để tắt chỉ mục trên trường TTL.
Quyền
Chủ thể cấu hình chính sách TTL cần có quyền sau đây trong dự án:
- Để xem chính sách TTL, bạn cần có quyền
datastore.indexes.listvàdatastore.indexes.get. - Để sửa đổi chính sách TTL, bạn cần có quyền
datastore.indexes.update. - Để kiểm tra trạng thái của các thao tác TTL, bạn cần có
datastore.operations.listvàdatastore.operations.get.
Để biết các vai trò chỉ định những quyền này, hãy xem bài viết Vai trò Quản lý danh tính và quyền truy cập của Cloud Firestore.
Tạo chính sách TTL
Khi tạo chính sách TTL, bạn 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 tập hợp.
TTL sử dụng một trường được chỉ định để xác định những tài liệu đủ điều kiện để xoá.
Đối với cơ sở dữ liệu phiên bản Standard, bạn phải đặt trường TTL thành giá trị Date and time.
Đối với cơ sở dữ liệu phiên bản Enterprise, bạn phải đặt giá trị này 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 vào sau.
Hãy cân nhắc những điều sau trước khi bạn đặt giá trị cho trường TTL:
Giá trị trường TTL có thể là thời gian trong tương lai, hiện tại hoặc trong quá khứ. Nếu giá trị là một thời điểm trong quá khứ, thì tài liệu đó sẽ đủ điều kiện để xoá ngay lập tức. Ví dụ: bạn có thể tạo một chính sách TTL có trường
expireAt, sau đó thêm chính sách này vào các tài liệu hiện có.Nếu bạn sử dụng bất kỳ loại dữ liệu nào khác hoặc không đặt giá trị cho trường TTL, thì TTL sẽ bị tắt đối với từng tài liệu.
Để tạo chính sách TTL, hãy làm theo các bước sau:
Bảng điều khiển Google Cloud
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
Trong trình đơn điều hướng, hãy nhấp vào Thời gian tồn tại.
Nhấp vào Tạo chính sách.
Nhập tên nhóm tập hợp và tên trường dấu thời gian.
Không bắt buộc: Định cấu hình Độ lệch hết hạn. Nhập một giá trị rồi chọn một đơn vị (ngày, giờ, phút hoặc giây). Theo mặc định, độ lệch là 0.
Nhấp vào Tạo.
Bảng điều khiển sẽ quay lại trang Thời gian tồn tại. Nếu thao tác bắt đầu thành công, trang sẽ thêm một mục vào bảng chính sách TTL. Nếu không thành công, trang 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 TTL. 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
Để bật TTL với độ lệch hết hạn, hãy thêm cờ --expiration-offset:
gcloud firestore fields ttls update
ttl_field
--collection-group=collection_group_name
--enable-ttl
--expiration-offset=expiration_offset
Thay thế expiration_offset bằng một khoảng thời gian, ví dụ: 7d
cho 7 ngày hoặc 24h cho 24 giờ. Nếu bạn bỏ qua cờ này, độ lệch hết hạn sẽ mặc định là 0.
Thời gian bật chính sách TTL
Có thể mất ít nhất 10 phút để bật chính sách TTL. 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 chính sách TTL
Để xem chính sách TTL và trạng thái của chính sách, hãy làm theo các bước sau:
Bảng điều khiển Google Cloud
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
Trong trình đơn điều hướng, hãy nhấp vào Thời gian tồn tại.
Bảng điều khiển liệt kê các chính sách TTL 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 TTL. Lệnh sau đây liệt kê tất cả chính sách TTL.
gcloud firestore fields ttls list
Để liệt kê các chính sách TTL trong một nhóm tập hợ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ề hoạt động
Bạn có thể sử dụng CLI gcloud để xem thêm thông tin chi tiết về chính sách TTL ở 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à đã 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 TTL
Để tắt chính sách TTL, hãy làm theo các bước sau:
Bảng điều khiển Google Cloud
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
Trong trình đơn điều hướng, hãy nhấp vào Thời gian tồn tại.
Trong bảng chính sách TTL, hãy tìm hàng cho chính sách TTL. Trong hàng này của bảng, hãy nhấp vào nút Xoá (biểu tượng thùng rác).
Xác nhận bằng cách nhấp vào Xoá.
Bảng điều khiển sẽ quay lại trang Thời gian tồn tại. Nếu thành công, Cloud Firestore sẽ xoá chính sách TTL khỏi bảng.
gcloud
1. Sử dụng lệnh firestore fields ttls update để định cấu hình chính sách TTL. Thêm cờ --async để ngăn gcloud CLI 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á TTL
Bạn có thể sử dụng Cloud Monitoring để xem các chỉ số về việc xoá dựa trên TTL. Cloud Firestore cung cấp các chỉ số sau cho TTL:
| Loại chỉ số | Tên chỉ số | Nội dung mô tả chỉ số |
|---|---|---|
| firestore.googleapis.com/document/ttl_deletion_count | Số lần xoá theo thời gian tồn tại |
Tổng số tài liệu bị xoá theo chính sách TTL. |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Độ trễ từ khi hết thời gian tồn tại đến khi xoá |
Thời gian trôi qua giữa thời điểm tài liệu hết hạn theo chính sách TTL và thời điểm tài liệu thực sự bị xoá. |
Để thiết lập trang tổng quan có 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 tiện ích vào trang tổng quan.