doltgresql
pg_ivm
doltgresql | pg_ivm | |
---|---|---|
5 | 20 | |
948 | 785 | |
12.0% | 3.6% | |
9.7 | 6.3 | |
1 day ago | about 2 months ago | |
Go | C | |
Apache License 2.0 | GNU General Public License v3.0 or later |
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.
doltgresql
-
A MySQL compatible database engine written in pure Go
PostgreSQL support here
https://github.com/dolthub/doltgresql
Background and architecture discussion here
https://dolthub.com/blog/2023-11-01-announcing-doltgresql/
-
Postgres is eating the database world
We're writing a postgres-compatible database that doesn't use any postgres code:
https://github.com/dolthub/doltgresql/
We're doing this because our main product (Dolt) is MySQL-compatible, but a lot of people prefer postgres. Like, they really strongly prefer postgres. When figuring out how to support them, we basically had three options:
1) Foreign data wrapper. This doesn't work well because you can't use non-native stored procedure calls, which are used heavily throughout our product (e.g. CALL DOLT_COMMIT('-m', 'changes'), CALL DOLT_BRANCH('newBranch')). We would have had to invent a new UX surface area for the product just to support Postgres.
2) Fork postgres, write our own storage layer and parser extensions, etc. Definitely doable, but it would mean porting our existing Go codebase to C, and not being able to share code with Dolt as development continues. Or else rewriting Dolt in C, throwing out the last 5 years of work. Or doing something very complicated and difficult to use a golang library from C code.
3) Emulation. Keep Dolt's Go codebase and query engine and build a Postgres layer on top of it to support the syntax, wire protocol, types, functions, etc.
Ultimately we went with the emulation approach as the least bad option, but it's an uphill climb to get to enough postgres support to be worth using. Our main effort right now is getting all of postgres's types working.
-
Show HN: Dera – A platform to manage chunks and embeddings for building RAG apps
Very cool. I wonder when it makes sense to engineer things at this level vs using something like Azure AI search. [0]
Love to see version control on all the things! Wonder if the version control features would be more robust if implemented in Doltgres.
[0] https://azure.microsoft.com/en-us/products/ai-services/ai-se...
[1] https://github.com/dolthub/doltgresql
- Show HN: DoltgreSQL – Version-Controlled Database, Like Git and PostgreSQL
pg_ivm
- Postgres is eating the database world
-
What Is Incremental View Maintenance (IVM)?
FTA, because I don't like Jeopardy questions in headlines:
“Incremental View Maintenance (IVM) provides a method for keeping materialized views current by calculating and applying only the incremental changes, as opposed to the complete recomputation of contents performed by the REFRESH MATERIALIZED VIEW command.”
Article shows using the pg_ivm Postgres extension available here: https://github.com/sraoss/pg_ivm
- Pg_ivm: Incremental View Maintenance as a Postgres Extension
- Anyone have experience with incremental materialized views in postgres?
- Incremental View Maintenance for PostgreSQL
-
a temporary-ish table vs materialize view?
There is an extension that provides some limited incremental MVIEW refresh: https://github.com/sraoss/pg_ivm
- Features I'd Like in PostgreSQL
- IVM (Incremental View Maintenance) Implementation as a PostgreSQL Extension
-
Materialized View: SQL Queries on Steroids
There’s awesome work being done on incremental view maintenance in postgres:
https://github.com/sraoss/pg_ivm
-
Should I replace all db select query REST APIs with a single generic router ?
It makes sense to perform managed denormalization - use a materialized view or automatically refresh a table or foreign server (via FDW) using common triggers (like pg_ivm does). And it's fine to add a TTL to it and use as a read store... update on user login and make a partial index just for that. And that's how you could get CQRS...
What are some alternatives?
pREST - PostgreSQL ➕ REST, low-code, simplify and accelerate development, ⚡ instant, realtime, high-performance on any Postgres application, existing or new
prawn-stack - A pageview counter using the AWS free tier, Postgres, Node and React
usql - Universal command-line interface for SQL databases
materialize - The data warehouse for operational workloads.
SQLBoiler - Generate a Go ORM tailored to your database schema.
pg_hint_plan - Extension adding support for optimizer hints in PostgreSQL
dolt - Dolt – Git for Data
contour - Contour is a Kubernetes ingress controller using Envoy proxy.
goose - A database migration tool. Supports SQL migrations and Go functions.
pg_jsonschema - PostgreSQL extension providing JSON Schema validation
FerretDB - A truly Open Source MongoDB alternative
OpenLogReplicator - Open Source Oracle database CDC