spy16 / droplets

Droplets is a platform for Gophers.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Embedded database instead of Mongo?

xeoncross opened this issue · comments

Given the simple design of the stores and the goal of helping new developers structure their app; I would consider moving off MongoDB onto BBolt, GoLevelDB, Badger, or one of the many other embedded databases.

There are many helper libraries like Bolthold or Storm which can serve as higher-level access helpers.

I have demo repo with some benchmarks and usage samples here.

Absolutely right. Initially I did think of using something very lightweight and simple that doesn't require external process (considered both boltdb and sqlite).. but writing SQL queries in case of sqlite or converting data into key-value in case of boltdb seemed like too much work (didn't really dig into wrapper libraries though.) So went with mgo which has a very simple API.

Now that mongo store is already implemented, it would be cool to add store implementations using boltdb or some embedded db and make it configurable I think. That way point of store interfaces might become clearer as well. Thoughts?

I get this error message after running ./bin/droplets

/bin/droplets
FATA[0000] failed to connect to mongodb: no reachable servers

Should I install mongodb

Yes. Mongodb is required to run this.

Although I install mongodb and run "mongod"
it still says "./bin/droplets
FATA[0000] failed to connect to mongodb: no reachable servers"
which file should I take a look at for database settings?

You can run MONGO_URI=<url> ./bin/droplets (replace <url> with whatever addr mongo is running on. By default this looks at localhost)

@89z it depends on your queries. Every database is '100 times slower' for certain workloads. They aren't all designed for the same query paths. Dynamo vs MySQL vs Mongo vs Dgraph vs Redis does not make sense given their radically different architectures.