Adds a new blog post for partial dumps

This commit is contained in:
Copple committed 2022-06-28 17:35:02 -05:00
1 parent 9dc74cc114
commit d8adca187a
2 files changed
+285 -99

No files matched your search

@@ -0,0 +1,178 @@
---
title: Partial data dumps using Postgres Row Level Security
description: Using RLS to dump only a subset of your database.
author: paul_copplestone
image: python-1/python.jpg
thumb: python-1/python.jpg
tags:
- postgresql
- data
date: '2022-06-28'
toc_depth: 3
---
When working with databases, it's common to create a `seed.sql` file which contains a subset of production data for testing.
During early development, it's fine to dump the entire database and restore it on your development machine.
However, once you have production users this becomes a security issue - do you really want to dump your users' data onto your local machines?
There are many ways to solve this, but recently I stumbled upon a neat way to do it using PostgreSQL's Row Level Security (RLS).
The concept is simple:
1. Create a database user with restricted access.
2. Define some RLS rules for that user, limiting what data they can access.
3. Run `pg_dump` as that user.
For this scenario, let's imagine that you have a table called `profiles` in your database:
```sql hideCopy
create table profiles (
id serial primary key,
name text,
email text
);
```
| `id` | `name` | `email` |
| ---- | ------------ | ------------------------ |
| `1` | `Employee 1` | `employee1@supabase.com` |
| `2` | `Employee 2` | `employee2@supabase.com` |
| `3` | `Employee 3` | `employee3@supabase.com` |
| `4` | `Jenny` | `jenny@example.com` |
| `5` | `Joe` | `joe@example.com` |
In this case, if we ran a `pg_dump` we will save Jenny and Joe's personal data. We don't want that, so let's create a Postgres user called `exporter`, who can only dump the data we want.
### Step 1: Prepare a user
Create a user to connect to the database. We'll call them `exporter` and grant them access to the public schema:
```sql hideCopy
-- Create a new user with login privileges
create user exporter
with password 'exporter_secure_password';
-- Allow this user to select the rows we need
grant usage on schema public to exporter;
grant select on profiles to exporter;
```
### Step 2: Create data access rules
Let's turn on RLS for this table and limit the data which `exporter` can access:
```sql hideCopy
-- Turn on Row Level Security
alter table profiles
enable row level security;
-- Only dump data for internal team members 1, 2, 3
create policy "Data dump rule" on profiles
for select
to exporter
using (
id in (1, 2, 3)
);
```
### Step 3: Export the data
Now we can use `pg_dump` to get only the data that we need.
Run the dump with the `exporter` user that we created above and use the `--enable-row-security` flag to ensure that the dump succeeds.
```bash hideCopy
# Dump all the data into a "seed.sql" file
# which we can use to restore our local databases.
pg_dump \
-h db.host.supabase.co \
-U exporter \
-d postgres \
-n public \
--data-only \
--enable-row-security \
--table=profiles \
> seed.sql
```
And that's it. You can follow this same pattern for any tables that you want to dump.
## Data access patterns
RLS is a bit like appending a “where” clause to a `select`, so you can create all sorts of data access patterns. Let's see a few more which are useful for extracting seed data.
### Using email rules
Instead of using hardcoded numbers in our RLS policies, we could use email extensions to determine the users who we want to export:
```sql hideCopy
-- Only dump data for supabase employees
create policy "Data dump rule" on profiles
for select
to exporter
using (
substring(email from '@(.*)$') = 'supabase.com'
);
```
### Only recent data
If we have a table with a lot of data, like an `analytics` table, we might only care about the last 2 months of data.
```sql hideCopy
-- A fake analytics table where we store actions a user takes
create table analytics (
id serial primary key,
ts timestamptz default now(),
profile_id references profiles,
event text
);
alter table profiles
enable row level security;
-- Here is an "age" rule so that we only dump the most recent analytics
create policy "Data dump rule" on logs
for select
to exporter
using (
profile_id in (1, 2, 3) and
ts > now() - interval '2 MONTHS' -- here's the magic
);
```
### Using flags
If you don't mind having some additional columns in you database, you can add flags to each row to determine whether it's safe to export.
```sql hideCopy
create table profiles (
id serial primary key,
name text,
email text,
is_exportable boolean -- make this "TRUE" if you want to allow access
);
alter table profiles
enable row level security;
-- Only dump data for internal team members 1, 2, 3
create policy "Data dump rule" on profiles
for select
to exporter
using ( is_exportable = true );
```
## Conclusion
Using `seed` data isn't the only way to run development environments. It's also possible to run fully-masked copies of your database using tools like
[Snaplet](https://docs.snaplet.dev/tutorials/supabase-clone-environments).
We're also bullish on copy-on-write strategies which allow users to "fork" a database at a point in time,
a strategy used by [Database Lab Engine](https://postgres.ai/docs/database-lab).
DLE uses the ZFS file system to achieve this, but it's within reach of the Postgres core once alternative storage strategies become easier to implement.
If you want to try out the steps we described in this article, fire up a full PostgreSQL database: [database.new](https://database.new)
+107 -99
View File
@@ -5,15 +5,23 @@
<link>https://supabase.com</link>
<description>Latest news from Supabase</description>
<language>en</language>
<lastBuildDate>Wed, 22 Jun 2022 00:00:00 GMT</lastBuildDate>
<lastBuildDate>Mon, 27 Jun 2022 05:00:00 GMT</lastBuildDate>
<atom:link href="https://supabase.com/blog/rss.xml" rel="self" type="application/rss+xml"/>
<item>
<guid>https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls</guid>
<title>Partial data dumps using Postgres Row Level Security</title>
<link>https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls</link>
<description>An example of how to load data into Supabase using supabase-py</description>
<pubDate>Mon, 27 Jun 2022 05:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.com/blog/2022/06/15/loading-data-supabase-python</guid>
<title>Python data loading with Supabase</title>
<link>https://supabase.com/blog/2022/06/15/loading-data-supabase-python</link>
<description>An example of how to load data into Supabase using supabase-py</description>
<pubDate>Fri, 17 Jun 2022 00:00:00 GMT</pubDate>
<pubDate>Thu, 16 Jun 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -21,7 +29,7 @@
<title>Supabase Beta May 2022</title>
<link>https://supabase.com/blog/2022/06/07/beta-update-may-2022</link>
<description>Product and community updates including wildcard auth redirects, edge functions with webhooks, and Prometheus endpoints for everybody.</description>
<pubDate>Wed, 01 Jun 2022 00:00:00 GMT</pubDate>
<pubDate>Tue, 31 May 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -29,7 +37,7 @@
<title>How Mike Lyndon is using Supabase to accelerate development of AllPullTogether</title>
<link>https://supabase.com/blog/2022/05/26/how-supabase-accelerates-development-of-all-pull-together</link>
<description>Mike Lyndon is learning web development as he builds AllPullTogether, and Supabase is helping him accelerate what he can accomplish.</description>
<pubDate>Thu, 26 May 2022 00:00:00 GMT</pubDate>
<pubDate>Wed, 25 May 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -37,7 +45,7 @@
<title>Works With Supabase - announcing our Partner Gallery</title>
<link>https://supabase.com/blog/2022/04/20/partner-gallery-works-with-supabase</link>
<description>Introducing our Partner Gallery - open source and made with Supabase.</description>
<pubDate>Wed, 20 Apr 2022 00:00:00 GMT</pubDate>
<pubDate>Tue, 19 Apr 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -45,7 +53,7 @@
<title>Bring the Func Hackathon Winners 2022</title>
<link>https://supabase.com/blog/2022/04/18/bring-the-func-hackathon-winners</link>
<description>Celebrating many amazing OSS Hackathon projects using GraphQL and Edge Functions.</description>
<pubDate>Mon, 18 Apr 2022 00:00:00 GMT</pubDate>
<pubDate>Sun, 17 Apr 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -53,7 +61,7 @@
<title>Supabase Beta March 2022</title>
<link>https://supabase.com/blog/2022/04/15/beta-update-march-2022</link>
<description>Functions, GraphQL, and much more.</description>
<pubDate>Fri, 15 Apr 2022 00:00:00 GMT</pubDate>
<pubDate>Thu, 14 Apr 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -61,7 +69,7 @@
<title>Supabrew - Never Code Thirsty</title>
<link>https://supabase.com/blog/2022/04/01/supabrew</link>
<description>A light and refreshing non-alcoholic beer for devs.</description>
<pubDate>Fri, 01 Apr 2022 00:00:00 GMT</pubDate>
<pubDate>Fri, 01 Apr 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -69,7 +77,7 @@
<title>Supabase Realtime, with Multiplayer Features</title>
<link>https://supabase.com/blog/2022/04/01/supabase-realtime-with-multiplayer-features</link>
<description>Today we're announced Realtime, with multiplayer features. Realtime enables broadcast, presence, and listening to database changes delivered over WebSockets.</description>
<pubDate>Fri, 01 Apr 2022 00:00:00 GMT</pubDate>
<pubDate>Fri, 01 Apr 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -77,7 +85,7 @@
<title>Hackathon: Bring the Func(🕺)</title>
<link>https://supabase.com/blog/2022/04/01/hackathon-bring-the-func</link>
<description>Build open-source projects with our latest features, win limited edition swag and plant a tree!</description>
<pubDate>Fri, 01 Apr 2022 00:00:00 GMT</pubDate>
<pubDate>Fri, 01 Apr 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -85,7 +93,7 @@
<title>Edge Functions are now available in Supabase</title>
<link>https://supabase.com/blog/2022/03/31/supabase-edge-functions</link>
<description>Today we're launching Edge Functions. Edge Functions let you execute Typescript code close to your users, no matter where they're located.</description>
<pubDate>Thu, 31 Mar 2022 00:00:00 GMT</pubDate>
<pubDate>Wed, 30 Mar 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -93,7 +101,7 @@
<title>Introducing Supabase Enterprise</title>
<link>https://supabase.com/blog/2022/03/30/supabase-enterprise</link>
<description>Today we are releasing Supabase Enterprise, a suite of features to scale your project.</description>
<pubDate>Wed, 30 Mar 2022 00:00:00 GMT</pubDate>
<pubDate>Tue, 29 Mar 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -101,7 +109,7 @@
<title>GraphQL is now available in Supabase</title>
<link>https://supabase.com/blog/2022/03/29/graphql-now-available</link>
<description>GraphQL support is now in general availability on the Supabase platform via our open source PostgreSQL extension, pg_graphql (beta).</description>
<pubDate>Tue, 29 Mar 2022 00:00:00 GMT</pubDate>
<pubDate>Mon, 28 Mar 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -109,7 +117,7 @@
<title>Community Day</title>
<link>https://supabase.com/blog/2022/03/28/community-day</link>
<description>Kicking off Launch Week IV with contributors, partners, and friends.</description>
<pubDate>Mon, 28 Mar 2022 00:00:00 GMT</pubDate>
<pubDate>Sun, 27 Mar 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -117,7 +125,7 @@
<title>Supabase Launch Week IV</title>
<link>https://supabase.com/blog/2022/03/25/supabase-launch-week-four</link>
<description>Launch Week 4: One new feature every day for an entire week. Starting Monday 28th March.</description>
<pubDate>Fri, 25 Mar 2022 00:00:00 GMT</pubDate>
<pubDate>Thu, 24 Mar 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -125,7 +133,7 @@
<title>Should I Open Source my Company?</title>
<link>https://supabase.com/blog/2022/03/25/should-i-open-source-my-company</link>
<description>The unexpected upsides of building in public</description>
<pubDate>Fri, 25 Mar 2022 00:00:00 GMT</pubDate>
<pubDate>Thu, 24 Mar 2022 05:00:00 GMT</pubDate>
</item>
<item>
@@ -133,7 +141,7 @@
<title>Postgres Auditing in 150 lines of SQL</title>
<link>https://supabase.com/blog/2022/03/08/audit</link>
<description>PostgreSQL has a robust set of features which we can leverage to create a generic auditing solution in 150 lines of SQL.</description>
<pubDate>Tue, 08 Mar 2022 00:00:00 GMT</pubDate>
<pubDate>Mon, 07 Mar 2022 06:00:00 GMT</pubDate>
</item>
<item>
@@ -141,7 +149,7 @@
<title>Supabase Beta January 2022</title>
<link>https://supabase.com/blog/2022/02/22/supabase-beta-january-2022</link>
<description>New auth providers, SMS providers, and new videos.</description>
<pubDate>Tue, 22 Feb 2022 00:00:00 GMT</pubDate>
<pubDate>Mon, 21 Feb 2022 06:00:00 GMT</pubDate>
</item>
<item>
@@ -149,7 +157,7 @@
<title>Supabase Beta December 2021</title>
<link>https://supabase.com/blog/2022/01/20/supabase-beta-december-2021</link>
<description>New crypto extension, Postgres videos, and a bunch of cool integrations.</description>
<pubDate>Thu, 20 Jan 2022 00:00:00 GMT</pubDate>
<pubDate>Wed, 19 Jan 2022 06:00:00 GMT</pubDate>
</item>
<item>
@@ -157,7 +165,7 @@
<title>Golden Kitty Awards Ceremony Watch Party with Supabase</title>
<link>https://supabase.com/blog/2022/01/20/product-hunt-golden-kitty-awards-2021</link>
<description>Hang out with us while watching the Product Hunt Golden Kitty Awards Ceremony</description>
<pubDate>Thu, 20 Jan 2022 00:00:00 GMT</pubDate>
<pubDate>Wed, 19 Jan 2022 06:00:00 GMT</pubDate>
</item>
<item>
@@ -165,7 +173,7 @@
<title>Holiday Hackdays Winners 2021</title>
<link>https://supabase.com/blog/2021/12/17/holiday-hackdays-winners-2021</link>
<description>Celebrating many amazing projects submitted to our Holiday Hackdays Hackathon.</description>
<pubDate>Fri, 17 Dec 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 16 Dec 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -173,7 +181,7 @@
<title>Supabase Beta November 2021: Launch Week Recap</title>
<link>https://supabase.com/blog/2021/12/15/beta-november-2021-launch-week-recap</link>
<description>We wrapped up November with Supabase's third Launch Week. Here's all the awesome stuff that got shipped ...</description>
<pubDate>Wed, 15 Dec 2021 00:00:00 GMT</pubDate>
<pubDate>Tue, 14 Dec 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -181,7 +189,7 @@
<title>Kicking off the Holiday Hackdays</title>
<link>https://supabase.com/blog/2021/12/03/supabase-holiday-hackdays-hackathon</link>
<description>Build cool stuff and celebrate open-source software with us during the Holiday Hackdays!</description>
<pubDate>Fri, 03 Dec 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 02 Dec 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -189,7 +197,7 @@
<title>pg_graphql: A GraphQL extension for PostgreSQL</title>
<link>https://supabase.com/blog/2021/12/03/pg-graphql</link>
<description>GraphQL support is in development for PostgreSQL + Supabase.</description>
<pubDate>Fri, 03 Dec 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 02 Dec 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -197,7 +205,7 @@
<title>Five more things</title>
<link>https://supabase.com/blog/2021/12/03/launch-week-three-friday-five-more-things</link>
<description>It's never just one more thing!</description>
<pubDate>Fri, 03 Dec 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 02 Dec 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -205,7 +213,7 @@
<title>Supabase acquires Logflare</title>
<link>https://supabase.com/blog/2021/12/02/supabase-acquires-logflare</link>
<description>Today, we're ecstatic to announce that Logflare is joining Supabase.</description>
<pubDate>Thu, 02 Dec 2021 00:00:00 GMT</pubDate>
<pubDate>Wed, 01 Dec 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -213,7 +221,7 @@
<title>Realtime Postgres RLS now available on Supabase</title>
<link>https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql</link>
<description>Realtime database changes are now broadcast to authenticated users, respecting the same PostgreSQL policies that you use for Row Level Security.</description>
<pubDate>Wed, 01 Dec 2021 00:00:00 GMT</pubDate>
<pubDate>Tue, 30 Nov 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -221,7 +229,7 @@
<title>Supabase Studio</title>
<link>https://supabase.com/blog/2021/11/30/supabase-studio</link>
<description>The same Dashboard that you're using on our Platform is now available for local development and Self-Hosting.</description>
<pubDate>Tue, 30 Nov 2021 00:00:00 GMT</pubDate>
<pubDate>Mon, 29 Nov 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -229,7 +237,7 @@
<title>Community Day</title>
<link>https://supabase.com/blog/2021/11/29/community-day</link>
<description>Kicking off launch week by highlighting the communities around Supabase.</description>
<pubDate>Mon, 29 Nov 2021 00:00:00 GMT</pubDate>
<pubDate>Sun, 28 Nov 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -237,7 +245,7 @@
<title>New in PostgreSQL 14: What every developer should know</title>
<link>https://supabase.com/blog/2021/11/28/whats-new-in-postgres-14</link>
<description>A quick look at some new features and functionality in PostgreSQL 14.</description>
<pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate>
<pubDate>Sat, 27 Nov 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -245,7 +253,7 @@
<title>PostgREST 9</title>
<link>https://supabase.com/blog/2021/11/28/postgrest-9</link>
<description>New features and updates in PostgREST version 9.</description>
<pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate>
<pubDate>Fri, 26 Nov 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -253,7 +261,7 @@
<title>Supabase Launch Week III: Holiday Special</title>
<link>https://supabase.com/blog/2021/11/26/supabase-launch-week-the-trilogy</link>
<description>Tis the season to be shipping.</description>
<pubDate>Fri, 26 Nov 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 25 Nov 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -261,7 +269,7 @@
<title>How we launch at Supabase</title>
<link>https://supabase.com/blog/2021/11/26/supabase-how-we-launch</link>
<description>The history and methodology of Supabase Launch Week.</description>
<pubDate>Fri, 26 Nov 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 25 Nov 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -269,7 +277,7 @@
<title>Supabase Beta October 2021</title>
<link>https://supabase.com/blog/2021/11/05/supabase-beta-october-2021</link>
<description>Three new Auth providers, multi-schema support, and we're gearing up for another Launch Week.</description>
<pubDate>Sun, 07 Nov 2021 00:00:00 GMT</pubDate>
<pubDate>Sat, 06 Nov 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -277,7 +285,7 @@
<title>Supabase $30m Series A</title>
<link>https://supabase.com/blog/2021/10/28/supabase-series-a</link>
<description>Supabase just raised $30M, bringing our total funding to $36M.</description>
<pubDate>Thu, 28 Oct 2021 00:00:00 GMT</pubDate>
<pubDate>Wed, 27 Oct 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -285,7 +293,7 @@
<title>Replenysh uses Supabase to implement OTP in less than 24-hours</title>
<link>https://supabase.com/blog/2021/10/19/replenysh-time-to-value-in-less-than-24-hours</link>
<description>Learn how Replenysh uses Supabase to power the circular economy, redefining how brands interact with their customers and products.</description>
<pubDate>Tue, 19 Oct 2021 00:00:00 GMT</pubDate>
<pubDate>Mon, 18 Oct 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -293,7 +301,7 @@
<title>Hacktoberfest Hackathon Winners 2021</title>
<link>https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021</link>
<description>Celebrating many amazing projects submitted to our Hacktoberfest Hackathon.</description>
<pubDate>Thu, 14 Oct 2021 00:00:00 GMT</pubDate>
<pubDate>Wed, 13 Oct 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -301,7 +309,7 @@
<title>Supabase Beta Sept 2021</title>
<link>https://supabase.com/blog/2021/10/04/supabase-beta-sept-2021</link>
<description>Hackathon, Aborting request, UI updates, and now Hiring.</description>
<pubDate>Mon, 04 Oct 2021 00:00:00 GMT</pubDate>
<pubDate>Sun, 03 Oct 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -309,7 +317,7 @@
<title>Supabase Hacktoberfest Hackathon 2021</title>
<link>https://supabase.com/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021</link>
<description>We're running another Supabase Hackathon during Hacktoberfest!</description>
<pubDate>Tue, 28 Sep 2021 00:00:00 GMT</pubDate>
<pubDate>Mon, 27 Sep 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -317,7 +325,7 @@
<title>Supabase Beta August 2021</title>
<link>https://supabase.com/blog/2021/09/10/supabase-beta-august-2021</link>
<description>Fundraising, Realtime Security, custom SMS templates, and deployments in South Korea.</description>
<pubDate>Fri, 10 Sep 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 09 Sep 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -325,7 +333,7 @@
<title>Supabase Beta July 2021</title>
<link>https://supabase.com/blog/2021/08/12/supabase-beta-july-2021</link>
<description>Discord Logins, Vercel Integration, Full text search, and OAuth guides.</description>
<pubDate>Thu, 12 Aug 2021 00:00:00 GMT</pubDate>
<pubDate>Wed, 11 Aug 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -333,7 +341,7 @@
<title>Open Source Hackathon Winners</title>
<link>https://supabase.com/blog/2021/08/09/hackathon-winners</link>
<description>Let the medal ceremony begin for the best projects submitted during the Supabase Hackathon.</description>
<pubDate>Mon, 09 Aug 2021 00:00:00 GMT</pubDate>
<pubDate>Sun, 08 Aug 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -341,7 +349,7 @@
<title>Supabase Swag Store</title>
<link>https://supabase.com/blog/2021/07/30/supabase-swag-store</link>
<description>Today we are officially launching the Supabase Swag Store.</description>
<pubDate>Fri, 30 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 29 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -349,7 +357,7 @@
<title>Updates for Supabase Functions</title>
<link>https://supabase.com/blog/2021/07/30/supabase-functions-updates</link>
<description>The question on everyone's mind - are we launching Supabase Functions? Well, it's complicated.</description>
<pubDate>Fri, 30 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 29 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -357,7 +365,7 @@
<title>The Supabase Hackathon</title>
<link>https://supabase.com/blog/2021/07/30/1-the-supabase-hackathon</link>
<description>A whole week of Hacking for Fun and Prizes.</description>
<pubDate>Fri, 30 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 29 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -365,7 +373,7 @@
<title>Supabase Reports and Metrics</title>
<link>https://supabase.com/blog/2021/07/29/supabase-reports-and-metrics</link>
<description>We're exposing a full set of metrics in your projects, so that you can build better (and faster) products for your users.</description>
<pubDate>Thu, 29 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Wed, 28 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -373,7 +381,7 @@
<title>Supabase Auth v2: Phone Auth now available</title>
<link>https://supabase.com/blog/2021/07/28/supabase-auth-passwordless-sms-login</link>
<description>Phone Auth is available today on all new and existing Supabase projects.</description>
<pubDate>Wed, 28 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Tue, 27 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -381,7 +389,7 @@
<title>Mobbin uses Supabase to authenticate 200,000 users</title>
<link>https://supabase.com/blog/2021/07/28/mobbin-supabase-200000-users</link>
<description>Learn how Mobbin migrated 200,000 users from Firebase for a better authentication experience.</description>
<pubDate>Wed, 28 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Tue, 27 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -389,7 +397,7 @@
<title>Supabase Storage now in Beta</title>
<link>https://supabase.com/blog/2021/07/27/storage-beta</link>
<description>Supabase Storage moves into Beta.</description>
<pubDate>Tue, 27 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Mon, 26 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -397,7 +405,7 @@
<title>Spot: a video sharing app built with Flutter</title>
<link>https://supabase.com/blog/2021/07/27/spot-flutter-with-postgres</link>
<description>Spot is a geolocation-based video-sharing app with some social networking features.</description>
<pubDate>Tue, 27 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Mon, 26 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -405,7 +413,7 @@
<title>Supabase is now on Postgres 13.3</title>
<link>https://supabase.com/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>Mon, 26 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Sun, 25 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -413,7 +421,7 @@
<title>Supabase Community Day</title>
<link>https://supabase.com/blog/2021/07/26/supabase-community-day</link>
<description>Community Day</description>
<pubDate>Mon, 26 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Sun, 25 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -421,7 +429,7 @@
<title>Epsilon3 Self-Host Supabase To Revolutionize Space Operations </title>
<link>https://supabase.com/blog/2021/07/26/epsilon3-self-hosting</link>
<description>Learn how the team at Epsilon3 use Supabase to help teams execute secure and reliable operations in an industry that project spend runs into the billions.</description>
<pubDate>Mon, 26 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Sun, 25 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -429,7 +437,7 @@
<title>Supabase Launch Week II: The SQL</title>
<link>https://supabase.com/blog/2021/07/22/supabase-launch-week-sql</link>
<description>Five days of Supabase. Again.</description>
<pubDate>Thu, 22 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Wed, 21 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -437,7 +445,7 @@
<title>Protecting reserved roles with PostgreSQL Hooks</title>
<link>https://supabase.com/blog/2021/07/01/roles-postgres-hooks</link>
<description>Using Postgres Hooks to protect functionality in your Postgres database.</description>
<pubDate>Fri, 02 Jul 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 01 Jul 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -445,7 +453,7 @@
<title>Supabase Beta June 2021</title>
<link>https://supabase.com/blog/2021/07/02/supabase-beta-june-2021</link>
<description>Discord Logins, Vercel Integration, Full text search, and OAuth guides.</description>
<pubDate>Wed, 02 Jun 2021 00:00:00 GMT</pubDate>
<pubDate>Tue, 01 Jun 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -453,7 +461,7 @@
<title>Supabase Beta May 2021</title>
<link>https://supabase.com/blog/2021/06/02/supabase-beta-may-2021</link>
<description>Apple &amp; Twitter Logins, Supabase Grid, Go &amp; Swift Libraries.</description>
<pubDate>Wed, 02 Jun 2021 00:00:00 GMT</pubDate>
<pubDate>Tue, 01 Jun 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -461,7 +469,7 @@
<title>Supabase Beta April 2021</title>
<link>https://supabase.com/blog/2021/05/03/supabase-beta-april-2021</link>
<description>Supabase "gardening" - stability, security, and community support.</description>
<pubDate>Wed, 05 May 2021 00:00:00 GMT</pubDate>
<pubDate>Tue, 04 May 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -469,7 +477,7 @@
<title>Supabase Beta March 2021</title>
<link>https://supabase.com/blog/2021/04/06/supabase-beta-march-2021</link>
<description>Launch week, Storage, Supabase CLI, Connection Pooling, Supabase UI, and Pricing.</description>
<pubDate>Tue, 06 Apr 2021 00:00:00 GMT</pubDate>
<pubDate>Mon, 05 Apr 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -477,7 +485,7 @@
<title>Workflows are coming to Supabase</title>
<link>https://supabase.com/blog/2021/04/02/supabase-workflows</link>
<description>Functions are great, but you know what's better?</description>
<pubDate>Fri, 02 Apr 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 01 Apr 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -485,7 +493,7 @@
<title>PgBouncer is now available in Supabase</title>
<link>https://supabase.com/blog/2021/04/02/supabase-pgbouncer</link>
<description>Better support for Serverless and Postgres.</description>
<pubDate>Fri, 02 Apr 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 01 Apr 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -493,7 +501,7 @@
<title>Supabase Dot Com</title>
<link>https://supabase.com/blog/2021/04/02/supabase-dot-com</link>
<description>The Supabase Domain name is changing.</description>
<pubDate>Fri, 02 Apr 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 01 Apr 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -501,7 +509,7 @@
<title>Supabase Launches NFT Marketplace</title>
<link>https://supabase.com/blog/2021/04/01/supabase-nft-marketplace</link>
<description>A fully encrypted NFT platform to protect and transact your digital assets</description>
<pubDate>Thu, 01 Apr 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 01 Apr 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -509,7 +517,7 @@
<title>Supabase CLI</title>
<link>https://supabase.com/blog/2021/03/31/supabase-cli</link>
<description>Local development, database migrations, and self-hosting.</description>
<pubDate>Wed, 31 Mar 2021 00:00:00 GMT</pubDate>
<pubDate>Wed, 31 Mar 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -517,7 +525,7 @@
<title>Storage is now available in Supabase</title>
<link>https://supabase.com/blog/2021/03/30/supabase-storage</link>
<description>Launching Supabase Storage and how you can use it in your apps</description>
<pubDate>Tue, 30 Mar 2021 00:00:00 GMT</pubDate>
<pubDate>Tue, 30 Mar 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -525,7 +533,7 @@
<title>Supabase Beta Pricing</title>
<link>https://supabase.com/blog/2021/03/29/pricing</link>
<description>Supabase launches Beta pricing structure</description>
<pubDate>Mon, 29 Mar 2021 00:00:00 GMT</pubDate>
<pubDate>Mon, 29 Mar 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -533,7 +541,7 @@
<title>Launch week</title>
<link>https://supabase.com/blog/2021/03/25/launch-week</link>
<description>Five days of Supabase.</description>
<pubDate>Thu, 25 Mar 2021 00:00:00 GMT</pubDate>
<pubDate>Wed, 24 Mar 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -541,7 +549,7 @@
<title>Angels of Supabase</title>
<link>https://supabase.com/blog/2021/03/25/angels-of-supabase</link>
<description>Meet the investors of Supabase.</description>
<pubDate>Thu, 25 Mar 2021 00:00:00 GMT</pubDate>
<pubDate>Wed, 24 Mar 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -549,7 +557,7 @@
<title>Developers stay up to date with intheloop.dev</title>
<link>https://supabase.com/blog/2021/03/22/In-The-Loop</link>
<description>Learn why Kevin is building intheloop.dev with Supabase</description>
<pubDate>Mon, 22 Mar 2021 00:00:00 GMT</pubDate>
<pubDate>Mon, 22 Mar 2021 05:00:00 GMT</pubDate>
</item>
<item>
@@ -557,7 +565,7 @@
<title>Using Supabase in Replit</title>
<link>https://supabase.com/blog/2021/03/11/using-supabase-replit</link>
<description>Free hosted relational database from within your node.js repl</description>
<pubDate>Thu, 11 Mar 2021 00:00:00 GMT</pubDate>
<pubDate>Thu, 11 Mar 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -565,7 +573,7 @@
<title>Toad, a link shortener with simple APIs for low-coders</title>
<link>https://supabase.com/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders</link>
<description>An easy-to-use link shortening tool with simple APIs</description>
<pubDate>Mon, 08 Mar 2021 00:00:00 GMT</pubDate>
<pubDate>Mon, 08 Mar 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -573,7 +581,7 @@
<title>Postgres as a CRON Server</title>
<link>https://supabase.com/blog/2021/03/05/postgres-as-a-cron-server</link>
<description>Running repetitive tasks with your Postgres database.</description>
<pubDate>Fri, 05 Mar 2021 00:00:00 GMT</pubDate>
<pubDate>Fri, 05 Mar 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -581,7 +589,7 @@
<title>Supabase Beta February 2021</title>
<link>https://supabase.com/blog/2021/03/02/supabase-beta-february-2021</link>
<description>One year of building.</description>
<pubDate>Tue, 02 Mar 2021 00:00:00 GMT</pubDate>
<pubDate>Tue, 02 Mar 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -589,7 +597,7 @@
<title>Cracking PostgreSQL Interview Questions</title>
<link>https://supabase.com/blog/2021/02/27/cracking-postgres-interview</link>
<description>Understand the top PostgreSQL Interview Questions</description>
<pubDate>Sat, 27 Feb 2021 00:00:00 GMT</pubDate>
<pubDate>Sat, 27 Feb 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -597,7 +605,7 @@
<title>Roboflow.com choose Supabase to power Paint.wtf leaderboard</title>
<link>https://supabase.com/blog/2021/02/09/case-study-roboflow</link>
<description>Learn how Roboflow.com used Supabase to build their Paint.wtf leaderboard</description>
<pubDate>Tue, 09 Feb 2021 00:00:00 GMT</pubDate>
<pubDate>Tue, 09 Feb 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -605,7 +613,7 @@
<title>Supabase Beta January 2021</title>
<link>https://supabase.com/blog/2021/02/02/supabase-beta-january-2021</link>
<description>Eleven months of building.</description>
<pubDate>Tue, 02 Feb 2021 00:00:00 GMT</pubDate>
<pubDate>Tue, 02 Feb 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -613,7 +621,7 @@
<title>Supabase Beta December 2020</title>
<link>https://supabase.com/blog/2021/01/02/supabase-beta-december-2020</link>
<description>Ten months of building.</description>
<pubDate>Sat, 02 Jan 2021 00:00:00 GMT</pubDate>
<pubDate>Sat, 02 Jan 2021 06:00:00 GMT</pubDate>
</item>
<item>
@@ -621,7 +629,7 @@
<title>Making the Supabase Dashboard Supa-fast</title>
<link>https://supabase.com/blog/2020/12/13/supabase-dashboard-performance</link>
<description>Improving the performance of the Supabase dashboard</description>
<pubDate>Sun, 13 Dec 2020 00:00:00 GMT</pubDate>
<pubDate>Sun, 13 Dec 2020 06:00:00 GMT</pubDate>
</item>
<item>
@@ -629,7 +637,7 @@
<title>Supabase Partners With Strive School To Help Teach Open Source</title>
<link>https://supabase.com/blog/2020/12/02/supabase-striveschool</link>
<description>Supabase Partners With Strive School To Help Teach Open Source To The Next Generation Of Developers</description>
<pubDate>Wed, 02 Dec 2020 00:00:00 GMT</pubDate>
<pubDate>Wed, 02 Dec 2020 06:00:00 GMT</pubDate>
</item>
<item>
@@ -637,7 +645,7 @@
<title>Xendit Built a Counter-Fraud Watchlist for the Fintech Industry</title>
<link>https://supabase.com/blog/2020/12/02/case-study-xendit</link>
<description>See how Xendit use Supabase to build a full-text search engine.</description>
<pubDate>Wed, 02 Dec 2020 00:00:00 GMT</pubDate>
<pubDate>Wed, 02 Dec 2020 06:00:00 GMT</pubDate>
</item>
<item>
@@ -645,7 +653,7 @@
<title>TAYFA Built a No-Code Website Builder in Seven Days</title>
<link>https://supabase.com/blog/2020/12/02/case-study-tayfa</link>
<description>See how Tayfa went from idea to paying customer in less than 30 days.</description>
<pubDate>Wed, 02 Dec 2020 00:00:00 GMT</pubDate>
<pubDate>Wed, 02 Dec 2020 06:00:00 GMT</pubDate>
</item>
<item>
@@ -653,7 +661,7 @@
<title>Monitoro Built a Web Crawler Handling Millions of API Requests</title>
<link>https://supabase.com/blog/2020/12/02/case-study-monitoro</link>
<description>See how Monitoro built an automated scraping platform using Supabase.</description>
<pubDate>Wed, 02 Dec 2020 00:00:00 GMT</pubDate>
<pubDate>Wed, 02 Dec 2020 06:00:00 GMT</pubDate>
</item>
<item>
@@ -661,7 +669,7 @@
<title>Supabase Alpha November 2020</title>
<link>https://supabase.com/blog/2020/12/01/supabase-alpha-november-2020</link>
<description>Nine months of building.</description>
<pubDate>Tue, 01 Dec 2020 00:00:00 GMT</pubDate>
<pubDate>Tue, 01 Dec 2020 06:00:00 GMT</pubDate>
</item>
<item>
@@ -669,7 +677,7 @@
<title>Postgres Views</title>
<link>https://supabase.com/blog/2020/11/18/postgresql-views</link>
<description>Creating and using a view in PostgreSQL.</description>
<pubDate>Wed, 18 Nov 2020 00:00:00 GMT</pubDate>
<pubDate>Wed, 18 Nov 2020 06:00:00 GMT</pubDate>
</item>
<item>
@@ -677,7 +685,7 @@
<title>Supabase Alpha October 2020</title>
<link>https://supabase.com/blog/2020/11/02/supabase-alpha-october-2020</link>
<description>Eight months of building.</description>
<pubDate>Mon, 02 Nov 2020 00:00:00 GMT</pubDate>
<pubDate>Mon, 02 Nov 2020 06:00:00 GMT</pubDate>
</item>
<item>
@@ -685,7 +693,7 @@
<title>Supabase.js 1.0</title>
<link>https://supabase.com/blog/2020/10/30/improved-dx</link>
<description>We're releasing a new version of our Supabase client with some awesome new improvements.</description>
<pubDate>Fri, 30 Oct 2020 00:00:00 GMT</pubDate>
<pubDate>Fri, 30 Oct 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -693,7 +701,7 @@
<title>Supabase Alpha September 2020</title>
<link>https://supabase.com/blog/2020/10/03/supabase-alpha-september-2020</link>
<description>Seven months of building.</description>
<pubDate>Sat, 03 Oct 2020 00:00:00 GMT</pubDate>
<pubDate>Sat, 03 Oct 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -701,7 +709,7 @@
<title>Supabase Hacktoberfest 2020</title>
<link>https://supabase.com/blog/2020/09/11/supabase-hacktoberfest-2020</link>
<description>Join us for a celebration of open source software and learn how to contribute to Supabase.</description>
<pubDate>Fri, 11 Sep 2020 00:00:00 GMT</pubDate>
<pubDate>Fri, 11 Sep 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -709,7 +717,7 @@
<title>Supabase Alpha August 2020</title>
<link>https://supabase.com/blog/2020/09/03/supabase-alpha-august-2020</link>
<description>Six months of building</description>
<pubDate>Thu, 03 Sep 2020 00:00:00 GMT</pubDate>
<pubDate>Thu, 03 Sep 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -717,7 +725,7 @@
<title>Supabase Auth</title>
<link>https://supabase.com/blog/2020/08/05/supabase-auth</link>
<description>Authenticate and authorize your users with Supabase Auth</description>
<pubDate>Wed, 05 Aug 2020 00:00:00 GMT</pubDate>
<pubDate>Wed, 05 Aug 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -725,7 +733,7 @@
<title>Supabase Alpha July 2020</title>
<link>https://supabase.com/blog/2020/08/02/supabase-alpha-july-2020</link>
<description>Five months of building</description>
<pubDate>Sun, 02 Aug 2020 00:00:00 GMT</pubDate>
<pubDate>Sun, 02 Aug 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -733,7 +741,7 @@
<title>Continuous PostgreSQL Backups using WAL-G</title>
<link>https://supabase.com/blog/2020/08/02/continuous-postgresql-backup-walg</link>
<description>Have you ever wanted to restore your database's state to a particular moment in time? This post explains how, using WAL-G.</description>
<pubDate>Sun, 02 Aug 2020 00:00:00 GMT</pubDate>
<pubDate>Sun, 02 Aug 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -741,7 +749,7 @@
<title>Alpha Launch Postmortem</title>
<link>https://supabase.com/blog/2020/07/10/alpha-launch-postmortem</link>
<description>Everything that went wrong with Supabase's launch</description>
<pubDate>Fri, 10 Jul 2020 00:00:00 GMT</pubDate>
<pubDate>Fri, 10 Jul 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -749,7 +757,7 @@
<title>What are PostgreSQL Templates?</title>
<link>https://supabase.com/blog/2020/07/09/postgresql-templates</link>
<description>What are PostgreSQL templates and what are they used for?</description>
<pubDate>Thu, 09 Jul 2020 00:00:00 GMT</pubDate>
<pubDate>Thu, 09 Jul 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -757,7 +765,7 @@
<title>Physical vs Logical Backups in PostgreSQL</title>
<link>https://supabase.com/blog/2020/07/17/postgresql-physical-logical-backups</link>
<description>What are physical and logical backups in Postgres?</description>
<pubDate>Tue, 07 Jul 2020 00:00:00 GMT</pubDate>
<pubDate>Tue, 07 Jul 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -765,7 +773,7 @@
<title>Supabase Alpha June 2020</title>
<link>https://supabase.com/blog/2020/07/01/supabase-alpha-june-2020</link>
<description>Four months of building</description>
<pubDate>Wed, 01 Jul 2020 00:00:00 GMT</pubDate>
<pubDate>Wed, 01 Jul 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -773,7 +781,7 @@
<title>Steve Chavez has joined Supabase</title>
<link>https://supabase.com/blog/2020/06/15/supabase-steve-chavez</link>
<description>Steve joins Supabase to help build Auth.</description>
<pubDate>Mon, 15 Jun 2020 00:00:00 GMT</pubDate>
<pubDate>Mon, 15 Jun 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -781,7 +789,7 @@
<title>Supabase Alpha May 2020</title>
<link>https://supabase.com/blog/2020/06/01/supabase-alpha-may-2020</link>
<description>Three months of building</description>
<pubDate>Mon, 01 Jun 2020 00:00:00 GMT</pubDate>
<pubDate>Mon, 01 Jun 2020 05:00:00 GMT</pubDate>
</item>
<item>
@@ -789,7 +797,7 @@
<title>Supabase Alpha April 2020</title>
<link>https://supabase.com/blog/2020/05/01/supabase-alpha-april-2020</link>
<description>Two months of building</description>
<pubDate>Mon, 01 Jun 2020 00:00:00 GMT</pubDate>
<pubDate>Mon, 01 Jun 2020 05:00:00 GMT</pubDate>
</item>
</channel>