mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-06 21:12:55 +00:00
93 lines
2.2 KiB
Markdown
93 lines
2.2 KiB
Markdown
# Zenith
|
|
|
|
Zenith substitutes PostgreSQL storage layer and redistributes data across a cluster of nodes
|
|
|
|
## Running local installation
|
|
|
|
1. Build zenith and patched postgres
|
|
```sh
|
|
git clone --recursive https://github.com/libzenith/zenith.git
|
|
cd zenith
|
|
./pgbuild.sh # builds postgres and installs it to ./tmp_install
|
|
cargo build
|
|
```
|
|
|
|
2. Start pageserver and postggres on top of it (should be called from repo root):
|
|
```sh
|
|
# Create ~/.zenith with proper paths to binaries and data
|
|
# Later that would be responsibility of a package install script
|
|
>./target/debug/zenith init
|
|
|
|
# start pageserver
|
|
> ./target/debug/zenith pageserver start
|
|
Starting pageserver at '127.0.0.1:64000'
|
|
|
|
# create and configure postgres data dir
|
|
> ./target/debug/zenith pg create
|
|
Creating new postgres: path=/Users/user/code/zenith/tmp_check_cli/compute/pg1 port=55432
|
|
Database initialized
|
|
|
|
# start it
|
|
> ./target/debug/zenith pg start pg1
|
|
|
|
# look up status and connection info
|
|
> ./target/debug/zenith pg list
|
|
NODE ADDRESS STATUS
|
|
pg1 127.0.0.1:55432 running
|
|
```
|
|
|
|
3. Now it is possible to connect to postgres and run some queries:
|
|
```
|
|
> psql -p55432 -h 127.0.0.1 postgres
|
|
postgres=# CREATE TABLE t(key int primary key, value text);
|
|
CREATE TABLE
|
|
postgres=# insert into t values(1,1);
|
|
INSERT 0 1
|
|
postgres=# select * from t;
|
|
key | value
|
|
-----+-------
|
|
1 | 1
|
|
(1 row)
|
|
```
|
|
|
|
## Running tests
|
|
|
|
```sh
|
|
git clone --recursive https://github.com/libzenith/zenith.git
|
|
./pgbuild.sh # builds postgres and installs it to ./tmp_install
|
|
cargo test -- --test-threads=1
|
|
```
|
|
|
|
## Source tree layout
|
|
|
|
/walkeeper:
|
|
|
|
WAL safekeeper. Written in Rust.
|
|
|
|
/pageserver:
|
|
|
|
Page Server. Written in Rust.
|
|
|
|
Depends on the modified 'postgres' binary for WAL redo.
|
|
|
|
/integration_tests:
|
|
|
|
Tests with different combinations of a Postgres compute node, WAL safekeeper and Page Server.
|
|
|
|
/mgmt-console:
|
|
|
|
Web UI to launch (modified) Postgres servers, using S3 as the backing store. Written in Python.
|
|
This is somewhat outdated, as it doesn't use the WAL safekeeper or Page Servers.
|
|
|
|
/vendor/postgres:
|
|
|
|
PostgreSQL source tree, with the modifications needed for Zenith.
|
|
|
|
/vendor/postgres/src/bin/safekeeper:
|
|
|
|
Extension (safekeeper_proxy) that runs in the compute node, and connects to the WAL safekeepers
|
|
and streams the WAL
|
|
|
|
|
|
|