-
Type: New Feature
-
Resolution: Done
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Networking, Write Ops
MongoDB's legacy OP_INSERT, OP_UPDATE, and OP_REMOVE wire protocol operations don't return a response. This allows users to write applications that provide good write throughput with very low latency, assuming they aren't concerned with individual failed writes (for example, storing clickstream data for later aggregate analysis). The write commands introduced in MongoDB 2.6 always return a response regardless of the w value passed for writeConcern. If / when legacy write operations are removed from the server, application developers will no longer have a way to achieve the same low latency write performance. This is particularly a problem for client languages that provide no real parallelism (CPython / pypy, Ruby MRI), no usable threading support (Perl) or no threads of any kind (PHP).
One solution to this problem could be to provide a streaming write API, in addition to the existing RPC model. Clients could start a write session with the server, pushing mixed write operations (rather than batches of the same type of write operation required by existing write commands), then receive a write result when the session is closed.
- depends on
-
SERVER-28510 Make Ingress and Egress networking layer support fire and forget over OP_MSG
- Closed
- is related to
-
SERVER-19287 Support unacknowledged operations via OP_COMMAND
- Closed
- related to
-
DRIVERS-266 Ensure spec compliance for unacknowledged write concerns.
- Closed
-
CDRIVER-786 Using w=-1 write concern causes "invalid response_to" cursor errors
- Closed