go-mysql-server
vitess
go-mysql-server | vitess | |
---|---|---|
23 | 60 | |
2,381 | 18,962 | |
0.5% | 1.3% | |
9.9 | 9.9 | |
4 days ago | 4 days ago | |
Go | Go | |
Apache License 2.0 | Apache License 2.0 |
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
vitess
-
A MySQL compatible database engine written in pure Go
With Vitess likely merging a lot of its binaries into a single unified binary: https://github.com/vitessio/vitess/issues/7471#issuecomment-...
... it would be a wild future if Vitess replaced the underlying MySQL engine with this as long as the performance is good enough.
-
The challenges of supporting foreign key constraints
Thank you for the compliment!
We recently started adding support for CTEs in Vitess! You can check out https://github.com/vitessio/vitess/pull/14321 if you want to see some technical details of the implementation.
For now, we have added preliminary support by converting them to derived tables internally, but we believe that we need to make CTEs first-class citizens themselves of query planning. Once we make that change, we can look towards supporting recursive CTEs.
This however will take some time, but then, all good things do!
-
Vitess 18
Why would it be a Google project? https://github.com/vitessio/vitess
-
PlanetScale Scaler Pro
This is great news. I strolled around https://github.com/vitessio/vitess/issues/12967.
Are there any public discussions of more trade-offs vitess has to make to enable fks?
-
What is the best database technology to use to create a new chat app today?
MySQL + Vitess I noticed Slack gets by using MySQL because they're using Vites. From Slack's post (https://slack.engineering/scaling-datastores-at-slack-with-vitess/) it seems like they choose Vites because it facilitated a smooth transition because it's built on top of MySQL.
- Vitess – Scalable. Reliable. MySQL-Compatible. Cloud-Native. Database
-
How can I avoid duplicate API calls in a serverless infra?
This sounds very similar to the connection pooling done by vitess https://vitess.io/.
-
Scaling Databases at Activision [pdf]
https://github.com/vitessio/vitess/issues/12967
-
Want to avoid MySQL but find PlanetScale really appealing
A lot of this is possible thanks to the magic of Vitess.
-
Vitess 16
"Vitess is a database clustering system for horizontal scaling of MySQL."
https://github.com/vitessio/vitess
What are some alternatives?
sqlite-parser - JavaScript implentation of SQLite 3 query parser
tidb - TiDB - the open-source, cloud-native, distributed SQL database designed for modern applications.
grammars-v4 - Grammars written for ANTLR v4; expectation that the grammars are free of actions.
cockroach - CockroachDB — the cloud native, distributed SQL database designed for high availability, effortless scale, and control over data placement.
vitess-sqlparser - simply SQL Parser for Go ( powered by vitess and TiDB )
citus - Distributed PostgreSQL as an extension
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.
go-mysql-elasticsearch - Sync MySQL data into elasticsearch
sqlfuzz - Simple SQL table fuzzing
kingshard - A high-performance MySQL proxy
zetasql - ZetaSQL - Analyzer Framework for SQL
supabase - The open source Firebase alternative. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications.