- mysql
- reference: http://dev.mysql.com/doc/internals/en/client-server-protocol.html
- sources needed to port( There are around
31K
LOC to be ported to Erlang )
source file | explanation |
---|---|
http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/net_serv.cc | main logic to parse mysql protocol |
http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/protocol.h | |
http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/protocol.cc | reply data structure and logic |
http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/field.h | |
http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/field.cc | logic to parse fields and convert types as needed |
http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/sql_prepare.h | |
http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/sql_prepare.cc | logic for prepare statement |
http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/sql_acl.h | |
http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/sql_acl.cc | logic for authentication |
- postgres
- reference: http://www.postgresql.org/docs/9.4/static/protocol.html
- sources needed to port( There are around
20K
LOC to be ported to Erlang )
source file | explanation |
---|---|
https://github.com/postgres/postgres/tree/master/src/backend/tcop | main logic to parse postgres protocol |
https://github.com/postgres/postgres/tree/master/src/include/libpq | |
https://github.com/postgres/postgres/tree/master/src/backend/libpq | common logic to parse postgres protocol |
-
sqlserver/cybase
-
Reference: https://msdn.microsoft.com/en-us/library/dd304523.aspx
-
Source "Not published"
-
oracle "Not published"
-
db2 "Not published"
-
senseidb
-
Reference: http://www.senseidb.com/
-
Protocol: REST with json format which is similar to InfluxDB's one
-
Crate
-
Reference: https://crate.io/docs/stable/sql/rest.html
-
Protocol: REST with json format which is similar to InfluxDB's one
-
voltdb
-
Reference: http://downloads.voltdb.com/documentation/wireprotocol.pdf
-
Protocol: Original. Similar to porstgres's one.
-
cockroachdb
-
Protocol: currently REST with protbuff format. but they are considering to adopt a more efficient way whether golang's buitin rpc( http://golang.org/pkg/net/rpc/) or protobuff on HTTP/2
-
NuoDB "Not published"
-
others (such as Memsql, Clusterix, PostgresXL...)
-
Almost other products adopt mysql or postgres wire protocol to make it easy to replace mysql/postgres used by existing systems with their own product
Since the spec of wire protocol for oracle, db2 are not published,
We need to select from mysql/postgres/sqlserver/cybase's wire protocol.