go-memdb VS tailetc

Compare go-memdb vs tailetc and see what are their differences.

go-memdb

Golang in-memory database built on immutable radix trees (by hashicorp)

tailetc

total-memory-cache etcd v3 client (by tailscale)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
go-memdb tailetc
3 2
3,067 131
1.6% -
3.6 0.0
about 2 months ago almost 2 years ago
Go Go
Mozilla Public License 2.0 BSD 3-clause "New" or "Revised" License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

go-memdb

Posts with mentions or reviews of go-memdb. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-03-30.

tailetc

Posts with mentions or reviews of tailetc. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-04-10.
  • Sched - In-process Go Job Scheduler. With Cron Support and Prometheus Metrics
    2 projects | /r/golang | 10 Apr 2021
    https://github.com/tailscale/tailetc/blob/b2fa539c2383d30d03e0eea1052022af132dca9f/tailetc.go#L142
  • An Unlikely Database Migration
    6 projects | news.ycombinator.com | 13 Jan 2021
    Interesting choice of technology, but you didn't completely convince me to why this is better than just using SQLite or PostgreSQL with a lagging replica. (You could probably start with either one and easily migrate to the other one if needed.)

    In particular you've designed a very complicated system: Operationally you need an etcd cluster and a tailetc cluster. Code-wise you now have to maintain your own transaction-aware caching layer on top of etcd (https://github.com/tailscale/tailetc/blob/main/tailetc.go). That's quite a brave task considering how many databases fail at Jepsen. Have you tried running Jepsen tests on tailetc yourself? You also mentioned a secondary index system which I assume is built on top of tailetc again? How does that interact with tailetc?

    Considering that high-availability was not a requirement and that the main problem with the previous solution was performance ("writes went from nearly a second (sometimes worse!) to milliseconds") it looks like a simple server with SQLite + some indexes could have gotten you quite far.

    We don't really get the full overview from a short blog post like this though so maybe it turns out to be a great solution for you. The code quality itself looks great and it seems that you have thought about all of the hard problems.

What are some alternatives?

When comparing go-memdb and tailetc you can also consider the following projects:

dbbench - 🏋️ dbbench is a simple database benchmarking tool which supports several databases and own scripts

etcd - Distributed reliable key-value store for the most critical data of a distributed system

badger - Fast key-value DB in Go.

lungo - A MongoDB compatible embeddable database and toolkit for Go.

buntdb - BuntDB is an embeddable, in-memory key/value database for Go with custom indexing and geospatial support

bolt

go-cache - An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.

cockroach - CockroachDB - the open source, cloud-native distributed SQL database.

tidb - TiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at : https://tidbcloud.com/free-trial

groupcache - groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.

eliasdb - EliasDB a graph-based database.

InfluxDB - Scalable datastore for metrics, events, and real-time analytics