Ví dụ về việc đặt giá

Trang này có các ví dụ về cách tính đơn vị tính phí trong một số trường hợp phổ biến nhất. Xin lưu ý rằng mỗi truy vấn có thể khác nhau về dữ liệu được xử lý dựa trên các yếu tố như kế hoạch truy vấn, hình dạng của dữ liệu và các chỉ mục có sẵn.

Bạn nên sử dụng tính năng Giải thích truy vấn để hiểu rõ hơn về chi phí và hiệu quả của các truy vấn cụ thể.

Đọc các thao tác

Hầu hết các thao tác đọc đều liên quan đến việc thực hiện thao tác đọc tại một điểm của một tài liệu cụ thể hoặc quét một dải dữ liệu dựa trên một giá trị nhận dạng. Các thao tác đọc sẽ tiêu thụ các đơn vị đọc. Hãy xem các ví dụ sau.

Các khoản phí cho cụm từ tìm kiếm toàn văn được phân biệt giữa chi phí thực hiện tìm kiếm trên chỉ mục văn bản và chi phí truy xuất tài liệu. Chi phí thực hiện một lượt tìm kiếm trên chỉ mục văn bản được xác định bằng độ phức tạp của truy vấn và lượng dữ liệu được quét trong chỉ mục để tìm kết quả. Các yếu tố ảnh hưởng đến chi phí này bao gồm số lượng và bản chất của cụm từ tìm kiếm (ví dụ: cụm từ, cụm từ), việc có áp dụng tính điểm mức độ liên quan hay không và số lượng mục nhập chỉ mục cần được kiểm tra. Chi phí truy xuất các tài liệu liên quan dựa trên số lượng và kích thước của các tài liệu được tìm nạp sau khi giai đoạn tìm kiếm hoàn tất.

Bảng sau đây mô tả các khoản phí liên quan đến việc thực hiện truy vấn tìm kiếm toàn văn cho danh mục sản phẩm thương mại điện tử của một vườn ươm. Ví dụ này giả định một bộ sưu tập gồm 200.000 trang thông tin sản phẩm trong một bộ sưu tập, trong đó mỗi tài liệu trang thông tin sản phẩm có kích thước 2 KiB và kích thước chỉ mục tìm kiếm văn bản tương ứng là khoảng 100 MiB.

Truy vấn Ví dụ về mã Số đơn vị đọc ước tính đã sử dụng cho mỗi truy vấn Chi phí ước tính (khu vực: us-central1 tính bằng USD)
Tìm kiếm một sản phẩm khay phẳng hiếm gặp có tên "dry water" (nước khô), dẫn đến việc truy xuất 3 tài liệu.
db.products.find(
  {$text: {$search: '"dry water" stack flat'}}
);

Tổng cộng 10 đơn vị đọc

Dựa trên 7 đơn vị cho tính năng tìm kiếm toàn văn bản và 3 đơn vị bổ sung cho các tài liệu được trả về.

0,5 USD cho mỗi triệu truy vấn
Tìm kiếm tất cả cây có múi trồng trong nhà, dẫn đến việc truy xuất 36 tài liệu.
db.products.find(
  {$text: {$search: '"indoor" "citrus" "tree"'}}
);

Tổng cộng 42 đơn vị đã đọc

Dựa trên 6 đơn vị cho tính năng tìm kiếm toàn văn bản và 36 đơn vị bổ sung cho các tài liệu được trả về.

2,10 USD cho mỗi triệu lượt truy vấn
Tìm kiếm chậu trồng cây ban công khi có nhiều sản phẩm phù hợp. Sắp xếp kết quả theo mức độ liên quan và giới hạn ở 50 kết quả tìm kiếm hàng đầu.
db.products.find(
  {$text: {$search: 'balcony planter'}}
).sort({score: {$meta: "textScore"}}).limit(50);

Tổng cộng 75 đơn vị đã đọc

Dựa trên 25 đơn vị cho tính năng tìm kiếm toàn văn bản và 50 đơn vị bổ sung cho các tài liệu được trả về.

3,75 USD cho mỗi triệu truy vấn

Các ví dụ này minh hoạ mức độ ảnh hưởng của các mẫu truy vấn khác nhau đến chi phí:

  • Cụm từ tìm kiếm "dry water" (nước khô) bao gồm một cụm từ ("dry water") và các cụm từ bổ sung. Cụm từ tìm kiếm phức tạp hơn vì công cụ truy vấn cần kiểm tra khoảng cách và thứ tự của mã thông báo, góp phần tạo nên 7 đơn vị đọc cho giai đoạn tìm kiếm. Vì có rất ít tài liệu khớp nên chi phí truy xuất tài liệu thấp.
  • Cụm từ tìm kiếm "cây" "có múi" "trong nhà" sẽ tìm kiếm 3 cụm từ riêng biệt. Mặc dù ít phức tạp hơn một chút so với cụm từ tìm kiếm, nhưng tìm kiếm theo từ vẫn yêu cầu bạn phải tra cứu nhiều mã thông báo. Chi phí quét chỉ mục tìm kiếm của truy vấn này thấp hơn một chút (6 đơn vị đọc) so với ví dụ về "nước khô", nhưng có 36 tài liệu được trả về, làm tăng tổng chi phí.
  • Cụm từ tìm kiếm chậu trồng cây ban công có chi phí tìm kiếm toàn văn cao nhất là 25 đơn vị với mức chênh lệch đáng kể. Điều này chủ yếu là do yêu cầu kết quả được sắp xếp theo mức độ liên quan (.sort({score: {$meta: "textScore"}})) đối với những cụm từ khớp với nhiều tài liệu. Để xác định 50 kết quả phù hợp nhất, công cụ truy vấn phải tìm tất cả các kết quả trùng khớp tiềm năng cho "ban công" hoặc "chậu cây", tính điểm phù hợp cho từng kết quả, rồi sắp xếp chúng. Quá trình tính điểm và sắp xếp này trên một số lượng lớn các đề xuất trong chỉ mục đòi hỏi nhiều sức mạnh tính toán, mặc dù cuối cùng chỉ có 50 tài liệu được truy xuất. Độ rộng của các cụm từ kết hợp với chi phí chung của việc tính điểm mức độ liên quan khiến giai đoạn tìm kiếm tốn kém hơn.

Truy vấn không gian địa lý

Phí cho các truy vấn không gian địa lý được xác định theo độ phức tạp của truy vấn và các điều kiện cũng như cách sắp xếp cụ thể được sử dụng, cũng như các tài nguyên cần thiết để quét tất cả dữ liệu trong chỉ mục không gian địa lý có liên quan.

Bảng sau đây mô tả các khoản phí liên quan đến việc thực hiện các truy vấn không gian địa lý cho một ứng dụng bản đồ. Ví dụ này giả định một tập hợp gồm 1.000.000 tài liệu đại diện cho các địa điểm yêu thích, trong đó mỗi tài liệu về địa điểm yêu thích có kích thước 1KiB và kích thước chỉ mục không gian địa lý tương ứng là khoảng 60MiB.

Truy vấn Ví dụ về mã Số đơn vị đọc ước tính đã sử dụng cho mỗi truy vấn Chi phí ước tính (khu vực: us-central1 tính bằng USD)
Tìm tất cả các địa điểm yêu thích trong bán kính tối đa 10 km, trả về 10 kết quả trùng khớp.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 10000
    }}})

Tổng cộng 16 đơn vị đã đọc.

Dựa trên 6 đơn vị đọc cho truy vấn không gian địa lý và 10 đơn vị bổ sung cho các tài liệu được trả về.

0,80 USD cho mỗi triệu truy vấn
Tìm tất cả các địa điểm yêu thích trong phạm vi tối đa 100 km và trả về 10 địa điểm yêu thích gần nhất trong số 1.000 kết quả trùng khớp
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 100000
    }}}).limit(10)

Tổng cộng 19 đơn vị đọc.

Dựa trên 9 đơn vị đọc cho truy vấn không gian địa lý và 10 đơn vị bổ sung cho các tài liệu được trả về.

0,95 USD cho mỗi triệu truy vấn

Các ví dụ này minh hoạ mức độ ảnh hưởng của các mẫu truy vấn khác nhau đến chi phí:

  • Truy vấn bán kính 10 km: Truy vấn này quét một khu vực địa lý nhỏ hơn. Vì chỉ tìm thấy 10 kết quả trùng khớp trong bán kính 10 km này, nên công cụ truy vấn phải thực hiện ít thao tác hơn để xác định và sắp xếp các điểm này theo khoảng cách (như $near ngầm thực hiện). Điều này dẫn đến chi phí quét chỉ mục thấp hơn là 6 đơn vị đọc.
  • Cụm từ tìm kiếm bán kính 100 km: Cụm từ tìm kiếm này bao gồm một khu vực rộng lớn hơn nhiều. Cụm từ tìm kiếm này tìm thấy 1.000 kết quả có thể phù hợp trong bán kính 100 km. Để thực hiện yêu cầu về 10 điểm gần nhất, công cụ truy vấn cần tính toán khoảng cách và sắp xếp một tập hợp lớn hơn nhiều các điểm đề xuất (tối đa 1.000 điểm) trong chỉ mục. Công việc tính toán bổ sung này để sàng lọc và xếp hạng nhiều điểm hơn là lý do khiến chi phí truy vấn không gian địa lý cao hơn ở mức 9 đơn vị đọc, so với truy vấn 10 km, mặc dù cũng chỉ trả về 10 tài liệu.

Đọc theo điểm

Ví dụ về cách tính phí cho hoạt động đọc theo điểm:

  • Đọc điểm của một tài liệu 1 KiB. Tiêu thụ: 1 đơn vị đọc
  • Đọc theo điểm của một tài liệu 4 KiB. Tiêu thụ: 1 đơn vị đọc
  • Đọc theo điểm của một tài liệu 1 MiB. Tiêu thụ: 256 đơn vị đọc
  • Đọc theo điểm của 100 tài liệu, mỗi tài liệu 1 KiB. Tiêu thụ: 100 đơn vị đọc

Đang quét

Các ví dụ sau đây bao gồm những trường hợp quét tài liệu hoặc mục nhập chỉ mục.

Quét tài liệu

  • Truy vấn quét 100 tài liệu, mỗi tài liệu 1 KiB. Sử dụng: 25 đơn vị đọc

Quét chỉ mục

Chi phí quét, tính bằng byte, là như nhau bất kể đó là tài liệu hay chỉ mục đang được quét. Tuy nhiên, các mục chỉ mục thường có kích thước nhỏ hơn. Do đó, các chỉ mục này thường có thể cung cấp một cách thức quét dữ liệu hiệu quả hơn về chi phí.

  • Truy vấn quét 100 mục nhập chỉ mục, mỗi mục nhập 1 KiB. Tiêu thụ: 25 đơn vị đọc.
  • Truy vấn quét 100 mục nhập chỉ mục, mỗi mục nhập 128 byte. Tiêu thụ: 4 đơn vị đọc.

Kích thước tối thiểu của tài liệu hoặc mục nhập chỉ mục

Trong một số trường hợp, bạn không cần đọc nội dung của một tài liệu hoặc mục nhập chỉ mục để đáp ứng một truy vấn. Điều này bao gồm các truy vấn đếm đơn giản, chẳng hạn như đếm tổng số tài liệu trong một bộ sưu tập. Trong những trường hợp này, mỗi mặt hàng được quét sẽ có chi phí tối thiểu là 32 byte.

  • Đếm số lượng tài liệu trong một bộ sưu tập. Truy vấn quét 1.000 mục trong bộ sưu tập. Tiêu thụ: 8 đơn vị đọc.

Kết hợp giữa quét và đọc điểm

Nhiều truy vấn thực hiện kết hợp giữa thao tác quét và đọc tại một điểm để đáp ứng một thao tác.

  • Truy vấn quét 128 mục nhập chỉ mục, mỗi mục nhập 256 byte và thực hiện thao tác đọc tại một điểm của 128 tài liệu, mỗi tài liệu 4 KiB. Tiêu thụ: 136 đơn vị đọc, bao gồm:
    • 128 đơn vị đọc cho các lượt đọc theo điểm
    • 8 đơn vị đọc cho các lượt quét chỉ mục

Giải thích truy vấn

Query Explain giúp bạn hiểu cách cơ sở dữ liệu thực thi các truy vấn của bạn. Thông tin chi tiết được cung cấp có thể giúp bạn tối ưu hoá các truy vấn.

Các chi phí sau đây sẽ áp dụng khi bạn sử dụng tính năng Giải thích truy vấn:

  • Giải thích truy vấn thực thi truy vấn: Áp dụng chi phí truy vấn.
  • Truy vấn Giải thích chỉ sử dụng lựa chọn kế hoạch. Tiêu thụ: 1 đơn vị đọc (chi phí tối thiểu của một truy vấn)

Thao tác ghi

Các thao tác ghi (tạo, cập nhật và xoá) được tính phí dựa trên kích thước của các tài liệu và chỉ mục được tạo, sửa đổi hoặc xoá trong quá trình thực hiện thao tác. Các thao tác ghi sẽ tiêu thụ đơn vị ghi. Các đơn vị ghi được tính theo các phần 1 KiB.

Các thao tác ghi đơn giản, chẳng hạn như cập nhật theo mã nhận dạng tài liệu, chỉ phát sinh chi phí cho các thao tác ghi. Các thao tác ghi yêu cầu truy vấn để đáp ứng thao tác sẽ phát sinh thêm chi phí đọc liên quan đến truy vấn.

Hãy xem các ví dụ sau.

Tạo

  • Tạo một tài liệu mới có kích thước 10 KiB mà không có chỉ mục. Tiêu thụ: 10 đơn vị ghi
  • Tạo một tài liệu 1 KiB có 1 mục nhập chỉ mục 256 byte trong bộ sưu tập. Tiêu thụ: 2 đơn vị ghi

Cập nhật

  • Tìm một tài liệu 10 KiB theo mã nhận dạng tài liệu và cập nhật mà không có chỉ mục nào trên bộ sưu tập. Tiêu thụ: 10 đơn vị ghi
  • Tìm một tài liệu 1 KiB theo mã nhận dạng tài liệu và cập nhật 1 trường bằng 1 mục nhập chỉ mục có kích thước 256 byte. Tiêu thụ: 3 đơn vị ghi. Lưu ý: Việc cập nhật một mục trong chỉ mục trong trường hợp này sẽ tiêu tốn 2 đơn vị ghi – một để xoá và một để tạo lại mục trong chỉ mục.
  • Tìm một tài liệu 1 KB theo mã nhận dạng tài liệu và không cập nhật nội dung nào (không có thay đổi). Tiêu thụ: 1 đơn vị ghi (chi phí ghi tối thiểu)
  • Truy vấn tất cả tài liệu 1 KiB trong một bộ sưu tập, quét 1.000 tài liệu và chèn một trường mới có kích thước 256 byte mà không có chỉ mục nào trên bộ sưu tập: 1.000 đơn vị đọc và 1.000 đơn vị ghi.

Xoá

  • Xoá một tài liệu 1 KiB có 1 chỉ mục trong bộ sưu tập. Tiêu thụ: 2 đơn vị ghi
  • Xoá một tài liệu 1 KiB không có chỉ mục trong bộ sưu tập. Tiêu thụ: 1 đơn vị ghi

Bản dựng chỉ mục

Hoạt động tạo chỉ mục tính phí cho các mục chỉ mục được tạo hoặc sửa đổi trong quá trình tạo. Các chi phí này phát sinh bất cứ khi nào một định nghĩa chỉ mục được thêm hoặc xoá. Các mục nhập chỉ mục được tính phí giống như các thao tác ghi phát sinh 1 đơn vị ghi cho mỗi 1KiB.

  • Tạo một chỉ mục mới cho một bộ sưu tập chứa 500 tài liệu, mỗi mục chỉ mục được tạo có kích thước 1 KiB. Tiêu thụ 500 đơn vị ghi.
  • Xoá một chỉ mục hiện có cho một bộ sưu tập chứa 500 tài liệu, mỗi mục nhập chỉ mục bị xoá có kích thước 1 KiB. Tiêu thụ 500 đơn vị ghi.