Skip to content

jobala/petro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

petro

A simple key value storage engine

Getting Started

Installation

go get github.com/jobala/petro

Put

store, err := index.New[string, int]("index", dbFile)
ok, err := store.Put("age", 25)

Get

store := index.New[string, int]("index", dbFile)
val, err := store.Get("age")

Delete

store := index.New[string, int]("index", dbFile)
val, err := store.Delete("age")

PutBatch

ages := map[string]int{
    "john": 30,
    "jane": 20,
    "doe": 45
}

store := index.New[string, int]("index", dbFile)
err := store.PutBatch(ages)

GetKeyRange

ages := map[string]int{
    "john": 30,
    "jane": 20,
    "doe": 45
}

store := index.New[string, int]("index", dbFile)
store.GetKeyRange("doe", "jane")

Iterate

ages := map[string]int{
    "john": 30,
    "jane": 20,
    "doe": 45
}

store := index.New[string, int]("index", dbFile)
storeIter := store.GetIterator()

for !storeIter.IsEnd() {
    key, val, err := storeIter.Next()
}

durability

call store.flush() to ensure that your data is written to disk

Design Notes

Roadmap

  • Disk Management
  • Bufferpool Management
  • Index Management
    • GetValue
    • Insert
    • Iterator
    • Delete
    • Support duplicate keys
  • Transactions
  • Recovery

About

A simple key value storage engine

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages