Uploaded image for project: 'Drivers'
  1. Drivers
  2. DRIVERS-2862

Benchmark Collection and Client bulkWrite

    • Needed
    • Hide

      Summary of necessary driver changes

      • Implement the six new benchmarks added in the benchmark spec here
      • If your Evergreen benchmark task name includes the server version, consider removing the version from the task name. This way, you won't "lose" history each time you update the server version.
      Show
      Summary of necessary driver changes Implement the six new benchmarks added in the benchmark spec here If your Evergreen benchmark task name includes the server version, consider removing the version from the task name. This way, you won't "lose" history each time you update the server version.
    • $i18n.getText("admin.common.words.hide")
      Key Status/Resolution FixVersion
      CDRIVER-5642 Backlog
      CXX-3078 Backlog
      CSHARP-5203 Done 3.2.0
      GODRIVER-3287 Needs Triage
      JAVA-5545 Backlog
      NODE-6292 Backlog
      MOTOR-1346 Duplicate
      PHPLIB-1494 Backlog
      RUBY-3522 Needs Triage
      RUST-2004 Needs Triage
      PYTHON-4833 Backlog 4.12
      $i18n.getText("admin.common.words.show")
      #scriptField, #scriptField *{ border: 1px solid black; } #scriptField{ border-collapse: collapse; } #scriptField td { text-align: center; /* Center-align text in table cells */ } #scriptField td.key { text-align: left; /* Left-align text in the Key column */ } #scriptField a { text-decoration: none; /* Remove underlines from links */ border: none; /* Remove border from links */ } /* Add green background color to cells with FixVersion */ #scriptField td.hasFixVersion { background-color: #00FF00; /* Green color code */ } #scriptField td.willNotDo { background-color: #FF0000; /* Red color code */ } /* Center-align the first row headers */ #scriptField th { text-align: center; } Key Status/Resolution FixVersion CDRIVER-5642 Backlog CXX-3078 Backlog CSHARP-5203 Done 3.2.0 GODRIVER-3287 Needs Triage JAVA-5545 Backlog NODE-6292 Backlog MOTOR-1346 Duplicate PHPLIB-1494 Backlog RUBY-3522 Needs Triage RUST-2004 Needs Triage PYTHON-4833 Backlog 4.12

      Summary

      Benchmark Collection::bulkWrite and Client::bulkWrite

      Motivation

      DRIVERS-716 adds Client::bulkWrite. A main motivation is improved performance noted in Product Description: Bulk Write API 2.0:

      Improve write performance by reducing the number of round trips.

      When Client::bulkWrite saves round-trips, it may significantly improve performance. However, BulkWrite Syntax Investigation notes:

      Why is the current syntax slower than the alternate syntax?
      Requests of the current syntax take longer to parse on the server compared to requests of the alternate syntax due to the format of the data.

      During testing we noticed that constructing the request on the client side was taking longer with the current syntax. We will have to defer to drivers to determine the performance implications of both syntaxes with regards to request construction.

      Who is the affected end user?

      Users wanting to use the new Client::bulkWrite.

      How does this affect the end user?

      Measuring may help inform future improvements to Client::bulkWrite, possibly resulting in improved performance.

      How likely is it that this problem or use case will occur?

      Not applicable?

      If the problem does occur, what are the consequences and how severe are they?

      Not applicable?

      Is this issue urgent?

      No.

      Is this ticket required by a downstream team?

      No.

      Is this ticket only for tests?

      Yes.

      Acceptance Criteria

      Benchmark Collection::bulkWrite and Client::bulkWrite with mixed operations (e.g. insert + update) in the same namespace. Expect a significant increase in throughput due to saved round trips.

      Benchmark Collection::bulkWrite and Client::bulkWrite with insert-only operations in the same namespace. Expect an insignificant change in throughput due to similar number of round trips.

      Additional Information

      Consider adding benchmarks to MongoDB Driver Performance Benchmarking. The Small doc bulk insert and Large doc bulk insert benchmarks may be sufficient for benchmarking Collection::bulkWrite with insert-only operations.

      Rust initially added Client::bulkWrite but does not implement Collection::bulkWrite. Suggest initially implementing the benchmarks in a driver that has both.

            Assignee:
            adelin.mbidaowona@mongodb.com Adelin Mbida Owona
            Reporter:
            kevin.albertson@mongodb.com Kevin Albertson
            Boris Dogadov Boris Dogadov
            Esha Bhargava Esha Bhargava
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated: