README
¶
yoursql
Sorry, We don't have MySQL available, but we have ...
... other databases.
The software serves the MySQL wire protocol using the excelent go-vitess framework (well, vitess is a product and not a library, but who cares) and go-mysql-server.
Subprojects:
my2any
The my2any subproject is a MySQL to Any Gateway.
The Goal is to allow (almost) any MySQL client Software (like PHP application)
to use PostgreSQL (or other RDBMSes), without intrusive modifications, such as
switching from the mysql
or mysqli
PHP-library to the PostgreSQL client library.
Currently implemented:
- PostgreSQL (converts MySQL's SQL-dialect to PostgreSQL's)
generaldb
The generaldb subproject is a MySQL to NoSQL Gateway. The Goal was to implement (almost) full SQL query support to Apache Cassandra and other NoSQL databases. So users have the best of both world: Massive Fault tolerance and SQL-datamodel and Apis.
Currently implemented:
- Features
- Select queries, including joins.
- Backends
- Apache Cassandra 3.0 or later.
Future Ideas
- Implementing adapters for other databases, that have a golang-SQLDriver, especially...
- Implementing adapters for NoSQL databases, such as...
Example-Server
package main
import "fmt"
import (
"database/sql"
_ "github.com/lib/pq"
)
import "github.com/a-mail-group/yoursql/my2any"
import "github.com/a-mail-group/yoursql/my2any/my2pg"
import "gopkg.in/src-d/go-vitess.v0/mysql"
func main(){
connStr := "user=moos password=moos dbname=mysql1 sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err!=nil {
fmt.Println("err",err)
return
}
auth := mysql.NewAuthServerStatic()
auth.Entries["user"] = []*mysql.AuthServerStaticEntry{{
Password: "pass",
}}
gw := &my2any.Gateway{
db,
my2pg.PqConverter{my2any.DefaultConverter},
my2pg.PgSyntaxer{my2any.DefaultSyntaxer},
my2pg.PgSpecialFeatures{my2any.DefaultSpecialFeatures},
}
lst,err := mysql.NewListener("tcp", "localhost:3306", auth, gw)
if err!=nil {
fmt.Println("err",err)
return
}
fmt.Println("ACCEPT")
lst.Accept()
fmt.Println("Hello World")
}