Code
Core flow in a few tabs.
Core usage patterns in a compact view.
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()