Merge pull request #2567 from supabase/blog/postgres-13

Postgres version updates
This commit is contained in:
Copple authored and GitHub committed 2021-07-26 23:44:21 +08:00
commit b280bd503b
19 files changed
+278 -4

No files matched your search

@@ -35,7 +35,7 @@ One of the best things about building Supabase is the community. We're even luck
### Where?
Blog post coming soon. Follow our [Twitter](https://twitter.com/supabase) to get notified immediately.
Read the [blog post](/blog/2021/07/26/supabase-community-day).
## Tuesday 27 July: Storage v2
@@ -8,7 +8,7 @@ authorURL: https://github.com/roryw10
image: epsilon3/og-epsilon3.jpg
thumb: epsilon3/cover-epsilon3.jpg
tags:
- launch-week
- case-study
date: '2021-07-26'
toc_depth: 2
---
@@ -0,0 +1,136 @@
---
title: 'Supabase Community Day'
description: Community Day
author: steve_chavez
author_url: https://github.com/steve-chavez
author_image_url: https://github.com/steve-chavez.png
authorURL: https://github.com/steve-chavez
thumb: launch-week-sql-day-1-community-day/launch-week-sql-day-1-community-day-thumb.jpg
image: launch-week-sql-day-1-community-day/launch-week-sql-day-1-community-day-og.jpg
tags:
- launch-week
date: '2021-07-26'
toc_depth: 2
---
Supabase has grown a lot [^1] since last [Launch Week](https://supabase.io/blog/2021/03/25/launch-week),
but it wouldn't be possible without some amazing open source tools.
Since we're shipping a few upgrades this week we feel it's only fair
to shine a spotlight on some tools and community efforts that make Supabase possible.
## PostgreSQL version 13.3
![Postgres version 13 released](/new/images/blog/launch-week-sql-day-1-community-day/launch-week-sql-day-1-community-day-postgres-upgrade.jpg)
PostgreSQL is a big part of Supabase, and it's also a huge inspiration - the speed that they ship, their community organization,
and their absolute dedication towards reliability. PostgreSQL 13.3 was released in June and (from today) every new Supabase project will
be on [PostgreSQL version 13.3](/blog/2021/07/26/supabase-postgres-13).
### Giving back
Supabase makes it easy to get started with Postgres, but we think you should try it even if you don't want to use Supabase. Here's a
few ways we make it easy to use PostgreSQL without Supabase:
- Supabase was the first company to put Postgres in the [Digital Ocean Marketplace](https://marketplace.digitalocean.com/apps/supabase-postgres).
Since then it's been installed over 1000 times (not by us!).
- We provide a Postgres image in the [AWS marketplace](https://aws.amazon.com/marketplace/pp/prodview-lk2pfa5nafecg).
- We're packaging the Marketplace version, [along with "Bundles"](/blog/2021/07/26/supabase-postgres-13#postgresql-bundles)
- We're developing a few extensions: `[supautils](https://github.com/supabase/supautils)`, `[pg_net](https://github.com/supabase/pg_net)`, and a couple more soon to be announced.
### Get involved
- Follow the official [PostgreSQL Twitter](https://twitter.com/PostgreSQL) account.
- Join the official [mailing lists](https://www.postgresql.org/community/).
## PostgREST version 8.0
![PostgREST version 8.0 released](/new/images/blog/launch-week-sql-day-1-community-day/launch-week-sql-day-1-community-day-postgrest.jpg)
This new PostgREST stable version comes with the improvements we've made to make it truly enterprise-grade. Due to our commitment with OSS,
all of our improvements are upstreamed, so you can fully use them on your own self-hosted projects.
### Highlights
**Improved Performance**: Due to Supabase's high throughput requirements, PostgREST 8.0 handles up to 50% more throughput on
GET requests, according to our benchmarks. We converted all SELECT queries to use prepared statements and reduced logging
verbosity to make this possible.
**Reduced downtime**: we need PostgREST to be more "set it and forget it", so reloading schema cache is now zero downtime.
**Dynamic Configuration**: we've made it easier to handle PostgREST configuration at scale (we manage thousands of PostgREST instances).
This new version includes the ability to use an in-database configuration that is reloadable through a `NOTIFY` command.
**Less admin burden**: PostgREST previously required the `pg_listen` utility to reload its schema cache. This is no longer needed.
The schema cache is reloadable with a simple `NOTIFY` command.
**Better diagnostic information**: in the rare cases where PostgREST fails, we want to find the exact root cause quickly.
For this we've improved its logging by adding logging levels and timestamps to all server errors.
**Simpler OpenAPI**: showing a complete OpenAPI output used to require a highly-privileged `anon` role. With the new `openapi-mode`,
this is no longer needed and `anon` can be kept with minimal privileges.
The community has made many more enhancements and bug fixes for the new version. See
[v8.0 CHANGELOG](https://github.com/PostgREST/postgrest/releases/tag/v8.0.0) for the full list.
### Get Started
Want to get started with PostgREST? The Supabase community has built a number of client libraries to make it simpler to use:
- Javascript: [postgrest-js](https://github.com/supabase/postgrest-js)
- Rust: [postgrest-rs](https://github.com/supabase/postgrest-rs)
- Go: [postgrest-go](https://github.com/supabase/postgrest-go)
- Python: [postgrest-py](https://github.com/supabase/postgrest-py)
- Dart: [postgrest-dart](https://github.com/supabase/postgrest-dart)
- C#: [postgrest-csharp](https://github.com/supabase/postgrest-csharp)
- Swift: [postgrest-swift](https://github.com/supabase/postgrest-swift)
- Ruby: [postgrest-rb](https://github.com/supabase/postgrest-rb)
- Kotlin: [postgrest-kt](https://github.com/supabase/postgrest-kt)
### Get involved
- Help with [PostgREST development](https://github.com/PostgREST/postgrest/blob/main/.github/CONTRIBUTING.md).
- Help with [PostgREST docs translations](https://github.com/PostgREST/postgrest-docs/issues/393).
- Follow the official [PostgREST Twitter](https://twitter.com/postgrest_org) account.
## Supabase Flutter/Dart (Beta release)
![Supabase Flutter Beta release](/new/images/blog/launch-week-sql-day-1-community-day/launch-week-sql-day-1-community-day-flutter-library.jpg)
While the Supabase team have been busy with the Javascript libraries, the community have been beavering away with Dart. They've even
[built fully-functional apps](https://www.producthunt.com/posts/spot-2d300f54-7a0a-4dbf-aee2-4a75311217cc) using Supabase Auth and Storage.
Today the Community are releasing both the the Flutter and Dart libraries in Beta (with a bit of help from the Supabase team).
### Get started
- Check out the [Flutter Quickstart Guide](https://supabase.io/docs/guides/with-flutter)
- Check out the code:
- Supabase Flutter: [GitHub](https://github.com/supabase/supabase-flutter/) | [Release](https://pub.dev/packages/supabase_flutter)
- Supabase Dart: [GitHub](https://github.com/supabase/supabase-dart/) | [Release](https://pub.dev/packages/supabase)
### Get involved
- Help [write](https://supabase.io/docs/handbook/supasquad#author) the Flutter Docs.
- Help [maintain](https://supabase.io/docs/handbook/supasquad#maintainer) the [Flutter](https://github.com/supabase/supabase-flutter/)
and [Dart](https://github.com/supabase/supabase-dart/) libraries.
## Supabase Discord
![Supabase Discord](/new/images/blog/launch-week-sql-day-1-community-day/launch-week-sql-day-1-community-day-discord-server.jpg)
OK, OK, we get it - GitHub [Discussions](https://github.com/supabase/supabase/discussions) aren't enough for y'all. While we've been trying
to keep the conversation contained to our GitHub org, the community has been creating [subreddits](https://www.reddit.com/r/Supabase/),
StackOverflow [tags](https://stackoverflow.com/questions/tagged/supabase), and GitHub [topics](https://github.com/topics/supabase).
A few weeks ago one of the community created a Community-led Discord, and so the team figured we might as well join the fun.
We'll still be using Discussions for debugging, but if you're looking for a place to hang out with Supabase developers, Discord is where to find it.
### Get involved
Join the Supabase Community Discord: [https://discord.gg/AYybku5cUz](https://discord.gg/AYybku5cUz), say hi, and start building.
[^1]:
Supabase has been one of the fastest growing startups [on GitHub](https://github.com/supabase/supabase) for four consecutive quarters:
207% in [Q3](https://runacap.com/ross-index/q3-2020/) 2020; 1,373% in [Q4](https://runacap.com/ross-index/q4-2020/) 2020;
462% in [Q1](https://runacap.com/ross-index/q1-2021/) 2021; 1,653% in [Q2](https://runacap.com/ross-index/q2-2021/) 2021.
@@ -0,0 +1,122 @@
---
title: 'Supabase is now on Postgres 13.3'
description: From today, new Supabase projects will be on a version of Supabase Postgres that runs on Postgres 13.3.
author: angelico_de_los_reyes
author_url: https://github.com/dragarcia
author_image_url: https://github.com/dragarcia.png
authorURL: https://github.com/dragarcia
image: pg13/postgres-13-og.jpg
thumb: pg13/postgres-13-thumb.jpg
tags:
- launch-week
- database
date: '2021-07-26'
toc_depth: 2
---
From today, new Supabase projects will be on a version of [Supabase Postgres](https://github.com/supabase/postgres) that runs
on [Postgres 13.3](https://www.postgresql.org/about/news/postgresql-13-released-2077/). This won't be the only big change however in this version.
Here are a few other things that have changed under the hood.
## PostgreSQL version 13.3
We've jumped from PostgreSQL 12.0 to PostgreSQL [version 13.3](https://www.postgresql.org/docs/13/release-13-3.html), introducing
significant performance improvements and some great new functionality. Some changes include:
- native [UUID generation](https://www.postgresql.org/docs/13/functions-uuid.html) (!) using `gen_random_uuid`
- a new JSONB [datetime](https://www.postgresql.org/docs/13/functions-json.html) function
- vacuuming indexes in [parallel](https://www.postgresql.org/docs/13/sql-vacuum.html)
- [incremental sorting](https://www.postgresql.org/docs/13/using-explain.html#USING-EXPLAIN-BASICS)
- smaller [btree indexes](https://www.postgresql.org/docs/13/btree-implementation.html#BTREE-DEDUPLICATION)
- improvements to [extended statistics](https://www.postgresql.org/docs/13/planner-stats.html#PLANNER-STATS-EXTENDED)
## Supabase Versioning
Our [Postgres repo](https://github.com/supabase/postgres) has jumped from `0.15.0` to `13.3.0`. From now on, both major and minor versions of
Supabase Postgres will follow PostgreSQL. This makes it much easier to ascertain what version of PostgreSQL is installed. In the situation wherein
there are no updates to PostgreSQL in between releases, the patch version will be bumped up.
## Large System Extensions (LSE) enabled for ARM instances
<small>
*Disclaimer for self-hosting: This is not available for x86 instances. All instances on the
Supabase platform have this enabled by default.*
</small>
The recent wave of Graviton 2 instances from AWS introduces support for the Large System Extensions (LSE). This looks to greatly enhance
application performance through atomics, and
[improves locking and synchronisation performance across large systems](https://github.com/aws/aws-graviton-getting-started#building-for-graviton-and-graviton2).
### Preliminary Benchmarks
Below is a comparison between the ARM versions of Supabase Postgres `0.15.0` and `13.3.0`. Both are using `m6gd.8xlarge` instances
and follow the PostgreSQL configuration [here](https://www.percona.com/blog/2021/01/22/postgresql-on-arm-based-aws-ec2-instances-is-it-any-good/).
The following configuration of `pgbench` was used.
```bash hideCopy
pgbench -i -s 150
```
Running the benchmark with 2, 4, 8, 16, 64, and 128 clients:
```bash hideCopy
pgbench -P 5 -c {num_clients} -j {num_clients} -T 300 -M prepared postgres
```
![PostgreSQL 13.3 performance](/new/images/blog/pg13/postgres-13-performance.png)
## Ubuntu 20.04
We have taken the opportunity to upgrade new projects from Ubuntu 18.04 to Ubuntu 20.04. A switch to Ubuntu 20.04 guarantees that the underlying
OS of Supabase Postgres is supported by the Canonical team up until the year 2025 (2023 for Ubuntu 18.04).
## Built from source
Driven by the need to enable LSE, the underlying PostgreSQL in this version was built from the ground up instead of downloaded binaries.
Supabase Postgres can now be easily upgraded whenever a new major or minor version of PostgreSQL is released. When PostgreSQL 14 comes out,
expect Supabase Postgres 14 to quickly follow.
## New Extensions
### `pgRouting`
An extension of PostGIS, [`pgRouting`](https://pgrouting.org/) provides geospatial routing functionality.
More information can be found [here](https://docs.pgrouting.org/latest/en/index.html).
### `wal2json`
Converts WAL output into clean and organized JSON objects.
More information can be found [here](https://github.com/eulerto/wal2json).
## Enhanced security
To help combat brute force attacks, `fail2ban` has now been configured to protect direct connections to Postgres. This applies to both
ports `5432` (PostgreSQL) and `6543` (PgBouncer).
IPs get banned for 10 minutes after three failed attempts, and we'll continue to fine-tune and improve the protections applied to the
database servers based on evolving traffic patterns.
## PostgreSQL bundles
`[Coming Soon]`
Last but not the least, we're diversifying the images of Supabase Postgres available in the AWS and Digital Ocean Marketplaces.
Instead of a single option, we'll soon offer four configurations of PostgreSQL. Each bundle offers functionality for
common use-cases. For example, if you're using Postgres with Serverless functions, you might want to run the PgBouncer bundle. If you want an
HTTP API with your Postgres offering you might want to run the PostgREST bundle.
| `Name` | `PostgreSQL` | `PgBouncer` | `PostgREST` |
| ----------------------------------- | ------------ | ----------- | ----------- |
| Supabase Postgres | ✅ | | |
| Supabase Postgres: PgBouncer Bundle | ✅ | ✅ | |
| Supabase Postgres: PostgREST Bundle | ✅ | | ✅ |
| Supabase Postgres: Complete Bundle | ✅ | ✅ | ✅ |
Each offering will be available for both the `x86` and `arm` architectures.
## Try PostgreSQL 13
Try the new features of PostgreSQL 13.3 today by creating a [new project](https://app.supabase.io/) on Supabase.
+1 -1
View File
@@ -65,7 +65,7 @@
"steve_chavez": {
"author": "Steve Chavez",
"author_url": "https://github.com/steve-chavez",
"position": "Engineering",
"position": "Engineering & PostgREST maintainer",
"username": "steve-chavez",
"author_image_url": "https://github.com/steve-chavez.png"
}
@@ -173,7 +173,7 @@ function BlogPostPage(props: any) {
}}
/>
<DefaultLayout>
<div className="bg-white dark:bg-dark-800 overflow-hidden py-12">
<div className="bg-white dark:bg-dark-800 overflow-hidden mb-12">
<div className="container px-8 sm:px-16 xl:px-20 lg:mt-16 mx-auto">
<div className="max-w-6xl mx-auto">
<div className="lg:py-12 grid grid-cols-12 lg:gap-16">
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

+16
View File
@@ -8,6 +8,22 @@
<lastBuildDate>Sun, 25 Jul 2021 16:00:00 GMT</lastBuildDate>
<atom:link href="https://supabase.io/blog/rss.xml" rel="self" type="application/rss+xml"/>
<item>
<guid>https://supabase.io/blog/2021/07/26/supabase-postgres-13</guid>
<title>Supabase is now on Postgres 13.3</title>
<link>https://supabase.io/blog/2021/07/26/supabase-postgres-13</link>
<description>From today, new Supabase projects will be on a version of Supabase Postgres that runs on Postgres 13.3.</description>
<pubDate>Sun, 25 Jul 2021 16:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.io/blog/2021/07/26/supabase-community-day</guid>
<title>Supabase Community Day</title>
<link>https://supabase.io/blog/2021/07/26/supabase-community-day</link>
<description>Community Day</description>
<pubDate>Sun, 25 Jul 2021 16:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.io/blog/2021/07/26/epsilon3-self-hosting</guid>
<title>Epsilon3 Self-Host Supabase To Revolutionize Space Operations </title>