PragmaTwice opened a new issue, #2329:
URL: https://github.com/apache/kvrocks/issues/2329

   ### Search before asking
   
   - [X] I had searched in the 
[issues](https://github.com/apache/kvrocks/issues) and found no similar issues.
   
   
   ### Motivation
   
   AS IS: (InernalKey encoding)
   (`key` is omitted, actually it's InternalKey `namespace | (slot num) | index 
name`)
   ```
   search data type metadata:
   
   key -> metadata flag | expire | version | size | on_data_type (HASH or JSON)
   
   prefixes encoding:
   
   key | version | PREFIXES -> prefix1 prefix2 ...
   
   tag field metadata encoding:
   
   key | version | TAG_FIELD_META | field name -> field flag | separator | case 
sensitive
   
   tag field index encoding:
   
   key | version | TAG_FIELD | field name | tag | key -> (nil)
   
   numeric field metadata encoding:
   
   key | version | NUM_FIELD_META | field name -> field flag
   
   numeric field index encoding:
   
   key | version | NUM_FIELD | field name | ordered floating number | key -> 
(nil)
   
   field flag:
   
   |              8 bit              |
   |---------------------------------|
   |  noindex: 1bit | reserved: 7bit |
   ```
   
   TO BE: (new encoding)
   ```
   search data type metadata:
   
   ns | INDEX_META | index name ->  index flag | on_data_type (HASH or JSON)
   
   prefixes encoding:
   
   ns | PREFIXES | index name -> prefix1 prefix2 ...
   
   field alias encoding:
   
   ns | FIELD_ALIAS | index name | alias name -> field name
   
   tag field metadata encoding:
   
   ns | FIELD_META | index name | field name -> field flag | separator | case 
sensitive
   
   numeric field metadata encoding:
   
   ns | FIELD_META | index name | field name -> field flag
   
   tag field index encoding:
   
   ns | FIELD | index name | field name | TAG | tag | key -> (nil)
   
   numeric field index encoding:
   
   ns | FIELD | index name | field name | NUMERIC | ordered floating number | 
key -> (nil)
   
   field flag:
   
   |              8 bit                                 |
   |----------------------------------------------------|
   |  noindex: 1bit | field type: 5bit | reserved: 2bit |
   
   field type:
   TAG     1
   NUMERIC 2
   ```
   
   benefits:
   - we can iterate all index metadata via a rocksdb iterator
   - remove useless fields in index metadata
   - field name is unique regardless of field type
   - prefix compression can work better
   
   ### Solution
   
   _No response_
   
   ### Are you willing to submit a PR?
   
   - [ ] I'm willing to submit a PR!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to