[DRIVERS-2581] Benchmark and use `mongocrypt_binary_t` definition to improve performance of In-Use Encryption Created: 24/Mar/23 Updated: 02/Oct/23 |
|
| Status: | Implementing |
| Project: | Drivers |
| Component/s: | Client Side Encryption, Performance |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Unknown |
| Reporter: | Jeffrey Yemin | Assignee: | Kevin Albertson |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Driver Changes: | Needed | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Quarter: | FY24Q3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Downstream Changes Summary: | Goal: Improve performance of In-Use Encryption for the workload identified in HELP-27047. Proposed changes for drivers:
Refer to the changes made for the Java driver bindings:
The benchmark may be useful for testing future performance improvements (DRIVERS-2718). Proposed changes may not apply to languages with no extra cost for calling into a C library: (C, C++, PHP via C driver) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Engineering Lead: | |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Program Manager: | |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Start date: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Driver Compliance: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description |
SummaryReduce overhead of encryption callbacks by providing bulk-oriented encryption and decryption callbacks Motivation HELP-27047 identified a slow workload with In-Use Encryption: decrypting documents with many encrypted fields. The crypto callbacks in libmongocrypt were identified as a possible cause. Driver bindings optionally set crypto callbacks to provide the crypto functions (HMAC, AES, SHA). Setting the callback enables using libmongocrypt without taking a dependency on OpenSSL or a system native crypto library. On last survey, Java, Python, C#, Ruby, Node, and Rust implement the crypto callbacks. The crypto callbacks showed in profiling HELP-27047. Who is the affected end user?Applications using implicit encryption where a single command requires many encryption/decryption operations How does this affect the end user?They are annoyed because implicit encryption/decryption is slower than they expect How likely is it that this problem or use case will occur?Fairly likely for users of implicit encryption. If the problem does occur, what are the consequences and how severe are they?It's a performance concern. Is this issue urgent?No Is this ticket required by a downstream team? No Is this ticket only for tests?No Acceptance CriteriaImplicit decryption is benchmarked. Implicit decryption performance is improved. |
| Comments |
| Comment by Githook User [ 02/Oct/23 ] |
|
Author: {'name': 'Kevin Albertson', 'email': 'kevin.albertson@mongodb.com', 'username': 'kevinAlbs'}Message: DRIVERS-2581 specify bindings benchmark (#1463) |