Quản lý hoạt động giữ lại dữ liệu bằng các chính sách TTL

Trang này mô tả cách sử dụng Bảng điều khiển Google Cloud Platform và Google Cloud CLI để định cấu hình các chính sách 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 phát trực tiếp

Sử dụng các chính sách TTL để tự động xoá dữ liệu cũ khỏi cơ sở dữ liệu của bạn. 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 thu thập nhất định. Với TTL, bạn có thể giảm chi phí lưu trữ bằng cách xoá những 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á TTL sẽ được tính vào chi phí xoá tài liệu của bạn. Để biết giá của các thao tác xoá, hãy xem phần Giá Cloud Firestore.

Giới hạn và quy tắc ràng buộc

  • Mỗi nhóm thu thập, bạn chỉ có thể đánh dấu một trường là trường TTL.
  • Cho phép tổng cộng 200 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ụ: trường hợp miễn lập chỉ mục một trường và chính sách TTL trên cùng một trường sẽ được tính là một cấu hình trường vào giới hạn.
  • Đối với khách hàng ở chế độ Firestore ở chế độ Datastore, bạn không thể sử dụng TTL với chế độ đồng thời Optimistic With Entity Groups (Tối ưu với nhóm thực thể). Cân nhắc thay đổi chế độ đồng thời sang chế độ đồng thời Optimistic.

Xoá TTL

Vui lòng lưu ý các hành vi chính sau đây của quy trình xoá theo TTL:

  • Quá trình xoá qua TTL không phải là quá trình tức thì. Tài liệu đã hết hạn sẽ 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 quá trình TTL thực sự xoá chúng. TTL thay đổi tính kịp thời của quy trình xoá để đổi được lợi ích là giảm tổng chi phí sở hữu cho 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 TTL sẽ không xoá các tập hợp con trong tài liệu đó.

  • Theo chính sách TTL mới, nếu bạn áp dụng chính sách TTL cho một nhóm thu thập hiện có, thì mọi dữ liệu đã hết hạn sẽ bị xoá hàng loạt. Xin lưu ý rằng quy trình xoá hàng loạt này cũng không diễn ra ngay lập tức mà phụ thuộc vào lượng dữ liệu có trong nhóm thu thập đó.

  • Nếu một tài liệu đã có thời gian hết hạn và bạn thêm chính sách TTL mới vào bộ sưu tậ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 việc thiết lập và bắt đầu có hiệu lực.

  • TTL không nhất thiết xoá các tài liệu theo cùng thứ tự với dấu thời gian hết hạn.

  • Việc xoá dữ liệu không được thực hiện qua hình thức 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 bị xoá cùng một lúc. Nếu bạn yêu cầu hành vi này, hãy xoá bằng một thư viện ứng dụng.

  • Cloud Firestore sẽ luôn tuân thủ 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.

  • 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 mục xoá do TTL 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 để giúp giải quyết mức tăng đột biến về lưu lượng truy cập từ các lượt xoá theo TTL.

  • Thao tác xoá thông qua TTL sẽ gọi tất cả trình nghe tổng quan nhanh đang hoạt động và kích hoạt các điều kiện kích hoạt Chức năng đám mây của Cloud Firestore.

Trường và chỉ mục TTL

Trường TTL có thể được lập chỉ mục hoặc huỷ 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 ở tỷ lệ 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 nóng trái với các phương pháp hay nhất. Điểm phát sóng có tốc độ đọc, ghi và xoá cao trong một phạm vi tài liệu hẹp.

Theo mặc định, Cloud Firestore 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 một trường để tắt các chỉ mục trên trường TTL.

Quyền

Việc định cấu hình chính sách TTL yêu cầu quyền sau đây trong dự án:

  • Để xem chính sách TTL, bạn phải có các quyền datastore.indexes.listdatastore.indexes.get.
  • Việc sửa đổi các chính sách TTL yêu cầu quyền datastore.indexes.update.
  • Việc kiểm tra trạng thái của các hoạt động TTL cần có datastore.operations.listdatastore.operations.get.

Đối với những vai trò được chỉ định các quyền này, hãy xem bài viết Các vai trò Quản lý danh tính và quyền truy cập trong Cloud Firestore.

Trước khi bắt đầu

Trước khi bạn sử dụng Giao diện dòng lệnh (CLI) của gcloud để quản lý các chính sách TTL, hãy dùng lệnh gcloud components update để cập nhật các thành phần lên phiên bản mới nhất hiện có:

gcloud components update

Tạo chính sách TTL

Khi tạo chính sách TTL, 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 nhóm thu thậ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á. Trường TTL này phải thuộc loại Date and time. Bạn có thể chọn một trường đã tồn tại hoặc có thể chỉ định một trường mà bạn định thêm sau này.

Hãy xem xét những điều sau trước khi đặ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 gian trong quá khứ thì tài liệu sẽ ngay lập tức đủ điều kiện để xoá. Ví dụ: bạn có thể tạo một chính sách TTL 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 TTL sẽ tắt TTL cho từng tài liệu.

Để tạo chính sách TTL, hãy làm theo các bước sau:

Google Cloud Console

  1. Trong Bảng điều khiển Google Cloud Platform, hãy chuyển đến trang Cơ sở dữ liệu.

    Chuyển đến trang Cơ sở dữ liệu

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.

  3. Trong trình đơn điều hướng, hãy nhấp vào Thời gian tồn tại.

  4. Nhấp vào Tạo chính sách.

  5. Nhập tên nhóm thu thập và tên trường dấu thời gian.

  6. Nhấp vào Tạo.

Bảng điều khiển sẽ trở lại trang 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 TTL. Khi không thành công, trang sẽ hiển thị một thông báo lỗi.

Google Cloud

Dùng lệnh firestore fields ttls update để định cấu hình chính sách TTL. Thêm cờ --async để ngăn Giao diện dòng lệnh (CLI) của gcloud chờ thao tác hoàn tất.

 gcloud firestore fields ttls update
  ttl_field --collection-group=collection_group_name
  --enable-ttl 

Khoảng thời gian bật chính sách TTL

Ngay cả trên một cơ sở dữ liệu trống, bạn có thể phải chờ từ 10 phút trở lên để bật chính sách TTL. Khi bạn bắt đầu một thao tác, việc đóng cửa sổ dòng lệnh sẽ không huỷ thao tác đó.

Xem chính sách về TTL

Để xem các chính sách TTL và trạng thái của các chính sách đó, hãy làm theo các bước sau:

Google Cloud Console

  1. Trong Bảng điều khiển Google Cloud Platform, hãy chuyển đến trang Cơ sở dữ liệu.

    Chuyển đến trang Cơ sở dữ liệu

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.

  3. 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 này 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.

Google Cloud

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ả cá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 thu thập cụ thể, hãy dùng cách sau:

   gcloud firestore fields ttls list  --collection-group=collection_group_name
   

Xem chi tiết hoạt động

Bạn có thể sử dụng Giao diện dòng lệnh (CLI) của gcloud để xem thêm chi tiết về chính sách TTL ở trạng thái CREATING.

Dùng lệnh operations list để xem tất cả thao tác đang chạy và thao tác mới hoàn thành 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 hoạt động.

Tắt chính sách TTL

Để tắt chính sách TTL, hãy làm theo các bước sau:

Google Cloud Console

  1. Trong Bảng điều khiển Google Cloud Platform, hãy chuyển đến trang Cơ sở dữ liệu.

    Chuyển đến trang Cơ sở dữ liệu

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.

  3. Trong trình đơn điều hướng, hãy nhấp vào Thời gian tồn tại.

  4. Trong bảng chính sách TTL, hãy tìm hàng chứa chính sách TTL. Trong hàng của bảng này, hãy nhấp vào nút Xoá (thùng rác).

  5. Xác nhận bằng cách nhấp vào Xoá.

Bảng điều khiển sẽ trở lại trang Thời gian tồn tại. Khi thành công, Cloud Firestore sẽ xoá chính sách TTL khỏi bảng.

Google Cloud

1. Dùng lệnh firestore fields ttls update để định cấu hình chính sách TTL. Thêm cờ --async để ngăn Giao diện dòng lệnh (CLI) của 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 hoạt động xoá TTL

Bạn có thể sử dụng giải pháp Giám sát trên đám mây để xem chỉ số về những lượt xoá theo 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ượt 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 Hết hạn thời gian tồn tại của thời gian trì hoãn xoá

Thời gian trôi qua tính từ khi một tài liệu hết hạn theo chính sách TTL cho đến khi tài liệu đó thực sự bị xoá.

Để thiết lập một trang tổng quan bằng các chỉ số của Cloud Firestore, hãy xem bài viết quản lý trang tổng quan tuỳ chỉnhthêm tiện ích của trang tổng quan.