Chuỗi thời gian MongoDB metaField
Bộ sưu tập Chuỗi thời gian là một tính năng mới đáng kinh ngạc có sẵn trong MongoDB 5. 0. Dựa trên các thử nghiệm đầu tiên tôi đã thực hiện, hỗ trợ Chuỗi thời gian cung cấp hiệu suất tương đương với việc sử dụng chỉ mục trên các bộ sưu tập thông thường nhưng tiết kiệm nhiều dung lượng đĩa và bộ nhớ. Quy trình tổng hợp, là những truy vấn phổ biến mà bạn có thể chạy trên dữ liệu chuỗi thời gian, thậm chí có thể nhận được nhiều lợi ích hơn Show
Hãy bắt đầu các bài kiểm tra Cơ sở dữ liệu chuỗi thời gian là gì?Nói chung, cơ sở dữ liệu Chuỗi thời gian là cơ sở dữ liệu chuyên biệt được thiết kế để lưu trữ hiệu quả dữ liệu được tạo từ luồng giá trị liên tục được liên kết với dấu thời gian. Trường hợp sử dụng điển hình là khi bạn cần lưu trữ dữ liệu đến từ thiết bị cảm biến truyền các điểm dữ liệu theo các khoảng thời gian cố định, nhưng giờ đây chúng được sử dụng để hỗ trợ nhiều ứng dụng hơn Các trường hợp sử dụng điển hình là
Cơ sở dữ liệu chuyên biệt về Chuỗi thời gian sử dụng các thuật toán nén để giảm thiểu yêu cầu về không gian và cũng cung cấp các đường dẫn truy cập để khai thác dữ liệu hiệu quả hơn. Điều này cải thiện hiệu suất truy xuất dữ liệu dựa trên bộ lọc phạm vi thời gian và tổng hợp dữ liệu. Chúng hiệu quả hơn so với việc sử dụng cơ sở dữ liệu quan hệ chung Thông thường, các giá trị của Chuỗi thời gian sẽ không thay đổi sau khi được ghi lại, chúng chỉ được xác định là CHÈN, còn được gọi là điểm dữ liệu bất biến. Sau khi dữ liệu được lưu trữ, thao tác cập nhật thực sự không phổ biến Một đặc điểm khác của Chuỗi thời gian là mọi mặt hàng phải có một giá trị duy nhất (một nhiệt độ, giá cổ phiếu, v.v.) Cơ sở dữ liệu chuỗi thời gian phổ biến là InfluxDB, Prometheus, Graphite. Ngoài ra còn có nhiều người khác. VictoriaMetrics nói riêng là một nhánh phổ biến của Prometheus và được sử dụng trong phần mềm Quản lý và Giám sát Percona của chúng tôi Bộ sưu tập chuỗi thời gian mới trong MongoDB 5. 0MongoDB, cũng như cơ sở dữ liệu quan hệ, đã được sử dụng rộng rãi trong nhiều năm để lưu trữ dữ liệu nhiệt độ từ các cảm biến, giá cổ phiếu và bất kỳ loại dữ liệu không thay đổi nào khác theo thời gian. MongoDB phiên bản 5. 0 hứa hẹn rằng điều này có thể được thực hiện hiệu quả hơn, vì vậy hãy xem cách thức hoạt động của nó Bộ sưu tập Chuỗi thời gian xuất hiện dưới dạng bộ sưu tập thông thường và các thao tác bạn có thể thực hiện hoàn toàn giống nhau. chèn, cập nhật, tìm, xóa, tổng hợp. Sự khác biệt chính là đằng sau bức màn. MongoDB lưu trữ dữ liệu thành định dạng lưu trữ được tối ưu hóa khi chèn. So với tập hợp thông thường, Chuỗi thời gian nhỏ hơn và mang lại hiệu quả truy vấn cao hơn MongoDB coi các bộ sưu tập Chuỗi thời gian là các chế độ xem phi vật chất có thể ghi. Dữ liệu được lưu trữ hiệu quả hơn, tiết kiệm dung lượng ổ đĩa và chỉ mục nội bộ được tạo tự động sắp xếp dữ liệu theo thời gian. Theo mặc định, dữ liệu được nén bằng thuật toán zstd thay vì snappy. Kiểu nén mới cung cấp tỷ lệ cao hơn, ít yêu cầu CPU hơn và nó rất phù hợp với dữ liệu chuỗi thời gian khi có ít biến thể từ tài liệu này sang tài liệu tiếp theo. Cuối cùng, bạn có thể thay đổi thuật toán nén, nhưng điều đó không thực sự được khuyến khích Bộ sưu tập Chuỗi thời gian không được tạo hoàn toàn khi bạn chèn tài liệu, giống như bộ sưu tập thông thường. Bạn phải tạo nó một cách rõ ràng Hãy làm một số bài kiểm tra Tạo bộ sưu tập chuỗi thời gian để lưu trữ giá cổ phiếuChúng ta cần sử dụng phương thức createCollection(), cung cấp một số tham số Vỏ bọc1 2 3 4 5 6 7 8 9 10 11 [trực tiếp. mongos] chuỗi thời gian> db . createCollection.createCollection( "stockprice1week", { chuỗi thời gian. { trường thời gian. "dấu thời gian", metaField. "siêu dữ liệu", độ chi tiết. "phút" }, hết hạn sau giây. 604800 } ) { ok. 1 } Tên của bộ sưu tập là stockprice1week và tham số bắt buộc duy nhất là timeField. Các thông số khác là tùy chọn trường thời gian. tên của trường nơi ngày được lưu trữ. Điều này sẽ được tự động lập chỉ mục và được sử dụng để truy xuất dữ liệu siêu trường. trường chứa siêu dữ liệu. Nó có thể là một giá trị vô hướng đơn giản hoặc một đối tượng JSON phức tạp hơn. Đó là tùy chọn. Nó không thể là _id hoặc giống như timeField. Ví dụ: siêu dữ liệu cho cảm biến nhiệt độ có thể là mã của cảm biến, loại, vị trí, v.v. độ chi tiết. các giá trị có thể là giây, phút và giờ. Nếu không được đặt, nó sẽ mặc định là giây. Nếu bạn chỉ định kết quả khớp gần nhất giữa hai giá trị liên tiếp, điều này sẽ giúp MongoDB lưu trữ dữ liệu hiệu quả hơn và cải thiện hiệu suất truy vấn hết hạnSau giây. bạn có thể tự động xóa tài liệu sau thời gian đã chỉ định, giống như chỉ mục TTL. Nếu không được chỉ định các tài liệu sẽ không hết hạn Hãy chèn một số dữ liệu ngẫu nhiên cho ba cổ phiếu. Táo, cam và chuối. Dữ liệu được thu thập một lần mỗi phút Vỏ bọc1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [trực tiếp. mongos] dòng thời gian> var . 00. 00. 000Z" stockPriceDate = ISODate("2021-10-13T00:00:00.000Z")
[trực tiếp. mongos] dòng thời gian> var priceApple = 100
[trực tiếp. mongos] dòng thời gian> var priceOrange = 50
[trực tiếp. mongos] dòng thời gian> var priceBanana = 80
[trực tiếp. mongos] chuỗi thời gian> cho (i = 1; i < 100000; i++) { priceApple = priceApple + Math.random(); priceOrange = priceOrange + Math.random(); priceChuối = priceChuối + Math.random(); db. stockprice1tuần. chèn({ "dấu thời gian". ngày giá chứng khoán, "siêu dữ liệu". { "stockName". "Apple", "tiền tệ". "Đô la" }, "giá cổ phiếu": priceApple }); db. stockprice1tuần. chèn({ "dấu thời gian". ngày giá chứng khoán, "siêu dữ liệu". { "stockName". "Cam", "tiền tệ". "Đô la" }, "giá cổ phiếu": priceOrange }); db. stockprice1tuần. chèn({ "dấu thời gian". ngày giá chứng khoán, "siêu dữ liệu". { "stockName". "Chuối", "tiền". "Euro" }, "giá cổ phiếu": priceChuối }); ngày giá chứng khoán = mới Ngày(stockPriceDate.getTime() + 1000 * 60); } Chúng tôi có thể truy vấn để kiểm tra các tài liệu đã chèn Vỏ bọc1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1tuần.stockPrice1week. tìm(). giới hạn(3) [ { _id. ObjectId("6166df318f32e5d3ed304fc5"), dấu thời gian. Ngày ISO("2021-10-13T00:00:00.000Z"), siêu dữ liệu. { Tên kho. 'Apple', tiền tệ. 'Đô la' }, giá cổ phiếu. 100. 6547271930824 }, { _id. ObjectId("6166df318f32e5d3ed304fc6"), dấu thời gian. Ngày ISO("2021-10-13T00:00:00.000Z"), siêu dữ liệu. { Tên kho. 'Cam', tiền tệ. 'Đô la' }, giá cổ phiếu. 50. 51709117468818 }, { _id. ObjectId("6166df318f32e5d3ed304fc7"), dấu thời gian. Ngày ISO("2021-10-13T00:00:00.000Z"), siêu dữ liệu. { Tên kho. 'Chuối', tiền tệ. 'Euro' }, giá cổ phiếu. 80. 17611551979255 } ] Kiểm tra kích thước bộ sưu tậpBây giờ, hãy tạo một bộ sưu tập thông thường có cùng dữ liệu chính xác Vỏ bọc1 2 3 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1tuần.stockPrice1week. tìm(). forEach(hàm (doc) { db. stockprice1week_regular. insertOne(doc); }) 1
Hãy kiểm tra tổng kích thước của hai bộ sưu tập Vỏ bọc1 2 3 4 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1tuần.stockPrice1week. thống kê(). tổng kích thước 5357568 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1week_regular.stockPrice1week_regular. thống kê(). tổng kích thước 21934080 Đúng như dự đoán, bộ sưu tập Chuỗi thời gian nhỏ hơn bốn lần so với bộ sưu tập thông thường. Ngoài ra, hãy xem xét bộ sưu tập thông thường không có bất kỳ chỉ mục phụ nào vào lúc này Truy vấn Bộ sưu tậpHãy chạy một truy vấn đơn giản để tìm ra các giá trị cổ phiếu cho một dấu thời gian cụ thể. Chúng tôi kiểm tra truy vấn trên cả hai bộ sưu tập Vỏ bọc1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1tuần.stockPrice1week. tìm( { "dấu thời gian". Ngày ISO("2021-10-23T12. 00. 00. 000Z") } ) [ { _id. ObjectId("6166dfc68f32e5d3ed3100f5"), dấu thời gian. Ngày ISO("2021-10-23T12:00:00.000Z"), siêu dữ liệu. { Tên kho. 'Apple', tiền tệ. 'Đô la' }, giá cổ phiếu. 7636. 864548363888 }, { _id. ObjectId("6166dfc68f32e5d3ed3100f6"), dấu thời gian. Ngày ISO("2021-10-23T12:00:00.000Z"), siêu dữ liệu. { Tên kho. 'Cam', tiền tệ. 'Đô la' }, giá cổ phiếu. 7607. 03756525094 }, { _id. ObjectId("6166dfc68f32e5d3ed3100f7"), dấu thời gian. Ngày ISO("2021-10-23T12:00:00.000Z"), siêu dữ liệu. { Tên kho. 'Chuối', tiền tệ. 'Euro' }, giá cổ phiếu. 7614. 360031277444 } ] [trực tiếp. mongos] chuỗi thời gian> db . stockprice1week_regular.stockPrice1week_regular. tìm( { "dấu thời gian". Ngày ISO("2021-10-23T12. 00. 00. 000Z") } ) [ { _id. ObjectId("6166dfc68f32e5d3ed3100f5"), dấu thời gian. Ngày ISO("2021-10-23T12:00:00.000Z"), siêu dữ liệu. { Tên kho. 'Apple', tiền tệ. 'Đô la' }, giá cổ phiếu. 7636. 864548363888 }, { _id. ObjectId("6166dfc68f32e5d3ed3100f6"), dấu thời gian. Ngày ISO("2021-10-23T12:00:00.000Z"), siêu dữ liệu. { Tên kho. 'Cam', tiền tệ. 'Đô la' }, giá cổ phiếu. 7607. 03756525094 }, { _id. ObjectId("6166dfc68f32e5d3ed3100f7"), dấu thời gian. Ngày ISO("2021-10-23T12:00:00.000Z"), siêu dữ liệu. { Tên kho. 'Chuối', tiền tệ. 'Euro' }, giá cổ phiếu. 7614. 360031277444 } ] Chúng tôi đã có kết quả tương tự, nhưng điều quan trọng ở đây là xem giải thích () để xem kế hoạch thực hiện. Đây là giải thích () của bộ sưu tập thông thường Vỏ bọc1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1week_regular.stockPrice1week_regular. tìm( { "dấu thời gian". Ngày ISO("2021-10-23T12. 00. 00. 000Z") } ). giải thích("executionStats") { .. . Kế hoạch chiến thắng. { giai đoạn. 'COLLSCAN', bộ lọc. { dấu thời gian. { '$eq'. Ngày ISO("2021-10-23T12. 00. 00. 000Z") } }, hướng. 'chuyển tiếp' .. . .. . thực thiThành công. true, nĐã trả lại. 3, executionTimeMillis. 200, totalKeysExamined. 0, totalDocsExamined. 299997, .. . .. . Chúng tôi đã không tạo bất kỳ chỉ mục phụ nào, vì vậy kế hoạch chiến thắng là COLLSCAN, tất cả các tài liệu phải được kiểm tra. Truy vấn mất 200 mili giây Thay vào đó, đây là giải thích () của bộ sưu tập Chuỗi thời gian Vỏ bọc1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1tuần.stockPrice1week. tìm( { "dấu thời gian". Ngày ISO("2021-10-23T12. 00. 00. 000Z") } ). giải thích("executionStats") { .. . .. . Chỉ số thực thi. { thực hiện thành công. đúng, nĐã trả lại. 3, thời gian thực hiệnMillis. 2, totalKeysExamined. 0, tổng số Tài liệu đã kiểm tra. 8, Các giai đoạn thực hiện. { giai đoạn. 'COLLSCAN', bộ lọc. { '$and'. [ { _id. { '$lte'. ObjectId("6173f940ffffffffffffffff") } }, { _id. { '$gte'. ObjectId("6172a7c00000000000000000") } }, { 'kiểm soát. tối đa. dấu thời gian'. { '$_internalExprGte'. Ngày ISO("2021-10-23T12:00:00.000Z") } }, { 'kiểm soát. tối thiểu. dấu thời gian'. { '$_internalExprLte'. Ngày ISO("2021-10-23T12:00:00.000Z") } } ] }, .. . .. . Đáng ngạc nhiên đó là COLLSCAN, nhưng với các số khác nhau. Số lượng tài liệu được kiểm tra hiện chỉ còn tám và thời gian thực hiện là hai phần nghìn giây Như đã đề cập, Chuỗi thời gian là một chế độ xem phi vật chất hóa. Nó hoạt động như một lớp trừu tượng. Dữ liệu thực tế được lưu trữ vào một bộ sưu tập hệ thống khác (hệ thống. xô. stockPrice1week) nơi tài liệu được lưu ở định dạng hơi khác. Mục tiêu của bài viết này không phải là đào sâu vào bên trong, chỉ cần lưu ý rằng định dạng lưu trữ khác nhau cho phép mongod chỉ tìm nạp một vài nhóm dữ liệu thay vì đọc mọi thứ, ngay cả khi nó được gắn cờ là COLLSCAN. Thật ngạc nhiên Điều gì xảy ra nếu tôi tạo một chỉ mục trên Bộ sưu tập thông thường?Hãy thử Vỏ bọc1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1week_regular.stockPrice1week_regular. createIndex( { "timestamp". 1 } ) dấu thời gian_1 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1week_regular.stockPrice1week_regular. getIndexes() [ { v. 2, phím. { _id. 1 }, tên. '_id_' }, { v. 2, phím. { dấu thời gian. 1 }, tên. 'timestamp_1' } ] [trực tiếp. mongos] chuỗi thời gian> db . stockprice1week_regular.stockPrice1week_regular. tìm({"dấu thời gian". Ngày ISO("2021-10-23T12. 00. 00. 000Z")}). giải thích("executionStats") { .. . .. . Kế hoạch chiến thắng. { giai đoạn. 'TÌM HIỂU', Giai đoạn đầu vào. { giai đoạn. 'IXSCAN', keyPattern. { dấu thời gian. 1 }, tên chỉ mục. 'dấu thời gian_1', .. . .. . Chỉ số thực thi. { nĐã trả lại. 3, thời gian thực hiệnMillis. 2, totalKeysExamined. 3, tổng số Tài liệu đã kiểm tra. 3, .. . Bây giờ kế hoạch chiến thắng là IXSCAN, chỉ mục mới được sử dụng. Chỉ có ba khóa được kiểm tra, ba tài liệu được kiểm tra và ba tài liệu được trả về. Truy vấn mất hai mili giây Vì vậy, nó nhanh như bộ sưu tập Chuỗi thời gian. Không có sự khác biệt lớn như vậy; Cũng lưu ý rằng hiệu suất tương tự đi kèm với chi phí có bộ sưu tập lớn hơn ở cuối vì chúng tôi đã tạo chỉ mục phụ Vỏ bọc1 2 3 4 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1week_regular.stockPrice1week_regular. thống kê(). tổng kích thước 25251840 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1tuần.stockPrice1week. thống kê(). tổng kích thước 5357568 Để có được thời gian thực hiện tương đương, giờ đây, bộ sưu tập thông thường lớn hơn năm lần so với Chuỗi thời gian Truy vấn có Bộ lọc Phạm vi Thời gianHãy kiểm tra một truy vấn khác để tìm kiếm một loạt dấu thời gian. Sau đây là các đầu ra giải thích () Vỏ bọc1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1week_regular.stockPrice1week_regular. tìm( { "dấu thời gian". { $gte. Ngày ISO("2021-10-20T00. 00. 00Z"), $lt: Ngày ISO("2021-10-20T23. 59. 59Z") } } ).explain("executionStats") { .. . Kế hoạch chiến thắng. { giai đoạn. 'TÌM HIỂU', Giai đoạn đầu vào. { giai đoạn. 'IXSCAN', keyPattern. { dấu thời gian. 1 }, .. . Chỉ số thực thi. { nĐã trả lại. 4320, thời gian thực hiệnMillis. 7, totalKeysExamined. 4320, tổng số Tài liệu đã kiểm tra. 4320, .. . Vỏ bọc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1tuần.stockPrice1week. tìm( { "dấu thời gian". { $gte. Ngày ISO("2021-10-20T00. 00. 00Z"), $lt: Ngày ISO("2021-10-20T23. 59. 59Z") } } ).explain("executionStats") { .. . .. . Kế hoạch chiến thắng. { giai đoạn. 'COLLSCAN', bộ lọc. { '$and'. [ { _id. { '$lt'. ObjectId("6170ad7f0000000000000000") } }, { _id. { '$gte'. ObjectId("616e0a800000000000000000") } }, { 'kiểm soát. tối đa. dấu thời gian'. { '$_internalExprGte'. Ngày ISO("2021-10-20T00. 00. 00. 000Z") } }, { 'kiểm soát. tối thiểu. dấu thời gian'. { '$_internalExprLt'. Ngày ISO("2021-10-20T23:59:59.000Z") } } ] }, .. . .. . Chỉ số thực thi. { thực hiện thành công. đúng, nĐã trả lại. 6, thời gian thực hiệnMillis. 6, totalKeysExamined. 0, tổng số Tài liệu đã kiểm tra. 11, .. . Giống như trước đây. Thời gian thực hiện về cơ bản là giống nhau cho cả hai truy vấn. Vấn đề chính vẫn là kích thước của bộ sưu tập thông thường lớn hơn đáng kể Chỉ có sáu tài liệu rõ ràng được trả về bởi Chuỗi thời gian, nhưng nó không. Nếu bạn thực hiện truy vấn thực, bạn sẽ nhận được 4320 tài liệu. Sáu tài liệu được đề cập bởi giải thích () đề cập đến các tài liệu phải được trả về bởi bộ sưu tập thực bên dưới chế độ xem phi vật chất hóa kiểm tra tổng hợpTrên dữ liệu Chuỗi thời gian của chúng tôi, chúng tôi muốn thực hiện một số tổng hợp. Đây là một nhiệm vụ điển hình. tính trung bình trong một khoảng thời gian, tìm giá trị tối thiểu và tối đa và các loại thống kê khác Giả sử chúng ta cần tính giá cổ phiếu trung bình hàng ngày. Chúng ta có thể sử dụng đường dẫn tổng hợp sau đây chẳng hạn Vỏ bọc1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 db. stockprice1tuần. tổng hợp([ { $dự án. { ngày. { $dateToParts. { ngày. "$timestamp" } }, giá cổ phiếu. 1 } }, { $nhóm. { _id. { ngày. { năm. "$date. năm", tháng. "$date. tháng", ngày. "$date. ngày" } }, giá trung bình. { $trung bình. "$stockprice" } } } ]) [ { _id. { ngày. { năm. 2021, tháng. 12, ngày. 4 } }, giá trung bình. 37939. 782043249594 }, { _id. { ngày. { năm. 2021, tháng. 11, ngày. 22 } }, giá trung bình. 29289. 700949196136 }, { _id. { ngày. { năm. 2021, tháng. 10, ngày. 27 } }, giá trung bình. 10531. 347070537977 }, .. . .. . Như thường lệ, chúng ta hãy xem giải thích () của tổng hợp đối với hai bộ sưu tập, chỉ tập trung vào thời gian thực hiện và tài liệu được kiểm tra Vỏ bọc1 2 3 4 5 6 7 8 9 10 11 12 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1tuần.stockPrice1week. giải thích("executionStats"). tổng hợp([ { $ . : { ngày. { $dateToParts. { ngày. "$timestamp" } }, stockPrice: 1 } }, { . $group: { _id. { ngày. { năm. "$date. năm", tháng. "$date. tháng", ngày. "$date. ngày" } }, giá trung bình: { $trung bình. "$stockPrice" } } }]) { .. . Chỉ số thực thi. { thực hiện thành công. đúng, nĐã trả lại. 300, thời gian thực hiệnMillis. 615, totalKeysExamined. 0, tổng số Tài liệu đã kiểm tra. 300, Các giai đoạn thực hiện. { giai đoạn. 'COLLSCAN', .. . Vỏ bọc1 2 3 4 5 6 7 8 9 10 11 12 [trực tiếp. mongos] chuỗi thời gian> db . stockprice1week_regular.stockPrice1week_regular. giải thích("executionStats"). tổng hợp([ { $ . : { ngày. { $dateToParts. { ngày. "$timestamp" } }, stockPrice: 1 } }, { . $group: { _id. { ngày. { năm. "$date. năm", tháng. "$date. tháng", ngày. "$date. ngày" } }, giá trung bình: { $trung bình. "$stockPrice" } } }]) { .. . Chỉ số thực thi. { thực hiện thành công. đúng, nĐã trả lại. 299997, thời gian thực hiệnMillis. 1022, totalKeysExamined. 0, tổng số Tài liệu đã kiểm tra. 299997, Các giai đoạn thực hiện. { giai đoạn. 'PROJECTION_DEFAULT', .. . Quy trình tổng hợp chạy nhanh hơn 40 phần trăm với bộ sưu tập Chuỗi thời gian. Điều này sẽ phù hợp hơn khi bộ sưu tập càng lớn Phần kết luậnMongoDB 5. 0 là phiên bản mới thú vị của cơ sở dữ liệu dựa trên tài liệu phổ biến nhất và các tính năng mới như bộ sưu tập Chuỗi thời gian và chia lại phân đoạn thật tuyệt vời Dù sao, do có nhiều thay đổi cốt lõi đối với WiredTiger và máy chủ cốt lõi được giới thiệu để hỗ trợ các tính năng mới, MongoDB 5. 0. x vẫn chưa ổn định. Chúng tôi không khuyên bạn nên sử dụng nó cho môi trường sản xuất MongoDB có tốt cho dữ liệu chuỗi thời gian không?MongoDB là cơ sở dữ liệu có mục đích chung dựa trên tài liệu với thiết kế lược đồ linh hoạt và ngôn ngữ truy vấn phong phú. Kể từ MongoDB 5. 0, MongoDB vốn hỗ trợ dữ liệu chuỗi thời gian .
Bộ sưu tập chuỗi thời gian trong MongoDB là gì?MongoDB coi các bộ sưu tập chuỗi thời gian là các chế độ xem không cụ thể hóa có thể ghi được hỗ trợ bởi một bộ sưu tập nội bộ . Khi bạn chèn dữ liệu, bộ sưu tập nội bộ sẽ tự động sắp xếp dữ liệu chuỗi thời gian thành định dạng lưu trữ được tối ưu hóa. Khi bạn truy vấn các bộ sưu tập chuỗi thời gian, bạn thao tác trên một tài liệu cho mỗi phép đo.
Cơ sở dữ liệu nào là tốt nhất cho dữ liệu chuỗi thời gian?8 cơ sở dữ liệu chuỗi thời gian hàng đầu . InfluxDB Prometheus khí cầu Dữ liệuStax nhiệm vụDB tu sĩ Dòng thời gian của Amazon phân tích xu hướng Làm cách nào để lưu trữ thời gian trong MongoDB?MongoDB lưu trữ thời gian ở dạng UTC theo mặc định và sẽ chuyển đổi bất kỳ biểu thị giờ địa phương nào sang dạng này. Các ứng dụng phải vận hành hoặc báo cáo về một số giá trị thời gian địa phương chưa sửa đổi có thể lưu trữ múi giờ cùng với dấu thời gian UTC và tính toán thời gian địa phương ban đầu trong logic ứng dụng của chúng. |