...
- Proxy receives a delete request, parse `expr` to get primary keys, then split into insert channels by primary keys (done)
- DataNode receives a delete request from the insert channel, save it in buffer, and write it into the delta channel
- when DataNode start up
- load all segments info from Minio into memory (done)
- load all segments' deleted ids from Minio into in-memory structure delBuf
- update datanode flowgraph
- when DDNode receive DeleteMsg, save it into FlowGraphMsg structure, and send FlowGraphMsg to next node InsertBufferNode (done)
- when InsertBufferNode receive FlowGraphMsg, process InsertMsg in it, then wrapper DeleteMsg into another FlowGraphMsg and sent it to next node DeleteNode (done)
- when DeleteNode receive FlowGraphMsg, process DeleteMsg in it, save deleted ids and timestamps into delBuf (done)
- update DeleteNode to handle flushMsg
- add another flushChan for DeleteNode (doing)
- when DeleteNode receive flushMsg, save all data in delBuf into Minio
- when DataNode start up
...