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 Cloud và Google Cloud CLI để định cấu hình chính sách 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 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 bộ sưu tập nhất định. Với TTL, 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á TTL đượ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 TTL.
  • Bạn có thể có tối đa 500 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 TTL 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 TTL với chế độ đồng thời của chế độ Đồng thời lạc quan 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 lạc quan.

Xoá TTL

Hãy lưu ý những hành vi chính sau đây của việc xoá dựa trên TTL:

  • Việc xoá thông qua TTL không phải là một quy trình tức thời. 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 quy trình TTL thực sự xoá các tài liệu đó. TTL đá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 TTL 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 TTL trên 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 TTL mới. Xin lưu ý rằng việc xoá hàng loạt này cũng không diễn ra tức thời và tuỳ thuộc vào lượng dữ liệu hiện có cho nhóm bộ sưu tậ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à trở nên hoạt động.

  • TTL 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 các tài liệu đó.

  • 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 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 muộn hơn, 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 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 Tiêu 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 time hoặc giá trị Array chứa giá trị Date and time. Việc để trống trường hoặc đặt thành một giá trị như null cho phép tắt thời gian hết hạn trên cơ sở 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 điều khiể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á dựa trên TTL.

  • Việ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

Bạn có thể lập chỉ mục hoặc không lập chỉ mục cho trường TTL. Tuy nhiên, vì trường TTL 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 trái 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 Tiêu chuẩn sẽ tạo một chỉ mục 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 TTL.

Quyền

Chủ thể đị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 cần có quyền datastore.indexes.listdatastore.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ó quyền datastore.operations.listdatastore.operations.get.

Để biết các vai trò chỉ định các quyền này, hãy xem Cloud Firestore Vai trò của Identity and Access Management.

Trước khi bắt đầu

Trước khi sử dụng gcloud CLI để quản lý chính sách TTL, hãy sử dụng gcloud components update lệnh để 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 một nhóm bộ sưu tập.

TTL sử dụng một trường được chỉ định để xác định các tài liệu đủ điều kiện để xoá. Đối với cơ sở dữ liệu phiên bản Tiêu chuẩn, trường TTL 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 đặt giá trị 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à thời gian 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 chính sách TTL với trường expireAt, sau đó thêm vào các tài liệu hiện có.

  • Việc sử dụng bất kỳ kiểu 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:

Bảng điều khiển Google Cloud

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

    Chuyển đến Databases (Cơ sở dữ liệu)

  2. Chọn cơ sở dữ liệu bắt buộc trong danh sách cơ sở dữ liệu.

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

  4. Nhấp vào Create Policy (Tạo chính sách).

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

  6. 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 TTL. 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 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
  --enable-ttl 

Thời lượng bật chính sách TTL

Ngay cả trên cơ sở dữ liệu trống, bạn cũng có thể mất mười phút trở lên để 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 các chính sách đó, hãy làm theo các bước sau:

Bảng điều khiển Google Cloud

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

    Chuyển đến Databases (Cơ sở dữ liệu)

  2. Chọn cơ sở dữ liệu bắt buộc trong danh sách cơ sở dữ liệu.

  3. 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 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ả 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 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 gcloud CLI để 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à 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 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

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

    Chuyển đến Databases (Cơ sở dữ liệu)

  2. Chọn cơ sở dữ liệu bắt buộc trong danh sách cơ sở dữ liệu.

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

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

  5. 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 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ề các thao tác xoá dựa trên TTL. Cloud Firestore cung cấp các chỉ số sau đây 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ượng thao tác xoá 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ừ thời gian hết hạn đến thời gian xoá thời gian tồn tại

Thời gian trôi qua giữa thời điểm một 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 bằng các chỉ số Cloud Firestore, hãy xem bài viết quản lý trang tổng quan tuỳ chỉnhthêm tiện ích trang tổng quan.