...
Code Block | ||
---|---|---|
| ||
def delete(self, condition=None)->MutationResult: """ Delete entities by primary keys. Example: client.delete("_id in [1,10,100]") :param condition: an expression indicates whether an entity should be deleted :type condition: str """ |
Design Details
In Milvus, Proxy maintains 2 Pulsar channels for each collection:
...
Proposal delete operation persistent
- DataNode subscribe the insert channel
- Proxy receives a delete request, split into insert channels by primary keys
- DataNode receives a delete request from the insert channel, save it in buffer, and write it into the delta channel
- ...
- DataNode receives a flush request, write out the deletions saved above
- DataNode notifies IndexNode to building indexes
- finish
Proposal delete operation serving search(sealed+growing)
- QueryNode subscribe the insert channel
- QueryNode load the checkpoint and recovery by the checkpoint
- Proxy receives a delete request, split into insert channels by primary keys
- QueryNode retrieves a delete request from the insert channel, judges the segment to which each deletion belongs, and updates the Inverted Delta Logs(IDL)
- ...
- QueryNode retrieves a search request, search on each segment
- finish
...