...
- Proto changed for Query
Code Block |
---|
// internal/proto/milvus.proto
message QueryResults {
...
- repeated schema.FieldData fields_data = 2;
+ bytes batch_record = 2;
} |
Design Details(required)
Describe the new thing you want to do in appropriate detail. This may be fairly extensive and have large subsections of its own. Or it may be a few sentences. Use judgement based on the scope of the change.
## Compatibility, Deprecation, and Migration Plan(optional)
- What impact (if any) will there be on existing users?
- If we are changing behavior how will we phase out the older behavior?
- If we need special migration tools, describe them here.
- When will we remove the existing behavior?
After this MEP, Milvus will not be compatible with previous Milvus 2.0.0-rcX, because:
- the proto format between SDK and proxy changed
- binlog file format changed
We divide this MEP into 2 stages, all compatibility changes will be achieved in Stage 1 before Milvus 2.0.0, other internal changes can be left later.
Stage 1
- Update InsertRequest in milvus.proto, change Insert to use Arrow format
- Update SearchRequest/Hits in milvus.proto, and SearchResultData in schema.proto, change Search to use Arrow format
- Update QueryResults in milvus.proto, change Query to use Arrow format
- upgrade to Arrow-5.0.0
- Change FillTargetEntry to column-based
- Update Storage module to write Parquet from arrow directlyArrow, or read Arrow from Parquet directly. Write one Segment into one Parquet file.
Stage 2
- Upgrade C++ Arrow module used in Storage from version 2.0.0 to 5.0.0
- Remove all internal row-based data structure, including "RowData" in internalpb.InsertRequest, "row_data" in milvuspb.Hits, "row_data_" in C++ SearchResult.
- Optimize search result flow
Test Plan(required)
Pass all CI flows
...