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)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
go-memdb tailetc
3 2
3,070 131
0.8% -
3.6 0.0
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.
  • I created an in-memory SQL database called MemSQL as a learning project
    3 projects | /r/golang | 30 Mar 2023
    For another in-memory database example, you could also check out https://github.com/hashicorp/go-memdb, but it's based on a radix tree implementation.
  • Why use a real K/V database over a MapStore?
    2 projects | /r/golang | 10 May 2021
    I just think its a glorified map. Yeah, for example go-memdb list some of its advantages in their https://github.com/hashicorp/go-memdb/blob/master/README.md README. But it is not clear whether you gain any performance gain over a map except for avoiding the locking as explained.
  • An Unlikely Database Migration
    6 projects | news.ycombinator.com | 13 Jan 2021
    >So we invested what probably amounts to two or three weeks of engineering time into designing in-memory indexes that are transactionally consistent

    I'll be interested to see that part if it does get open sourced. I've used https://github.com/hashicorp/go-memdb which sounds similar.

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