|
1 | 1 | <div align=center> |
2 | | -<h1 align=center>pg_mooncake 🥮</h1> |
3 | | -<h4 align=center>Real-time analytics on Postgres tables</h4> |
| 2 | +<h1 align=center>ivy_mooncake 🥮</h1> |
| 3 | +<h4 align=center>Real-time analytics on Postgres tables (IvorySQL distribution)</h4> |
4 | 4 |
|
5 | 5 | [![][docs-shield]][docs-link] |
6 | 6 | [![][license-shield]][license-link] |
7 | | -[![][slack-shield]][slack-link] |
8 | | -[![][x-shield]][x-link] |
9 | 7 | </div> |
10 | 8 |
|
11 | 9 | ## Overview |
12 | 10 |
|
13 | | -**pg_mooncake** is a Postgres extension that creates a columnstore mirror of your Postgres tables in [Iceberg][iceberg-link], enabling fast analytics queries with sub-second freshness: |
| 11 | +**ivy_mooncake** is the IvorySQL distribution of [pg_mooncake][upstream-link], a Postgres extension that creates a columnstore mirror of your Postgres tables in [Iceberg][iceberg-link], enabling fast analytics queries with sub-second freshness: |
14 | 12 | - **Real-time ingestion** powered by [moonlink][moonlink-link] for streaming and batched INSERT/UPDATE/DELETE. |
15 | 13 | - **Fast analytics** accelerated by [DuckDB][pgduckdb-link], ranking top 10 on [ClickBench][clickbench-link]. |
16 | 14 | - **Postgres-native** allowing you to query a columnstore table just like a regular Postgres table. |
17 | 15 | - **Iceberg-native** making your data readily accessible by other query engines. |
18 | 16 |
|
19 | | -## Installation |
20 | | - |
21 | | -### Option 1: Docker |
22 | | - |
23 | | -For new users, we recommend using the Docker image to get started quickly: |
24 | | -```bash |
25 | | -docker run --name mooncake --rm -e POSTGRES_PASSWORD=password mooncakelabs/pg_mooncake |
26 | | -``` |
| 17 | +This fork tracks IvorySQL-maintained branches of `pg_duckdb`, `moonlink`, and `duckdb_mooncake` (`ivy_duckdb`, `ivy_moonlink`, `ivy_duckdb_mooncake`). The repository name is `ivy_mooncake`, but the extension it installs is unchanged — `pg_mooncake` — so SQL-side compatibility with upstream is preserved. |
27 | 18 |
|
28 | | -This will start Postgres with pg_mooncake preinstalled. You can then connect to it using `psql` with the default user `postgres`: |
29 | | -```bash |
30 | | -docker exec -it mooncake psql -U postgres |
31 | | -``` |
32 | | - |
33 | | -### Option 2: From Source |
| 19 | +## Installation |
34 | 20 |
|
35 | | -To build pg_mooncake, first install [Rust][rust-install], [pgrx][pgrx-install], and [the build tools for DuckDB][duckdb-install]. |
| 21 | +To build ivy_mooncake, first install [Rust][rust-install], [pgrx][pgrx-install], and [the build tools for DuckDB][duckdb-install]. |
36 | 22 |
|
37 | | -Then, clone the repository: |
| 23 | +Then, clone the repository with submodules: |
38 | 24 | ```bash |
39 | | -git clone --recurse-submodules https://github.com/Mooncake-Labs/pg_mooncake.git |
| 25 | +git clone --recurse-submodules https://github.com/IvorySQL/ivy_mooncake.git |
40 | 26 | ``` |
41 | 27 |
|
42 | 28 | To build and install for Postgres versions 14-18, run: |
43 | 29 | ```bash |
44 | 30 | cargo pgrx init --pg18=$(which pg_config) # Replace with your Postgres version |
45 | | -make pg_duckdb # Skip if pg_duckdb is already installed |
| 31 | +make ivy_duckdb # Skip if ivy_duckdb is already installed |
46 | 32 | make install PG_VERSION=pg18 |
47 | 33 | ``` |
48 | 34 |
|
49 | | -Finally, add pg_mooncake to `shared_preload_libraries` in your `postgresql.conf` file and enable logical replication: |
| 35 | +Finally, add `pg_mooncake` to `shared_preload_libraries` in your `postgresql.conf` file and enable logical replication: |
50 | 36 | ```ini |
51 | 37 | duckdb.allow_community_extensions = true |
52 | 38 | shared_preload_libraries = 'pg_duckdb,pg_mooncake' |
53 | 39 | wal_level = logical |
54 | 40 | ``` |
55 | 41 |
|
56 | | -For a complete walkthrough, refer to our [Dockerfile][dockerfile-link]. |
57 | | - |
58 | 42 | ## Quick Start |
59 | 43 |
|
60 | 44 | First, create the pg_mooncake extension: |
@@ -91,26 +75,21 @@ Finally, query `trades_iceberg` to see that it reflects the up-to-date state of |
91 | 75 | SELECT avg(price) FROM trades_iceberg WHERE symbol = 'AMZN'; |
92 | 76 | ``` |
93 | 77 |
|
94 | | -## Contributing |
| 78 | +Note: The repository is renamed to `ivy_mooncake` only at the GitHub-fork level. Inside the repo, the extension, the cdylib, and all SQL-level identifiers (`pg_mooncake` extension, `mooncake.*` schema, `USING mooncake` access method, `INSTALL mooncake FROM community`) are intentionally unchanged from upstream so SQL written against `pg_mooncake` continues to work. |
| 79 | + |
| 80 | +## Upstream |
95 | 81 |
|
96 | | -pg_mooncake is an open-source project maintained by [Mooncake Labs][mooncake-link] and licensed under the [MIT License][license-link]. We'd love your help to make it even better! Join [our Slack][slack-link], participate in [discussions][discussions-link], open [issues][issues-link] to report bugs or suggest features, contribute code and documentation, or help us improve the project in any way. All contributions are welcome! 🥮 |
| 82 | +ivy_mooncake is a fork of [Mooncake-Labs/pg_mooncake][upstream-link] under the [MIT License][license-link]. |
97 | 83 |
|
98 | 84 | [clickbench-link]: https://www.mooncake.dev/blog/clickbench-v0.1 |
99 | | -[discussions-link]: https://github.com/Mooncake-Labs/pg_mooncake/discussions |
100 | | -[dockerfile-link]: https://github.com/Mooncake-Labs/pg_mooncake/blob/main/Dockerfile |
101 | 85 | [docs-link]: https://docs.mooncake.dev/ |
102 | 86 | [docs-shield]: https://img.shields.io/badge/docs-mooncake?logo=readthedocs&logoColor=white |
103 | 87 | [duckdb-install]: https://duckdb.org/docs/stable/dev/building/overview.html#prerequisites |
104 | 88 | [iceberg-link]: https://iceberg.apache.org/ |
105 | | -[issues-link]: https://github.com/Mooncake-Labs/pg_mooncake/issues |
106 | | -[license-link]: https://github.com/Mooncake-Labs/pg_mooncake/blob/main/LICENSE |
| 89 | +[license-link]: ./LICENSE |
107 | 90 | [license-shield]: https://img.shields.io/badge/License-MIT-blue |
108 | | -[mooncake-link]: https://mooncake.dev/ |
109 | | -[moonlink-link]: https://github.com/Mooncake-Labs/moonlink |
110 | | -[pgduckdb-link]: https://github.com/duckdb/pg_duckdb |
| 91 | +[moonlink-link]: https://github.com/IvorySQL/ivy_moonlink |
| 92 | +[pgduckdb-link]: https://github.com/IvorySQL/ivy_duckdb |
111 | 93 | [pgrx-install]: https://github.com/pgcentralfoundation/pgrx?tab=readme-ov-file#getting-started |
112 | 94 | [rust-install]: https://www.rust-lang.org/tools/install |
113 | | -[slack-link]: https://join.slack.com/t/mooncake-devs/shared_invite/zt-2sepjh5hv-rb9jUtfYZ9bvbxTCUrsEEA |
114 | | -[slack-shield]: https://img.shields.io/badge/Mooncake%20Devs-purple?logo=slack |
115 | | -[x-link]: https://x.com/mooncakelabs |
116 | | -[x-shield]: https://img.shields.io/twitter/url?label=%40mooncakelabs&url=https%3A%2F%2Fx.com%2Fmooncakelabs |
| 95 | +[upstream-link]: https://github.com/Mooncake-Labs/pg_mooncake |
0 commit comments