Postgres wire compatible SQLite proxy

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • postlite

    Discontinued Postgres wire compatible SQLite proxy.

  • Yeah, jackc/pgproto3 is great. When I first started the project, I was digging through the protocol documentation and expecting to write message parsers. But pgproto3 handles all that. Almost all the real code in Postlite is in a 500 LOC file[1]. I was surprised how easy it was.

    [1]: https://github.com/benbjohnson/postlite/blob/main/server.go

  • sshfs

    Discontinued A network filesystem client to connect to SSH servers

  • I don't believe sshfs is safe to use with concurrent access on the database: https://github.com/libfuse/sshfs/issues/204#issue-561260021

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • sqlitebrowser

    Official home of the DB Browser for SQLite (DB4S) project. Previously known as "SQLite Database Browser" and "Database Browser for SQLite". Website at:

  • For the stated use case, I have found DB Browser to be an invaluable tool to graphically interact with SQLite databases:

    https://sqlitebrowser.org/

    You can do basically anything you would need to do to a database with it, and it’s very performant and cross platform.

  • showcase

    REST api for your database (PostgreSQL/Sqlite/ClickHouse/MySQL).

  • You can query and write to SQLite over http with [1] (i wrote it) but it's not through the method you describe (range for files).

    https://github.com/subzerocloud/blue-steel

  • mysql-proxy

    MySQL Proxy is a simple program that sits between your client and MySQL server(s) and that can monitor, analyze or transform their communication. Its flexibility allows for a wide variety of uses, including load balancing, failover, query analysis, query filtering and modification, and many more.

  • Awesome to see work in the DB wire compatible space. On the MySQL side, there was MySQL Proxy (https://github.com/mysql/mysql-proxy), which was scriptable with Lua, with which you could create your own MySQL wire compatible connections. Unfortunately it appears to have been abandoned by Oracle and IIRC doesn't work with 5.7 and beyond. I used it in the past to hack together a MySQL wire adapter for Interana (https://scuba.io/).

    I guess these days the best approach for connecting arbitrary data sources to existing drivers, at least for OLAP, is Apache Calcite (https://calcite.apache.org/). Unfortunately that feels a little more involved.

  • Apache Calcite

    Apache Calcite

  • Awesome to see work in the DB wire compatible space. On the MySQL side, there was MySQL Proxy (https://github.com/mysql/mysql-proxy), which was scriptable with Lua, with which you could create your own MySQL wire compatible connections. Unfortunately it appears to have been abandoned by Oracle and IIRC doesn't work with 5.7 and beyond. I used it in the past to hack together a MySQL wire adapter for Interana (https://scuba.io/).

    I guess these days the best approach for connecting arbitrary data sources to existing drivers, at least for OLAP, is Apache Calcite (https://calcite.apache.org/). Unfortunately that feels a little more involved.

  • roundabout

    Postgres connection pooler

  • I went ahead and made it public here: https://github.com/coder543/roundabout

    I had to add a license and README, and I did a quick test of it locally to make sure it still worked, and discovered that SASL authentication needed to be implemented, so I added that.

    I agree other people could be interested in contributing, I'm just not sure how much interest there actually is for a PgBouncer alternative.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • awesome-graphql

    Awesome list of GraphQL

  • https://github.com/chentsulin/awesome-graphql#tools---securi...

    ... W3C SOLID > Authorization and Access Control:

  • solid-spec

    Discontinued Solid specification draft 0.7.0

  • https://github.com/solid/solid-spec#authorization-and-access...

  • TPC-C

    TPC-C benchmark implementation in NodeJS

  • I think the following could be an interesting project:

    A pair of programs. One to emulate Postgres server, another to emulate a Postgres client. These two programs would assume they are just talking to each other, and know exactly what to expect from the other side.

    Then we can inject a protocol implementer (the system under test, or SUT) between these two programs and see if the SUT can make both these programs believe that they are still talking just with each other. This way we can validate the level of protocol support by the SUT. And if we can run this whole setup, multiple clients, a server, and the SUT, under controlled conditions, we can also evaluate the performance of each such protocol implementation.

    The Postgres client emulator would send a predefined set of commands, and would know exactly what the response should be. The Postgres server emulator would know exactly what commands to expect, and the hard-coded responses to send for each incoming command.

    The client emulator's knowledge of the responses would make it easy to catch any errors/bugs introduced by the SUT.

    The Postgres server emulator would _not_ implement any server-side logic (command parsing, planning, etc.), to ensure the peak performance for each command it processes.

    I was thinking of implementing such a Postgres server emulator back in around 2014, but for a different reason. IIRC, I was thinking of calling it Black Hole Postgres, to test the performance of my TPC-C implementation, DBYardstick [1].

    [1]: https://github.com/DBYardstick/TPC-C

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts