Watch a DuckLake's Postgres catalog for live lock contention and commit conflicts as writers race to commit.
Capture committed catalog changes such as new snapshots and file statistics through change data capture.
Load-test a DuckLake setup with configurable writers and observe contention build up in a dashboard.
| el10savio/duckwatch | 42wim/fabio | 42wim/go-xmpp | |
|---|---|---|---|
| Stars | 0 | — | — |
| Language | Go | Go | Go |
| Last pushed | — | 2018-02-04 | 2020-01-24 |
| Maintenance | — | Dormant | Dormant |
| Setup difficulty | hard | moderate | moderate |
| Complexity | 4/5 | 3/5 | 3/5 |
| Audience | ops devops | ops devops | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires Docker Compose v2, Go 1.25, and running multiple connected services (Kafka, ClickHouse, Superset).
duckWatch gives you real-time visibility into what is happening inside a DuckLake, a data lake format that uses a live Postgres database as its catalog instead of a plain file. Because the catalog is an actual running database, it can show things a file-based catalog simply cannot capture, such as transactions that are still in progress, lock contention between concurrent writers, and how often writers collide and have to retry when they race to commit changes at the same time. The project watches this catalog in two ways at once. First, it uses a tool called Debezium to tail the Postgres write-ahead log through change data capture, which means it picks up every committed change to the catalog, like new snapshots and file statistics, as it happens. Second, a small Go program regularly polls Postgres system views that report on active queries, current locks, and database activity, which surfaces the live, in-progress state that committed-change tracking alone would miss. Both streams of information flow through Kafka and land in ClickHouse, a database built for fast analytical queries, where they populate separate sets of tables for the committed-change data and the live-activity data. From there, a Superset dashboard lets you explore the results visually, for example watching how contention and conflict rates change as you add more concurrent writers. To try it out, you need Docker Compose v2 and Go 1.25 installed. A set of make commands handles the whole lifecycle: one command sets up the full pipeline end to end, another brings up the Superset dashboard on your local machine, another lets you generate a configurable load of requests and writers to see contention build up, and a final command tears everything down and removes the volumes when you are finished. This is a young, small project with no stated license or broader documentation beyond the setup steps and architecture diagram in the README, so treat it as an experimental tool for exploring DuckLake internals rather than a finished product.
duckWatch monitors a DuckLake's live Postgres catalog in real time, capturing in-progress transactions, lock contention, and commit conflicts via CDC and a Go poller, visualized in Superset.
Mainly Go. The stack also includes Go, Postgres, Debezium.
No license is stated in the README, so usage rights are unclear.
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly ops devops.
This repo across BitVibe Labs
double-check against the repo, no cap.