![]() |
|
![]() |
|
Have you benchmarked the replication? Or do you know of anyone who's running it against a primary with a couple 10s of thousands of writes per second?
|
![]() |
|
Not a proxy in the traditional sense, no. go-mysql-server is a set of libraries that implement a SQL query engine and server in the abstract. When provided with a compatible database implementation using the provided interfaces, it becomes a MySQL compatible database server. Dolt [1] is the most complete implementation, but the in-memory database implementation the package ships with is suitable for testing. We didn't extract go-mysql-server from Dolt. We found it sitting around as abandonware, adopted it, and used it to build Dolt's SQL engine on top of the existing storage engine and command line [2]. We decided to keep it a separate package, and implementation agnostic, in the hopes of getting contributions from other people building their own database implementations on top of it. [1] https://github.com/dolthub/dolt [2] https://www.dolthub.com/blog/2020-05-04-adopting-go-mysql-se... |
![]() |
|
Really excellent work! For the curious, would you all be creating an in-memory database implementation that is postgres compatible for the doltgres project?
|
![]() |
|
It would be great if this evolves to support mysql to postgresql and mysql to sqlite. Then we can finally have multiple database engine support for WordPress and others. |
![]() |
|
yup, it's bad, and even if you "do everything right" minimization wise, if you're still using the heap then eventually fragmentation will come for you too
|
![]() |
|
Using net6. I agree, performance is generally great / just as fast as its peers (i.e. Java and Go). However, if you need to think about memory a lot, GCed runtimes are an odd choice.
|
![]() |
|
If your program integrates with mysql in production, you can use this for much faster local tests. It doesn't have to be a go program, although that makes it easier.
|
![]() |
|
Interesting, another project implemented in Go that is compatible with MySQL server, alongside others like Vitess and TiDB.
|
![]() |
|
Most direct users of go-mysql-server use it to test Golang <> MySQL interactions without needing a running server. We here at DoltHub use it to provide SQL to Dolt. |
![]() |
|
I know it is a matter of choice, but why was MySQL chosen instead of PostgreSQL? The latter seems to be more popular on Hacker News.
|
- Don't use "mysql" in the name, this is a trademark of Oracle corporation and they can very easily sue you personally if they want to, especially since you're using it to develop a competing database product. Other products getting away with it doesn't mean they won't set their sights on you. This is just my suggestion and you can ignore it if you want to.
- Postgres wire/sql compatibility. Postgres is for some reason becoming the relational king so implementing some support sooner rather than later increases your projects relevance.