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

Aneurin Barker Snook 7bf446649b update ezleveldb -> ezdb dep пре 11 месеци
.github 351090ee3c test pull requests too пре 11 месеци
ezleveldb 7bf446649b update ezleveldb -> ezdb dep пре 11 месеци
.gitignore b7b920a637 initial commit, untested пре 1 година
LICENSE.md d3ead919a4 set standard license text пре 11 месеци
README.md 3eea26f1e7 move leveldb to sub-package пре 11 месеци
collection_tester.go f26b55327f improve tests, clean up some inadequately tested code пре 11 месеци
errors.go f26b55327f improve tests, clean up some inadequately tested code пре 11 месеци
go.mod e48c3d80e0 cleanup root gomod пре 11 месеци
interfaces.go f26b55327f improve tests, clean up some inadequately tested code пре 11 месеци
json.go b7b920a637 initial commit, untested пре 1 година
key.go b7b920a637 initial commit, untested пре 1 година
memory.go f26b55327f improve tests, clean up some inadequately tested code пре 11 месеци
memory_iter.go f26b55327f improve tests, clean up some inadequately tested code пре 11 месеци
memory_test.go f26b55327f improve tests, clean up some inadequately tested code пре 11 месеци
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 storage in your Go application.

EZ DB is not a database unto itself. If you want more control or features, just use the appropriate database software and connector for your needs.

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()
}

In other cases, such as media stores, you may prefer not to specify a document type. This example allows arbitrary bytes to be written:

package main

import "github.com/annybs/ezdb"

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

func main() {
	db.Open()
	db.Put("data", []byte("arbitrary bytes"))
	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:

Database backends

The following databases are included in EZ DB:

  • Memory[T] is essentially a wrapper for map[string]T. It can be provided another Collection to use as a persistence backend

Additional databases

License

See LICENSE.md