A simple and very accessible database based on JSON files.
Go to file
Andreas Schulte b9a2ca4207
added locks for databases; refactoring
2023-10-24 21:10:49 +02:00
LICENSE initial commit 2023-10-18 23:25:04 +02:00
README.md initial commit 2023-10-18 23:25:04 +02:00
go.mod initial commit 2023-10-18 23:25:04 +02:00
go.sum initial commit 2023-10-18 23:25:04 +02:00
jsondb.go added locks for databases; refactoring 2023-10-24 21:10:49 +02:00
jsondb_test.go initial commit 2023-10-18 23:25:04 +02:00

README.md

JSONDB

JSONDB is a simple and very accessible database based on JSON files. Its niche is small projects that interact with the database exclusively through a single instance (simultaneous write access by multiple instances will lead to loss of data integrity). Basically, it is an in-memory key-value store that stores data locally in JSON files. If data is changed (in memory), these changes are also made in the file system. The big advantage in contrast to e.g. SQLite databases is that the data is available in plain text and thus extremely accessible for other programs. On the other hand, any logic for accessing the databases is missing or must be implemented by the user himself.

Pros

  • JSONDB doesn't care what data you put in it (string, int, struct, etc).
  • All data is always in memory, resulting in very short access times when reading.
  • All data is stored as simple JSON files in the file system

Cons

  • To avoid loss of data integrity, only one program instance should access the database at a time
  • As databases grow, write times increase as well, since the entire database is written to the file system each time
  • In addition, (too) large databases can have a negative impact on system performance, since memory consumption naturally grows in parallel with the database size

Usage

import (
	"git.0x0001f346.de/andreas/jsondb"
)

type Car struct {
    Manufacturer string
    Model string
    Horsepower int
    WeightInKG int
}

jsondb.SetLocationOfCluster("/mnt/storage/databases")    // optional, default is the path to the executable 
jsondb.SetNameOfCluster("iLikeJSONFiles")                // optional, default is "jsondb"
jsondb.LoadCluster()
jsondb.CreateDatabase("Cars")
jsondb.SetKeyInDatabase(
    "Cars",
    "My dream car",
    Car{
		Manufacturer: "Toyota",
		Model: "GR86",
		Horsepower: 234,
		WeightInKG: 1271,
	},
)

myDreamCar, _ := jsondb.GetKeyFromDatabase("Cars", "My dream car")    // returns (interface{}, err)