Hết hạnSau giây MongoDB

Tài liệu này cung cấp phần giới thiệu về tính năng thu thập “time to live” hoặc “” của MongoDB. Được triển khai dưới dạng một loại chỉ mục đặc biệt, các bộ sưu tập TTL cho phép lưu trữ dữ liệu trong MongoDB và tự động xóa dữ liệu sau một khoảng thời gian nhất định. Điều này lý tưởng cho một số loại thông tin như dữ liệu sự kiện do máy tạo, nhật ký và thông tin phiên chỉ cần tồn tại trong cơ sở dữ liệu trong một khoảng thời gian giới hạn

Tiểu sử

Các bộ sưu tập hết hạn theo cách của một chỉ mục đặc biệt theo dõi thời gian chèn kết hợp với một luồng nền trong đó thường xuyên loại bỏ các bộ sưu tập đã hết hạn. Bạn có thể sử dụng tính năng này để hết hạn dữ liệu từ và

Sử dụng tùy chọn expireafterSeconds cho phương thức kết hợp với giá trị TTL tính bằng giây để tạo bộ sưu tập sắp hết hạn. Bộ sưu tập TTL đặt cờ bộ sưu tập, có nghĩa là MongoDB phải phân bổ nhiều dung lượng đĩa hơn so với kích thước dữ liệu. Cách tiếp cận này giúp giảm thiểu khả năng phân mảnh bộ nhớ do thao tác xóa thường xuyên gây ra và dẫn đến các kiểu sử dụng bộ nhớ dễ dự đoán hơn.

注解

Khi luồng TTL đang hoạt động, bạn sẽ thấy thao tác xóa trong đầu ra của hoặc trong dữ liệu được thu thập bởi

Hạn chế

Xem xét các hạn chế sau

  • trường được lập chỉ mục phải là một ngày. Nếu trường không có kiểu ngày thì dữ liệu sẽ không hết hạn
  • bạn không thể tạo chỉ mục này trên trường _id hoặc trường đã có chỉ mục.
  • chỉ mục TTL có thể không phải là hợp chất (có thể không có nhiều trường)
  • nếu trường chứa một mảng và có nhiều dữ liệu được nhập theo ngày trong chỉ mục, thì tài liệu sẽ hết hạn khi giá trị thấp nhất (i. e. sớm nhất) khớp với ngưỡng hết hạn
  • bạn không thể sử dụng chỉ mục TTL trên bộ sưu tập có giới hạn, vì MongoDB không thể xóa tài liệu khỏi bộ sưu tập có giới hạn

注解

Chỉ mục TTL dữ liệu hết hạn bằng cách xóa tài liệu trong tác vụ nền chạy mỗi phút một lần. Do đó, chỉ mục TTL không đảm bảo rằng các tài liệu hết hạn sẽ không tồn tại trong bộ sưu tập. Xem xét điều đó

  • Tài liệu có thể vẫn còn trong bộ sưu tập sau khi chúng hết hạn và trước khi quá trình nền chạy
  • Thời lượng của các thao tác xóa tùy thuộc vào khối lượng công việc của phiên bản của bạn

Bật TTL cho Bộ sưu tập

Cách đặt TTL trên bộ sưu tập “ log. sự kiện ” trong một giờ, sử dụng lệnh sau tại trình bao.

db.log.events.ensureIndex( { "status": 1 }, { expireAfterSeconds: 3600 } )

Trường trạng thái phải chứa thông tin ngày/giờ. MongoDB sẽ tự động xóa tài liệu khỏi bộ sưu tập này sau khi giá trị của trạng thái cũ hơn một giờ.

Nhân rộng

Chủ đề nền TTL chỉ chạy trên các thành viên của. các thành viên sẽ sao chép các hoạt động xóa từ bầu cử sơ bộ

Hết hạnSau giây MongoDB

liron HackerNoon profile picture

react to story with heart

NHƯNG CÂU CHUYỆN LIÊN QUAN

ĐANG TẢI
. . nhận xét và hơn thế nữa

Hackernoon hq - po box 2206, edwards, colorado 81632, usa

Chỉ mục TTL là chỉ mục trường đơn đặc biệt mà MongoDB có thể sử dụng để tự động xóa tài liệu khỏi bộ sưu tập sau một khoảng thời gian nhất định. Hết hạn dữ liệu hữu ích đối với một số loại thông tin như dữ liệu sự kiện do máy tạo, nhật ký và thông tin phiên chỉ cần tồn tại trong cơ sở dữ liệu trong một khoảng thời gian hữu hạn

Để tạo chỉ mục TTL, hãy sử dụng phương thức có tùy chọn expireAfterSeconds trên trường có giá trị là một hoặc một mảng chứa

Ví dụ: để tạo chỉ mục TTL trên trường lastModifiedDate của bộ sưu tập eventlog, hãy sử dụng thao tác sau trong trình bao

sao chép

db.eventlog.ensureIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )

Cư xử

Hết hạn dữ liệu

Các chỉ mục TTL hết hạn tài liệu sau khi số giây được chỉ định đã trôi qua kể từ giá trị trường được lập chỉ mục; . e. ngưỡng hết hạn là giá trị trường được lập chỉ mục cộng với số giây được chỉ định

Nếu trường là một mảng và có nhiều giá trị ngày trong chỉ mục, MongoDB sẽ sử dụng giá trị thấp nhất (i. e. sớm nhất) giá trị ngày trong mảng để tính ngưỡng hết hạn

Nếu trường được lập chỉ mục trong tài liệu không phải là một hoặc một mảng chứa (các) giá trị ngày, thì tài liệu sẽ không hết hạn

Nếu tài liệu không chứa trường được lập chỉ mục, tài liệu sẽ không hết hạn

Xóa hoạt động

Chuỗi nền trong đọc các giá trị trong chỉ mục và xóa hết hạn khỏi bộ sưu tập

Khi luồng TTL đang hoạt động, bạn sẽ thấy các hoạt động xóa trong đầu ra của hoặc trong dữ liệu được thu thập bởi.

Thời gian của Thao tác Xóa

Khi bạn tạo chỉ mục TTL trong , luồng TTL có thể bắt đầu xóa tài liệu trong khi chỉ mục đang được tạo. Nếu bạn xây dựng một chỉ mục TTL ở phía trước, MongoDB sẽ bắt đầu xóa các tài liệu đã hết hạn ngay khi chỉ mục kết thúc quá trình xây dựng

Chỉ mục TTL không đảm bảo rằng dữ liệu hết hạn sẽ bị xóa ngay khi hết hạn. Có thể có độ trễ giữa thời gian tài liệu hết hạn và thời gian MongoDB xóa tài liệu khỏi cơ sở dữ liệu

Tác vụ nền xóa tài liệu hết hạn chạy 60 giây một lần. Do đó, các tài liệu có thể vẫn còn trong một bộ sưu tập trong khoảng thời gian từ khi tài liệu hết hạn đến khi chạy tác vụ nền

Vì thời lượng của thao tác xóa phụ thuộc vào khối lượng công việc của phiên bản của bạn, nên dữ liệu đã hết hạn có thể tồn tại trong một khoảng thời gian sau khoảng thời gian 60 giây giữa các lần chạy tác vụ nền

Bộ bản sao

Bật , chuỗi nền TTL chỉ xóa tài liệu trên. Tuy nhiên, chủ đề nền TTL không chạy trên thứ cấp. các thành viên sao chép các hoạt động xóa từ chính

Hỗ trợ truy vấn

Chỉ mục TTL hỗ trợ các truy vấn giống như cách các chỉ mục không phải TTL thực hiện

Phân bổ bản ghi

Bộ sưu tập có chỉ mục TTL đã được bật và bạn không thể sửa đổi cài đặt này cho bộ sưu tập. Do kích hoạt, MongoDB phải phân bổ nhiều không gian đĩa hơn so với kích thước dữ liệu. Cách tiếp cận này giúp giảm thiểu khả năng phân mảnh bộ nhớ do thao tác xóa thường xuyên gây ra và dẫn đến các kiểu sử dụng bộ nhớ dễ dự đoán hơn

Những hạn chế

  • Chỉ mục TTL là chỉ mục một trường. không hỗ trợ TTL và bỏ qua tùy chọn expireAfterSeconds
  • Trường db.collection.ensureIndex()2 không hỗ trợ chỉ mục TTL
  • Bạn không thể tạo chỉ mục TTL trên bộ sưu tập có giới hạn vì MongoDB không thể xóa tài liệu khỏi bộ sưu tập có giới hạn.
  • Bạn không thể sử dụng để thay đổi giá trị của expireAfterSeconds của một chỉ mục hiện có. Thay vào đó, hãy sử dụng lệnh cơ sở dữ liệu kết hợp với cờ bộ sưu tập. Mặt khác, để thay đổi giá trị của tùy chọn của một chỉ mục hiện có, trước tiên bạn phải bỏ chỉ mục đó và tạo lại
  • Nếu một chỉ mục trường đơn không phải TTL đã tồn tại cho một trường, bạn không thể tạo chỉ mục TTL trên cùng một trường vì bạn không thể tạo các chỉ mục có cùng đặc tả khóa và chỉ khác nhau bởi các tùy chọn. Để thay đổi chỉ mục trường đơn không phải TTL thành chỉ mục TTL, trước tiên, bạn phải bỏ chỉ mục đó và tạo lại bằng tùy chọn expireAfterSeconds

thông tin thêm

Ví dụ: xem Hết hạn dữ liệu từ Bộ sưu tập bằng cách đặt TTL .

←   Thuộc tính chỉ mục Chỉ mục duy nhất  →

© MongoDB, Inc 2008-nay. MongoDB, Mongo và logo chiếc lá là các nhãn hiệu đã đăng ký của MongoDB, Inc

Làm cách nào để hết hạn dữ liệu trong MongoDB?

Tài liệu hết hạn vào một thời điểm đồng hồ cụ thể . Nếu trường ngày được lập chỉ mục chứa một ngày trong quá khứ, MongoDB coi tài liệu đã hết hạn. set the indexed date field to a value corresponding to the time the document should expire. If the indexed date field contains a date in the past, MongoDB considers the document expired.

TTL hoạt động như thế nào trong MongoDB?

Chỉ mục TTL là chỉ mục trường đơn đặc biệt mà MongoDB có thể sử dụng để tự động xóa tài liệu khỏi bộ sưu tập sau một khoảng thời gian nhất định hoặc tại một thời điểm đồng hồ cụ thể.

Làm cách nào để kiểm tra các chỉ mục TTL trong MongoDB?

Các chỉ mục Thời gian tồn tại (TTL) được xác định cho mỗi bộ sưu tập dựa trên giá trị expireAfterSeconds được cung cấp. Theo mặc định, các bộ sưu tập không có chỉ mục TTL. .
Phiên bản máy chủ MongoDB
Phiên bản trình điều khiển/công cụ bạn đang sử dụng để hiển thị chi tiết TTL
Thông tin TTL bạn yêu cầu

Tính năng nào sau đây của bộ sưu tập hết hạn sau một khoảng thời gian nhất định?

“TTL” có nghĩa là “ thời gian tồn tại ”, vì loại chỉ mục này có thể được sử dụng để tự động hết hạn tài liệu trong bộ sưu tập.