go-mysql-server
Presto
Our great sponsors
go-mysql-server | Presto | |
---|---|---|
23 | 14 | |
2,182 | 15,591 | |
38.3% | 0.9% | |
9.9 | 9.9 | |
4 days ago | 4 days ago | |
Go | Java | |
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
Presto
-
Multi-Database Support in DuckDB
We have some of this functionality in Presto (https://github.com/prestodb/presto), but it takes fair bit of work to implement it for all the different backends.
-
Rust std:fs slower than Python
Note that glibc has a similar problem in multithreaded contexts. It strands unused memory in thread-local pools, which grows your memory usage over time like a memory leak. We got lower memory usage that didn't grow over time by switching to jemalloc.
Example of this: https://github.com/prestodb/presto/issues/8993
- Ask HN: What are some SQL transpilers?
-
Cheat sheet for quotes usage?
I look at the grammar. Here is preto's grammar which is mostly similar to other sql engines: https://github.com/prestodb/presto/blob/master/presto-parser/src/main/antlr4/com/facebook/presto/sql/parser/SqlBase.g4
-
After a few recent events, opening a Linux terminal in public places is a big no-no
export MVNW_VERBOSE=true git clone https://github.com/prestodb/presto.git cd presto bash ./mvnw clean install
- presto: The official home of the Presto distributed SQL query engine for big data
- Compile the Minecraft Server (Java Edition) to Native with GraalVM Native Image
-
What are y'all learning right now?
more specifically, recently started learning about Presto [paper], and have been diving deeper into [source] code.
-
DeWitt Clause, or Can You Benchmark %DATABASE% and Get Away With It
Presto
- Let's write a compiler, part 5: A code generator
What are some alternatives?
vitess-sqlparser - simply SQL Parser for Go ( powered by vitess and TiDB )
Trino - Official repository of Trino, the distributed SQL query engine for big data, formerly known as PrestoSQL (https://trino.io)
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.
Apache Phoenix - Apache Phoenix
sqlite-parser - JavaScript implentation of SQLite 3 query parser
Apache Calcite - Apache Calcite
grammars-v4 - Grammars written for ANTLR v4; expectation that the grammars are free of actions.
HikariCP - 光 HikariCP・A solid, high-performance, JDBC connection pool at last.
zetasql - ZetaSQL - Analyzer Framework for SQL
jOOQ - jOOQ is the best way to write SQL in Java
lakeFS - lakeFS - Data version control for your data lake | Git for data
Spring Data JPA - Simplifies the development of creating a JPA-based data access layer.