Simple interfaces for working with basic key-value storage in your Go application https://pkg.go.dev/github.com/annybs/ezdb

Aneurin Barker Snook fee691e8ec improve readme 1 سال پیش
.github 351090ee3c test pull requests too 1 سال پیش
.gitignore b7b920a637 initial commit, untested 1 سال پیش
LICENSE.md d3ead919a4 set standard license text 1 سال پیش
README.md fee691e8ec improve readme 1 سال پیش
collection_tester.go f26b55327f improve tests, clean up some inadequately tested code 1 سال پیش
errors.go f26b55327f improve tests, clean up some inadequately tested code 1 سال پیش
go.mod a190ad8ca9 revert experimental package split 1 سال پیش
go.sum a190ad8ca9 revert experimental package split 1 سال پیش
interfaces.go f26b55327f improve tests, clean up some inadequately tested code 1 سال پیش
json.go b7b920a637 initial commit, untested 1 سال پیش
key.go b7b920a637 initial commit, untested 1 سال پیش
leveldb.go a190ad8ca9 revert experimental package split 1 سال پیش
leveldb_iter.go a190ad8ca9 revert experimental package split 1 سال پیش
leveldb_options.go a190ad8ca9 revert experimental package split 1 سال پیش
leveldb_test.go fee691e8ec improve readme 1 سال پیش
memory.go fa988cf3e7 remove errant print 1 سال پیش
memory_iter.go f26b55327f improve tests, clean up some inadequately tested code 1 سال پیش
memory_test.go f26b55327f improve tests, clean up some inadequately tested code 1 سال پیش
sort.go 379450fa36 fix memory sort 1 سال پیش
staticcheck.conf b7b920a637 initial commit, untested 1 سال پیش

README.md

EZ DB

This package provides simple interfaces for working with basic key-value document storage in your Go application.

System requirements

Basic usage

The primary interface in EZ DB is Collection[T] which reflects a single key-value store. This is analogous to tables in RDBMS, collections in NoSQL databases etc.

Collections use a generic type T to specify the document type. You can use this to enforce a document schema. This example creates a collection which only accepts Student documents:

package main

import "github.com/annybs/ezdb"

type Student struct {
	Name string
	Age int
}

var db = ezdb.Memory[Student](nil)

func main() {
	db.Open()
	db.Put("annie", Student{Name: "Annie", Age: "32"})
	db.Close()
}

Marshaling data

Some database backends require marshaling and unmarshaling data. The DocumentMarshaler[T1, T2] interface allows you to use whatever marshaler suits your needs or the requirements of your chosen database.

The following marshalers are included in EZ DB:

Supported databases

The following databases are included in EZ DB:

  • LevelDB[T] is fast key-value storage on disk
  • Memory[T] is essentially a wrapper for map[string]T. It can be provided another Collection to use as a persistence backend

Limitations

EZ DB is intended for simple document storage and can work with any addressable data represented as T in your Go app.

This makes it unsuited for working with unaddressable types, such as byte arrays, particularly when a document marshaler is involved.

If you want more control beyond what EZ DB offers, it's best to just use the appropriate database software and connector for your needs.

License

See LICENSE.md