tailetc
SQLBoiler
Our great sponsors
tailetc | SQLBoiler | |
---|---|---|
2 | 42 | |
131 | 6,441 | |
- | 1.8% | |
0.0 | 7.7 | |
almost 2 years ago | 10 days ago | |
Go | Go | |
BSD 3-clause "New" or "Revised" License | BSD 3-clause "New" or "Revised" License |
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.
tailetc
-
Sched - In-process Go Job Scheduler. With Cron Support and Prometheus Metrics
https://github.com/tailscale/tailetc/blob/b2fa539c2383d30d03e0eea1052022af132dca9f/tailetc.go#L142
-
An Unlikely Database Migration
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.
SQLBoiler
-
Go ORMs Compared
SQLBoiler takes a database-first approach, generating Go code from your database schema. This means it creates highly optimized and custom-tailored code for your specific database schema. SQLBoiler is great for applications where the database schema is well-defined and changes infrequently. However, like sqlc, it requires regenerating the code when the database schema changes. It's well-suited for projects where performance is a key concern and the database design is stable.
-
Comparing database/sql, GORM, sqlx, and sqlc
Moved all my projects to https://github.com/volatiletech/sqlboiler.
-
Are there any decent ORMs in Golang?
sqlboiler
-
Any mid sized / big open source code base in golang that makes use of SQL DBs?
My current ORM of choice is Bob [GitHub Link] which I created based on my experience using and maintaining SQLBoiler [GitHub Link].
-
GORM
You mean like ORMs? * sqlboiler: generates Go ORM using database schema.
-
ORM or no ORM (and which ones)?
SQL code generator (aka inspect a database or SQL files to generate data models). You have the option of using something like volatiletech/sqlboiler which looks at the a physical database and generates code based on the schema. Or SQLC which is an amazing and fast project.
-
Using Prisma Migrate with a Dockerized Postgres
After trying a half dozen migration engines for NodeJS, I was pleased to see Prisma and its excellent documentation. As a golang developer I am partial to SQLBoiler and its database-first approach, though perhaps this is a condition of our community where we want all the knobs. Prisma was code-first but still gave me enough control to feel confident.
-
Can anyone help me on how you are using golang with databases in production systems?
I use sqlboiler which generates an ORM from your database, and sql-migrate which is a tool for managing SQL migrations. Although you have to write your migrations in SQL, which IMHO is a plus.
- volatiletech/sqlboiler: Generate a Go ORM tailored to your database schema.
-
Go overtook Ruby and ranked #3 among the most used backend languages for pull requests since 2021
FWIW, the other posts point to https://gobuffalo.io/ and https://github.com/volatiletech/sqlboiler as possibilities.
What are some alternatives?
go-memdb - Golang in-memory database built on immutable radix trees
GORM - The fantastic ORM library for Golang, aims to be developer friendly
etcd - Distributed reliable key-value store for the most critical data of a distributed system
sqlc - Generate type-safe code from SQL
lungo - A MongoDB compatible embeddable database and toolkit for Go.
ent - An entity framework for Go
sqlx - general purpose extensions to golang's database/sql
go-pg - Golang ORM with focus on PostgreSQL features and performance
upper.io/db - Data access layer for PostgreSQL, CockroachDB, MySQL, SQLite and MongoDB with ORM-like features.
jet - Type safe SQL builder with code generation and automatic query result data mapping
FrameworkBenchmarks - Source for the TechEmpower Framework Benchmarks project
xorm - xorm是一个简单而强大的Go语言ORM库,通过它可以使数据库操作非常简便。本库是基于原版xorm的定制增强版本,为xorm提供类似ibatis的配置文件及动态SQL支持,支持AcitveRecord操作