Code
Core flow in a few tabs.
Core usage patterns in a compact view.
Connect
Write
Read
Tail
Compact
ctx := context.Background ()
store, err := blobstore.Open (ctx, "s3://my-bucket?region=us-east-1" , "db1" )
db, err := isledb.OpenDB (ctx, store, isledb.DBOptions{})
defer db.Close ()
writer, _ := db.OpenWriter (ctx, isledb.DefaultWriterOptions ())
defer writer.Close ()
writer.Put ([]byte ("k" ), []byte ("v" ))
writer.PutWithTTL ([]byte ("session" ), data, 24*time.Hour)
writer.Flush (ctx)
reader, _ := isledb.OpenReader (ctx, store, isledb.ReaderOpenOptions{CacheDir: "./cache" })
defer reader.Close ()
value, ok, _ := reader.Get (ctx, []byte ("k" ))
rows, _ := reader.Scan (ctx, []byte ("a" ), []byte ("z" ))
tr, _ := isledb.OpenTailingReader (ctx, store, isledb.TailingReaderOpenOptions{})
defer tr.Close ()
_ = tr.Start ()
_ = tr.Tail (ctx, isledb.TailOptions{}, func (kv isledb.KV) error {
return nil
})
// Merge compactor for KV workloads
mergeCompactor, _ := db.OpenCompactor (ctx, isledb.DefaultCompactorOptions ())
mergeCompactor.Start ()
// FIFO compactor for event streams (keep recent data)
fifoCompactor, _ := db.OpenRetentionCompactor (ctx, isledb.RetentionCompactorOptions{
Mode: isledb.CompactByAge,
RetentionPeriod: 7 * 24 * time.Hour,
RetentionCount: 10,
})
fifoCompactor.Start ()