Nhận kích thước tài liệu mongodb

Đối với một trong những hợp đồng biểu diễn phụ của tôi, tôi tò mò muốn ước tính kích thước trung bình của tài liệu trông như thế nào trong bộ sưu tập MongoDB. Tôi đã làm việc trên nhiều dự án theo sở thích, một số với cơ sở dữ liệu MySQL và một số với NoSQL. Nhưng tất cả đều bắt đầu với 0 mục và không thấy ánh đèn sân khấu khi xử lý quy mô hàng triệu và hàng tỷ

Tôi luôn có ý định có một dự án đầy tham vọng sẽ xử lý các cơ sở dữ liệu khổng lồ. Và, giống như mọi người, tôi chỉ muốn đầu tư số tiền tối thiểu có thể. Vì đó là những gì bạn làm khi là một kỹ sư - cố gắng tối ưu hóa chi phí. Đặc biệt là khi bạn có nền tảng về Kỹ thuật Xây dựng trong đó Dự toán và Chi phí là một chủ đề chuyên dụng. Vì vậy, tôi muốn biết một bộ sưu tập với một triệu tài liệu sẽ tốn bao nhiêu tiền

MongoDB Atlas cung cấp dịch vụ tự động trên Azure cho 26 khu vực (theo những gì họ nói ngày nay) với chi phí $0. 28/giờ đối với khu vực westindia (Mumbai). Tham khảo — https. //www. mongodb. com/đám mây/bản đồ/azure-mongodb

Điều này sẽ giúp tính toán chi phí nếu tôi biết dung lượng lưu trữ dữ liệu mà tôi sẽ cần cho một triệu tài liệu. Và điều đó dẫn tôi đến câu hỏi - "Một bộ sưu tập cần bao nhiêu dung lượng lưu trữ với một triệu tài liệu?"

Tôi đã làm những gì các nhà phát triển thường làm, tìm kiếm trên google nhưng không tìm thấy gì thỏa mãn. Vì tôi chưa bao giờ có một dự án với quy mô như vậy nên tôi thậm chí còn không có ước tính sơ bộ. Nhưng tôi đã tìm kiếm câu trả lời. Và tôi đã làm một trong những điều yêu thích của mình — Một thử nghiệm

Cuộc thí nghiệm

Khách quan

Mục tiêu là tính toán kích thước trung bình của tài liệu trong một bộ sưu tập với một triệu tài liệu

thiết lập

Đã cài đặt MongoDB cục bộ trên máy Mac của tôi. Vì tôi đã có một số dự án clojure theo sở thích, nên tôi đã sử dụng một trong số chúng để thiết lập một dịch vụ có thể thêm một triệu mục vào DB. Mã trông giống như -

(ns my-project.db.dummies
(:require
[monger.collection :as mc] ;monger is a clojure mongodb client, more info here - http://clojuremongodb.info/
[monger.operators :refer :all]
[monger.query :refer :all]
[my-project.db.core :as db-core :refer [db]] ;a connection helper file
)
(:import org.bson.types.ObjectId))
(def ^:const COLL "dummies")(defn add-dummy
"Saves event object in the collection."
[dummy]
(mc/insert-and-return db COLL dummy)
)
(defn add-many-dummies
"adds dummy entries"
[count]
(doseq [x (range 0 count)]
(add-dummy {
:id (str (ObjectId.))
:short-field (str "some-short-field-" x)
:long-field (str "some very long field like Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." x)
:url-field (str "https://www.domain.com/some/end/point/some-very-long-hash-might-be-like-8a89597a79c0dc0a113873216ee55f83db7iqryasdhf-" x)
:short-field-one (str "this short " x)
:short-field-two (str "this short " x)
:short-field-three (str "this short " x)
}))
)

Tôi đã kết nối dịch vụ với phiên bản MongoDB cục bộ của mình và thêm các mục nhập vào bộ sưu tập 'dummies' bằng cách sử dụng chức năng add-many-dummies thông qua thay thế

Những phát hiện

Tôi đã chạy thử nghiệm cho bộ sưu tập với số lượng tài liệu là 10, 100, 1000, 10.000, 100.000 và 1.000.000

Sau đây là kết quả của thí nghiệm

Đã tạo đối tượng mẫu —

{
"id": "5d23a524e6e3b8a2dba636d0",
"short-field": "some-short-field-99999", "long-field": "some very long field like Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.99999", "url-field": "https://www.domain.com/some/end/point/some-very-long-hash-might-be-like-8a89597a79c0dc0a113873216ee55f83db7iqryasdhf-99999", "short-field-one": "this short 99999", "short-field-two": "this short 99999", "short-field-three": "this short 99999"
}

Kích thước của tài liệu và bộ sưu tập đã được tìm thấy bằng cách chạy lệnh db. người giả. stats() như sau —

Lưu ý — Để đảm bảo không bao gồm bộ nhớ cũ trong phép tính, bộ sưu tập đã bị loại bỏ trước mỗi lần lặp lại

kết luận

Vì vậy, đối với một bộ sưu tập có hàng triệu tài liệu và lược đồ tài liệu như đã đề cập ở trên, có thể kết luận rằng kích thước tài liệu trung bình là 525 byte với kích thước tổng thể của bộ sưu tập là ~0. 5GB

Cần lưu ý rằng lược đồ tài liệu được sử dụng trong mẫu này nhỏ (chỉ có 7 trường). Các tài liệu được sử dụng trong cơ sở dữ liệu thực tế chứa nhiều khóa hơn bao gồm các tài liệu lồng nhau. Kích thước trung bình của những tài liệu đó sẽ nhiều hơn thế này. Ngoài ra, kích thước chỉ mục không được bao gồm trong khi đề cập đến kích thước của bộ sưu tập cho bài viết này để đơn giản. Các chỉ mục có thể là một cân nhắc quan trọng đối với cơ sở dữ liệu phục vụ hàng triệu người và nó cũng có thể góp phần vào kích thước lưu trữ

Tôi hy vọng điều này sẽ giúp ước tính kích thước của tài liệu sẽ được yêu cầu cho ứng dụng của bạn và cho phép bạn chọn cấu hình phù hợp cho hệ thống của mình

Làm cách nào để tìm kích thước tài liệu trong MongoDB?

Nếu bạn cần trả về kích thước của tài liệu trong MongoDB, bạn có thể sử dụng cách sau. .
Toán tử đường ống tổng hợp $bsonSize
đối tượng. phương thức bsonSize()

Kích thước tài liệu trong MongoDB là gì?

Giới hạn kích thước tài liệu . Kích thước tài liệu tối đa giúp đảm bảo rằng một tài liệu không thể sử dụng quá nhiều RAM hoặc quá nhiều băng thông trong quá trình truyền. Để lưu trữ tài liệu lớn hơn kích thước tối đa, MongoDB cung cấp GridFS API. 16 megabytes. The maximum document size helps ensure that a single document cannot use excessive amount of RAM or, during transmission, excessive amount of bandwidth. To store documents larger than the maximum size, MongoDB provides the GridFS API.

Làm cách nào để kiểm tra kích thước bộ sưu tập MongoDB tính bằng gb?

MongoDB nhận kích thước bộ sưu tập tính bằng GB . Thí dụ. Ở đây, chúng tôi đang sử dụng bộ sưu tập quan hệ để tham khảo, bạn có thể kiểm tra chủ đề trước đó. Ở đây, chúng tôi đã sử dụng “1024*1024*1024” trong hàm stats() để lấy kích thước bộ sưu tập tính bằng GB. MongoDB provides the stats() function to determine document size. Example: Here, we are using the relation collection for reference you can check the previous topic. Here, we have used “1024*1024*1024” in the stats() function to get collection size in GB.

Làm cách nào để kiểm tra kích thước mảng trong MongoDB?

Toán tử $size khớp với bất kỳ mảng nào với số phần tử được chỉ định bởi đối số. Ví dụ. db. thu thập.