go-mysql-server
cockroach
go-mysql-server | cockroach | |
---|---|---|
23 | 100 | |
2,191 | 29,119 | |
37.5% | 0.6% | |
9.9 | 10.0 | |
about 14 hours ago | about 18 hours ago | |
Go | Go | |
Apache License 2.0 | GNU General Public License v3.0 or later |
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-mysql-server
- A MySQL compatible database engine written in pure Go
-
What I Talk About When I Talk About Query Optimizer (Part 1): IR Design
We implemented a query optimizer with a flexible intermediate representation in pure Go:
https://github.com/dolthub/go-mysql-server
Getting the IR correct so that it's both easy to use and flexible enough to be useful is a really interesting design challenge. Our primary abstraction in the query plan is called a Node, and is way more general than the IR type described in the article from OP. This has probably hurt us: we only recently separated the responsibility to fetch rows into its own part of the runtime, out of the IR -- originally row fetching was coupled to the Node type directly.
This is also the query engine that Dolt uses:
https://github.com/dolthub/dolt
But it has a plug-in architecture, so you can use the engine on any data source that implements a handful of Go interface.
-
I created an in-memory SQL database called MemSQL as a learning project
Might be interested in https://github.com/dolthub/go-mysql-server, which also does this
-
Implementing the MySQL server protocol for fun and profit
https://github.com/dolthub/go-mysql-server
One item under "Scope of this project":
Provide a runnable server speaking the MySQL wire protocol, connected to data sources of your choice.
- MySQL-mimic - Python implementation of the MySQL server wire protocol.
- Parsing SQL
-
Litetree – SQLite with Branches
I just wanted to say thanks for https://github.com/dolthub/go-mysql-server
This is incredibly useful for anyone who wants to build their own DB or wrap another datasource so it's queryable via MySQL protocol.
-
Dolt Is Git for Data
a very cool project they also maintain is a MySQL server framework for arbitrary backends (in Go): https://github.com/dolthub/go-mysql-server
You can define a "virtual" table (schema, how to retrieve rows/columns) and then a MySQL client can connect and execute arbitrary queries on your table (which could just be an API or other source)
- A Golang library and interface that allows querying anything with SQL
-
The world of PostgreSQL wire compatibility
Thanks for this write up! I've been really interested in postgres compatibility in the context of a tool I maintain (https://github.com/mergestat/mergestat) that uses SQLite. I've been looking for a way to expose the SQLite capabilities over a more commonly used wire-protocol like postgres (or mysql) so that existing BI and visualization tools can access the data.
This project is an interesting one: https://github.com/dolthub/go-mysql-server that provides a MySQL interface (wire and SQL) to arbitrary "backends" implemented in go.
It's really interesting how compatibility with existing protocols has become an important feature of new databases - there's so much existing tooling that already speaks postgres (or mysql), being able to leverage that is a huge advantage IMO
cockroach
-
11 Planetscale alternatives with free tiers
CockroachDB is an open source distributed SQL database designed for scalability and resilience. While it offers SQL databases, CockroachDB is also compatible with PostgreSQL.
-
A MySQL compatible database engine written in pure Go
cockroachdb might be close: https://github.com/cockroachdb/cockroach
-
No More Free Tier on PlanetScale, Here Are Free Alternatives
CockroachDB - SQL
-
Is it bad to create a publicly accessible RDS database for my serverless web app?
For example, when you create a serverless postgres database with a platform like CockroachDB or Neon, you effectively get a connection string with a strong password. Anyone can connect to your database from anywhere so long as they have the right connection string. There are no security settings in these services to change this behavior.
-
Linux surpasses the Mac among Steam gamers
> Yes you can on the android emulator. The biggest issue is compu arch in that case.
I can also download VirtualBox and run all Windows programs, that would mean that all Windows apps are Linux apps?
> Yes you can for the most part
You can't statically link glibc: https://github.com/cockroachdb/cockroach/issues/3392
glibc can break stuff: https://www.gamingonlinux.com/2022/08/valve-dev-understandab...
I had binaries break because the newer version if openssl was put under a slightly different name.
-
How do small SaaS's handle databases?
Also, worth noting, if you're already using PostgreSQL (or plan to) you might want to take a look at https://www.cockroachlabs.com/ they have a free tier too and CockroachDB has a PostgreSQL interface.
-
Go Dependency management in large company projects - How do you do it?
I know that some projects like cockroach use custom build tools like bazel. But we actually really like to use to be able to build our projects simply with the great go toolchain and don't really aim to dive deep into custom build solutions.
-
Eli5: Why do companies use the products of Oracle to store information, when they can just use spreadsheets like Excel, or make their own spreadsheet software?
CockroachDB is designed to be globally distributed. It has to handle causality when resolving collisions. It has to account for having a write operation to arrive after another and still have time priority because it was sent out a few milliseconds earlier.
-
rage - a minimalistic load testing tool
Cockroachdb created a go runtime patch which measures the Grunning time of a goroutine: https://github.com/cockroachdb/cockroach/pull/82356. It doesn't entirely solve the problem though.
-
Data Engineering Tools in Go
Our entire backend is written in Go. We've built a platform that allows other companies to offer automatic data syncing to their customers' data warehouses. Go works great for building distributed systems like this (see K8s). We're not the only ones in the space building data intensive applications with Go. Pachyderm, Pinecone, Cockroach Labs and are all also doing it. We've been quite happy with how Go has worked for us.
What are some alternatives?
vitess-sqlparser - simply SQL Parser for Go ( powered by vitess and TiDB )
vitess - Vitess is a database clustering system for horizontal scaling of MySQL.
alasql - AlaSQL.js - JavaScript SQL database for browser and Node.js. Handles both traditional relational tables and nested JSON data (NoSQL). Export, store, and import data from localStorage, IndexedDB, or Excel.
neon - Neon: Serverless Postgres. We separated storage and compute to offer autoscaling, branching, and bottomless storage.
sqlite-parser - JavaScript implentation of SQLite 3 query parser
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
grammars-v4 - Grammars written for ANTLR v4; expectation that the grammars are free of actions.
Trino - Official repository of Trino, the distributed SQL query engine for big data, formerly known as PrestoSQL (https://trino.io)
zetasql - ZetaSQL - Analyzer Framework for SQL
yugabyte-db - YugabyteDB - the cloud native distributed SQL database for mission-critical applications.
lakeFS - lakeFS - Data version control for your data lake | Git for data
InfluxDB - Scalable datastore for metrics, events, and real-time analytics