[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5392":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},5392,"neon","neondatabase\u002Fneon","neondatabase","Neon: Serverless Postgres. We separated storage and compute to offer autoscaling, code-like database branching, and scale to zero.","https:\u002F\u002Fneon.tech",null,"Rust",22198,989,117,288,0,5,65,393,36,43.99,"Apache License 2.0",false,"main",[26,27,28,29,30],"database","postgres","postgresql","rust","serverless","2026-06-12 02:01:09","[![Neon](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Ffd91da5f-44a9-41c7-9075-36a5b5608083)](https:\u002F\u002Fneon.com)\n\n\n\n# Neon\n\nNeon is an open-source serverless Postgres database platform. It separates storage and compute and substitutes the PostgreSQL storage layer by redistributing data across a cluster of nodes.\n\n## Quick start\nTry the [Neon Free Tier](https:\u002F\u002Fneon.com\u002Fsignup) to create a serverless Postgres instance. Then connect to it with your preferred Postgres client (psql, dbeaver, etc) or use the online [SQL Editor](https:\u002F\u002Fneon.com\u002Fdocs\u002Fget-started-with-neon\u002Fquery-with-neon-sql-editor\u002F). See [Connect from any application](https:\u002F\u002Fneon.com\u002Fdocs\u002Fconnect\u002Fconnect-from-any-app\u002F) for connection instructions.\n\nAlternatively, compile and run the project [locally](#running-local-installation).\n\n## Architecture overview\n\nA Neon installation consists of compute nodes and the Neon storage engine. Compute nodes are stateless PostgreSQL nodes backed by the Neon storage engine.\n\nThe Neon storage engine consists of two major components:\n- Pageserver: Scalable storage backend for the compute nodes.\n- Safekeepers: The safekeepers form a redundant WAL service that received WAL from the compute node, and stores it durably until it has been processed by the pageserver and uploaded to cloud storage.\n\nSee developer documentation in [SUMMARY.md](\u002Fdocs\u002FSUMMARY.md) for more information.\n\n## Running a local development environment\n\nNeon can be run on a workstation for small experiments and to test code changes, by\nfollowing these instructions.\n\n#### Installing dependencies on Linux\n1. Install build dependencies and other applicable packages\n\n* On Ubuntu or Debian, this set of packages should be sufficient to build the code:\n```bash\napt install build-essential libtool libreadline-dev zlib1g-dev flex bison libseccomp-dev \\\nlibssl-dev clang pkg-config libpq-dev cmake postgresql-client protobuf-compiler \\\nlibprotobuf-dev libcurl4-openssl-dev openssl python3-poetry lsof libicu-dev\n```\n* On Fedora, these packages are needed:\n```bash\ndnf install flex bison readline-devel zlib-devel openssl-devel \\\n  libseccomp-devel perl clang cmake postgresql postgresql-contrib protobuf-compiler \\\n  protobuf-devel libcurl-devel openssl poetry lsof libicu-devel libpq-devel python3-devel \\\n  libffi-devel\n```\n* On Arch based systems, these packages are needed:\n```bash\npacman -S base-devel readline zlib libseccomp openssl clang \\\npostgresql-libs cmake postgresql protobuf curl lsof\n```\n\nBuilding Neon requires 3.15+ version of `protoc` (protobuf-compiler). If your distribution provides an older version, you can install a newer version from [here](https:\u002F\u002Fgithub.com\u002Fprotocolbuffers\u002Fprotobuf\u002Freleases).\n\n2. [Install Rust](https:\u002F\u002Fwww.rust-lang.org\u002Ftools\u002Finstall)\n```\n# recommended approach from https:\u002F\u002Fwww.rust-lang.org\u002Ftools\u002Finstall\ncurl --proto '=https' --tlsv1.2 -sSf https:\u002F\u002Fsh.rustup.rs | sh\n```\n\n#### Installing dependencies on macOS (12.3.1)\n1. Install XCode and dependencies\n```\nxcode-select --install\nbrew install protobuf openssl flex bison icu4c pkg-config m4\n\n# add openssl to PATH, required for ed25519 keys generation in neon_local\necho 'export PATH=\"$(brew --prefix openssl)\u002Fbin:$PATH\"' >> ~\u002F.zshrc\n```\n\nIf you get errors about missing `m4` you may have to install it manually:\n```\nbrew install m4\nbrew link --force m4\n```\n\n2. [Install Rust](https:\u002F\u002Fwww.rust-lang.org\u002Ftools\u002Finstall)\n```\n# recommended approach from https:\u002F\u002Fwww.rust-lang.org\u002Ftools\u002Finstall\ncurl --proto '=https' --tlsv1.2 -sSf https:\u002F\u002Fsh.rustup.rs | sh\n```\n\n3. Install PostgreSQL Client\n```\n# from https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F44654216\u002Fcorrect-way-to-install-psql-without-full-postgres-on-macos\nbrew install libpq\nbrew link --force libpq\n```\n\n#### Rustc version\n\nThe project uses [rust toolchain file](.\u002Frust-toolchain.toml) to define the version it's built with in CI for testing and local builds.\n\nThis file is automatically picked up by [`rustup`](https:\u002F\u002Frust-lang.github.io\u002Frustup\u002Foverrides.html#the-toolchain-file) that installs (if absent) and uses the toolchain version pinned in the file.\n\nrustup users who want to build with another toolchain can use the [`rustup override`](https:\u002F\u002Frust-lang.github.io\u002Frustup\u002Foverrides.html#directory-overrides) command to set a specific toolchain for the project's directory.\n\nnon-rustup users most probably are not getting the same toolchain automatically from the file, so are responsible to manually verify that their toolchain matches the version in the file.\nNewer rustc versions most probably will work fine, yet older ones might not be supported due to some new features used by the project or the crates.\n\n#### Building on Linux\n\n1. Build neon and patched postgres\n```\n# Note: The path to the neon sources can not contain a space.\n\ngit clone --recursive https:\u002F\u002Fgithub.com\u002Fneondatabase\u002Fneon.git\ncd neon\n\n# The preferred and default is to make a debug build. This will create a\n# demonstrably slower build than a release build. For a release build,\n# use \"BUILD_TYPE=release make -j`nproc` -s\"\n# Remove -s for the verbose build log\n\nmake -j`nproc` -s\n```\n\n#### Building on OSX\n\n1. Build neon and patched postgres\n```\n# Note: The path to the neon sources can not contain a space.\n\ngit clone --recursive https:\u002F\u002Fgithub.com\u002Fneondatabase\u002Fneon.git\ncd neon\n\n# The preferred and default is to make a debug build. This will create a\n# demonstrably slower build than a release build. For a release build,\n# use \"BUILD_TYPE=release make -j`sysctl -n hw.logicalcpu` -s\"\n# Remove -s for the verbose build log\n\nmake -j`sysctl -n hw.logicalcpu` -s\n```\n\n#### Dependency installation notes\nTo run the `psql` client, install the `postgresql-client` package or modify `PATH` and `LD_LIBRARY_PATH` to include `pg_install\u002Fbin` and `pg_install\u002Flib`, respectively.\n\nTo run the integration tests or Python scripts (not required to use the code), install\nPython (3.11 or higher), and install the python3 packages using `.\u002Fscripts\u002Fpysync` (requires [poetry>=1.8](https:\u002F\u002Fpython-poetry.org\u002F)) in the project directory.\n\n\n#### Running neon database\n1. Start pageserver and postgres on top of it (should be called from repo root):\n```sh\n# Create repository in .neon with proper paths to binaries and data\n# Later that would be responsibility of a package install script\n> cargo neon init\nInitializing pageserver node 1 at '127.0.0.1:64000' in \".neon\"\n\n# start pageserver, safekeeper, and broker for their intercommunication\n> cargo neon start\nStarting neon broker at 127.0.0.1:50051.\nstorage_broker started, pid: 2918372\nStarting pageserver node 1 at '127.0.0.1:64000' in \".neon\".\npageserver started, pid: 2918386\nStarting safekeeper at '127.0.0.1:5454' in '.neon\u002Fsafekeepers\u002Fsk1'.\nsafekeeper 1 started, pid: 2918437\n\n# create initial tenant and use it as a default for every future neon_local invocation\n> cargo neon tenant create --set-default\ntenant 9ef87a5bf0d92544f6fafeeb3239695c successfully created on the pageserver\nCreated an initial timeline 'de200bd42b49cc1814412c7e592dd6e9' at Lsn 0\u002F16B5A50 for tenant: 9ef87a5bf0d92544f6fafeeb3239695c\nSetting tenant 9ef87a5bf0d92544f6fafeeb3239695c as a default one\n\n# create postgres compute node\n> cargo neon endpoint create main\n\n# start postgres compute node\n> cargo neon endpoint start main\nStarting new endpoint main (PostgreSQL v14) on timeline de200bd42b49cc1814412c7e592dd6e9 ...\nStarting postgres at 'postgresql:\u002F\u002Fcloud_admin@127.0.0.1:55432\u002Fpostgres'\n\n# check list of running postgres instances\n> cargo neon endpoint list\n ENDPOINT  ADDRESS          TIMELINE                          BRANCH NAME  LSN        STATUS\n main      127.0.0.1:55432  de200bd42b49cc1814412c7e592dd6e9  main         0\u002F16B5BA8  running\n```\n\n2. Now, it is possible to connect to postgres and run some queries:\n```text\n> psql -p 55432 -h 127.0.0.1 -U cloud_admin postgres\npostgres=# CREATE TABLE t(key int primary key, value text);\nCREATE TABLE\npostgres=# insert into t values(1,1);\nINSERT 0 1\npostgres=# select * from t;\n key | value\n-----+-------\n   1 | 1\n(1 row)\n```\n\n3. And create branches and run postgres on them:\n```sh\n# create branch named migration_check\n> cargo neon timeline branch --branch-name migration_check\nCreated timeline 'b3b863fa45fa9e57e615f9f2d944e601' at Lsn 0\u002F16F9A00 for tenant: 9ef87a5bf0d92544f6fafeeb3239695c. Ancestor timeline: 'main'\n\n# check branches tree\n> cargo neon timeline list\n(L) main [de200bd42b49cc1814412c7e592dd6e9]\n(L) ┗━ @0\u002F16F9A00: migration_check [b3b863fa45fa9e57e615f9f2d944e601]\n\n# create postgres on that branch\n> cargo neon endpoint create migration_check --branch-name migration_check\n\n# start postgres on that branch\n> cargo neon endpoint start migration_check\nStarting new endpoint migration_check (PostgreSQL v14) on timeline b3b863fa45fa9e57e615f9f2d944e601 ...\nStarting postgres at 'postgresql:\u002F\u002Fcloud_admin@127.0.0.1:55434\u002Fpostgres'\n\n# check the new list of running postgres instances\n> cargo neon endpoint list\n ENDPOINT         ADDRESS          TIMELINE                          BRANCH NAME      LSN        STATUS\n main             127.0.0.1:55432  de200bd42b49cc1814412c7e592dd6e9  main             0\u002F16F9A38  running\n migration_check  127.0.0.1:55434  b3b863fa45fa9e57e615f9f2d944e601  migration_check  0\u002F16F9A70  running\n\n# this new postgres instance will have all the data from 'main' postgres,\n# but all modifications would not affect data in original postgres\n> psql -p 55434 -h 127.0.0.1 -U cloud_admin postgres\npostgres=# select * from t;\n key | value\n-----+-------\n   1 | 1\n(1 row)\n\npostgres=# insert into t values(2,2);\nINSERT 0 1\n\n# check that the new change doesn't affect the 'main' postgres\n> psql -p 55432 -h 127.0.0.1 -U cloud_admin postgres\npostgres=# select * from t;\n key | value\n-----+-------\n   1 | 1\n(1 row)\n```\n\n4. If you want to run tests afterwards (see below), you must stop all the running pageserver, safekeeper, and postgres instances\n   you have just started. You can terminate them all with one command:\n```sh\n> cargo neon stop\n```\n\nMore advanced usages can be found at [Local Development Control Plane (`neon_local`))](.\u002Fcontrol_plane\u002FREADME.md).\n\n#### Handling build failures\n\nIf you encounter errors during setting up the initial tenant, it's best to stop everything (`cargo neon stop`) and remove the `.neon` directory. Then fix the problems, and start the setup again.\n\n## Running tests\n\n### Rust unit tests\n\nWe are using [`cargo-nextest`](https:\u002F\u002Fnexte.st\u002F) to run the tests in Github Workflows.\nSome crates do not support running plain `cargo test` anymore, prefer `cargo nextest run` instead.\nYou can install `cargo-nextest` with `cargo install cargo-nextest`.\n\n### Integration tests\n\nEnsure your dependencies are installed as described [here](https:\u002F\u002Fgithub.com\u002Fneondatabase\u002Fneon#dependency-installation-notes).\n\n```sh\ngit clone --recursive https:\u002F\u002Fgithub.com\u002Fneondatabase\u002Fneon.git\n\nCARGO_BUILD_FLAGS=\"--features=testing\" make\n\n.\u002Fscripts\u002Fpytest\n```\n\nBy default, this runs both debug and release modes, and all supported postgres versions. When\ntesting locally, it is convenient to run just one set of permutations, like this:\n\n```sh\nDEFAULT_PG_VERSION=17 BUILD_TYPE=release .\u002Fscripts\u002Fpytest\n```\n\n## Flamegraphs\n\nYou may find yourself in need of flamegraphs for software in this repository.\nYou can use [`flamegraph-rs`](https:\u002F\u002Fgithub.com\u002Fflamegraph-rs\u002Fflamegraph) or the original [`flamegraph.pl`](https:\u002F\u002Fgithub.com\u002Fbrendangregg\u002FFlameGraph). Your choice!\n\n>[!IMPORTANT]\n> If you're using `lld` or `mold`, you need the `--no-rosegment` linker argument.\n> It's a [general thing with Rust \u002F lld \u002F mold](https:\u002F\u002Fcrbug.com\u002F919499#c16), not specific to this repository.\n> See [this PR for further instructions](https:\u002F\u002Fgithub.com\u002Fneondatabase\u002Fneon\u002Fpull\u002F6764).\n\n## Cleanup\n\nFor cleaning up the source tree from build artifacts, run `make clean` in the source directory.\n\nFor removing every artifact from build and configure steps, run `make distclean`, and also consider removing the cargo binaries in the `target` directory, as well as the database in the `.neon` directory. Note that removing the `.neon` directory will remove your database, with all data in it. You have been warned!\n\n## Documentation\n\n[docs](\u002Fdocs) Contains a top-level overview of all available markdown documentation.\n\n- [sourcetree.md](\u002Fdocs\u002Fsourcetree.md) contains overview of source tree layout.\n\nTo view your `rustdoc` documentation in a browser, try running `cargo doc --no-deps --open`\n\nSee also README files in some source directories, and `rustdoc` style documentation comments.\n\nOther resources:\n\n- [SELECT 'Hello, World'](https:\u002F\u002Fneon.com\u002Fblog\u002Fhello-world\u002F): Blog post by Nikita Shamgunov on the high level architecture\n- [Architecture decisions in Neon](https:\u002F\u002Fneon.com\u002Fblog\u002Farchitecture-decisions-in-neon\u002F): Blog post by Heikki Linnakangas\n- [Neon: Serverless PostgreSQL!](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=rES0yzeERns): Presentation on storage system by Heikki Linnakangas in the CMU Database Group seminar series\n\n### Postgres-specific terms\n\nDue to Neon's very close relation with PostgreSQL internals, numerous specific terms are used.\nThe same applies to certain spelling: i.e. we use MB to denote 1024 * 1024 bytes, while MiB would be technically more correct, it's inconsistent with what PostgreSQL code and its documentation use.\n\nTo get more familiar with this aspect, refer to:\n\n- [Neon glossary](\u002Fdocs\u002Fglossary.md)\n- [PostgreSQL glossary](https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002F14\u002Fglossary.html)\n- Other PostgreSQL documentation and sources (Neon fork sources can be found [here](https:\u002F\u002Fgithub.com\u002Fneondatabase\u002Fpostgres))\n\n## Join the development\n\n- Read [CONTRIBUTING.md](\u002FCONTRIBUTING.md) to learn about project code style and practices.\n- To get familiar with a source tree layout, use [sourcetree.md](\u002Fdocs\u002Fsourcetree.md).\n- To learn more about PostgreSQL internals, check http:\u002F\u002Fwww.interdb.jp\u002Fpg\u002Findex.html\n","Neon 是一个开源的无服务器 Postgres 数据库平台，通过分离存储和计算层实现了自动扩展、类似代码的数据库分支以及零规模扩展。项目使用 Rust 语言开发，其核心功能包括基于集群节点重新分配数据的可扩展存储后端（Pageserver）和提供冗余 WAL 服务的安全守护者（Safekeepers）。这种架构特别适合需要高可用性、弹性伸缩能力且对成本敏感的应用场景，如微服务架构下的数据库服务或是希望减少运维负担的小型至中型企业。此外，Neon 支持本地安装用于开发测试，也提供了免费层级供用户快速上手体验。",2,"2026-06-11 03:03:03","top_language"]