Skip to content

Latest commit

 

History

History

lsm

Disk file layout

        DataBlock                                                                    
 ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─                                                             
   ┌──────────────────┐ │                                                            
 │ │       Kv#1       │                                                              
   ├──────────────────┤ │                                                            
 │ │       Kv#2       │                                                              
   ├──────────────────┤ │                                           IndexBlock       
 │ │       Kv#3       │  ◀───┐                               ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 
   ├──────────────────┤ │    │                                 ┌──────────────────┐ │
 │ │       ...        │      │                               │ │     lastKv#1     │  
   ├──────────────────┤ │    │                                 ├──────────────────┤ │
 │ │       Kv#n       │      │                            ┌ ─│■│     offset#1     │  
   └──────────────────┘ │    │                                 ├──────────────────┤ │
 └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─     │                            │  │ │      size#1      │  
                             │                                 ├──────────────────┤ │
                             │     ┌──────────────────┐   │  │ │       ...        │  
                             └─────│     block#1      │◀ ─     ├──────────────────┤ │
       MetaBlock                   ├──────────────────┤      │ │     lastKv#n     │  
┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─            │     block#2      │        ├──────────────────┤ │
  ┌──────────────────┐ │           ├──────────────────┤   ┌ ─│■│     offset#n     │  
│ │     fileSize     │             │     block#3      │        ├──────────────────┤ │
  ├──────────────────┤ │           ├──────────────────┤   │  │ │      size#n      │  
│ │    blockCount    │             │       ...        │        └──────────────────┘ │
  ├──────────────────┤ │           ├──────────────────┤   │  └ ─ ─ ─ ─ ─ ▲ ─ ─ ─ ─ ─ 
│ │   indexOffset    │─────┐       │     block#n      │◀ ─               │           
  ├──────────────────┤ │   │       ├──────────────────┤                  │           
│ │    indexSize     │     └─────▶ │    indexBlock    │──────────────────┘           
  ├──────────────────┤ │           ├──────────────────┤                              
│ │      magic       │      ┌──────│    metaBlock     │                              
  └──────────────────┘ │    │      └──────────────────┘                              
└ ─ ─ ─ ─ ─ ▲ ─ ─ ─ ─ ─     │                                                        
            │               │                                                        
            └───────────────┘