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

Benchmark Collection and Client bulkWrite

    • Needed
    • Hide

      Summary of necessary driver changes

      •  

      Commits for syncing spec/prose tests
      (and/or refer to an existing language POC if needed)

      •  

      Context for other referenced/linked tickets

      •  
      Show
      Summary of necessary driver changes   Commits for syncing spec/prose tests (and/or refer to an existing language POC if needed)   Context for other referenced/linked tickets  
    • $i18n.getText("admin.common.words.hide")
      Key Status/Resolution FixVersion
      CDRIVER-5642 Blocked
      CXX-3078 Blocked
      CSHARP-5203 Blocked
      GODRIVER-3287 Blocked
      JAVA-5545 Blocked
      NODE-6292 Blocked
      MOTOR-1346 Blocked
      PYTHON-4578 Done
      PHPLIB-1494 Blocked
      RUBY-3522 Blocked
      RUST-2004 Blocked
      $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 */ } /* Center-align the first row headers */ #scriptField th { text-align: center; } Key Status/Resolution FixVersion CDRIVER-5642 Blocked CXX-3078 Blocked CSHARP-5203 Blocked GODRIVER-3287 Blocked JAVA-5545 Blocked NODE-6292 Blocked MOTOR-1346 Blocked PYTHON-4578 Done PHPLIB-1494 Blocked RUBY-3522 Blocked RUST-2004 Blocked

      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:
            Unassigned Unassigned
            Reporter:
            kevin.albertson@mongodb.com Kevin Albertson
            Kevin Albertson Kevin Albertson
            Esha Bhargava Esha Bhargava
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: