github.com/m3db/m3@v1.5.0/src/m3ninx/index/segment/fst/README.md (about) 1 FS Segment 2 =========== 3 4 - Version 1.1: Adds support for a metadata proto object per Field. This is used to 5 store an additional postings offset per Field to a PostingsList comprising the union 6 of all known PostingsList across all known Terms per Field. 7 8 ``` 9 ┌───────────────────────────────┐ ┌──────────────────────────────────────┐ 10 │ FST Fields File │ │ FST Terms File │ 11 │-------------------------------│ │--------------------------------------│ 12 │- Vellum V1 Format │ │`n` records, each: │ 13 │- []byte -> FST Terms Offset ├─────┐ │ - metadata proto (`md-size` bytes) │ 14 └───────────────────────────────┘ │ │ - md-size (int64) │ 15 │ │ - fst payload (`fst size` bytes) │ 16 │ │ - fst size (int64) │ 17 └─────▶│ - magic number (int64) │ 18 │ │ 19 │Payload: │ 20 │(1) Vellum V1 FST ├─┐ 21 │[]byte -> Postings Offset │ │ 22 │ │ │ 23 │(2) Metadata Proto Bytes │ │ 24 │Field Postings Offset │ │ 25 └──────────────────────────────────────┘ │ 26 ┌───────────────────────────────┐ │ 27 │ Postings Data File │ │ 28 │-------------------------------│ │ 29 │`n` records, each: │ │ 30 │ - payload (`size` bytes) │ │ 31 │ - size (int64) │ │ 32 │ - magic number (int64) │◀─┘ 33 │ │ 34 │Payload: │ 35 │- Pilosa Bitset ├──┐ 36 ┌───────────────────────────┐ │- List of doc.ID │ │ 37 │ Documents Data File │ └───────────────────────────────┘ │ 38 │------------------------- │ │ 39 │'n' records, each: │ ┌─────────────────────────┐ │ 40 │ - Magic Number (int64) │ │ Documents Index File │ │ 41 │ - Valid (1 byte) │ │-------------------------│ │ 42 │ - Size (int64) │ │- Magic Number (int64) │ │ 43 │ - Payload (`size` bytes) │ │- Num docs (int64) │ │ 44 └───────────────────────────┘ ┌───────│- Base Doc.ID `b` (int64)│◀─┘ 45 ▲ │ │- Doc `b` offset (int64) │ 46 │ │ │- Doc `b+1` offset │ 47 └──────────────────────┘ │... │ 48 │- Doc `b+n-1` offset │ 49 └─────────────────────────┘ 50 51 ``` 52 53 54 - Version 1.0: Initial Release. 55 56 ``` 57 58 ┌───────────────────────────────┐ ┌───────────────────────────────┐ 59 │ FST Fields File │ │ FST Terms File │ 60 │-------------------------------│ │-------------------------------│ 61 │- Vellum V1 FST │ │`n` records, each: │ 62 │- []byte -> FST Terms Offset │─────┐ │ - payload (`size` bytes) │ 63 └───────────────────────────────┘ │ │ - size (int64) │ 64 └────▶│ - magic number (int64) │ 65 │ │ 66 │Payload: │ 67 │- Vellum V1 FST │ 68 │- []byte -> Postings Offset │ 69 └───────────────────────────────┘ 70 ┌───────────────────────────────┐ │ 71 │ Postings Data File │ │ 72 │-------------------------------│ │ 73 │`n` records, each: │ │ 74 │ - payload (`size` bytes) │ │ 75 │ - size (int64) │ │ 76 │ - magic number (int64) │◀──────────────────┘ 77 │ │ 78 │Payload: │ 79 │- Pilosa Bitset │ 80 │- List of doc.ID │ 81 └──────────┬────────────────────┘ 82 │ 83 │ 84 │ 85 │ ┌──────────────────────────┐ ┌───────────────────────────┐ 86 │ │ Documents Index File │ │ Documents Data File │ 87 │ │--------------------------│ │------------------------- │ 88 │ │- Base Doc.ID `b` (uint64)│ │'n' records, each: │ 89 │ │- Doc `b` offset (uint64) │ ┌─────▶│ - ID (bytes) │ 90 │ │- Doc `b+1` offset │ │ │ - Fields (bytes) │ 91 └──────▶│... ├────┘ └───────────────────────────┘ 92 │- Doc `b+n-1` offset │ 93 └──────────────────────────┘ 94 ```