5 ms·
Every project on https://supabase.io https://supabase.io uses PostgREST. It's an amazing tool, especially when combined with Row Level Security. We have built
by kiwicopple 6y ago
Every project on https://supabase.io https://supabase.io uses PostgREST. It's an amazing tool, especially when combined with Row Level Security.
We have built client libraries for Javascript, Rust, Python, Dart, and a few more on the way thanks to all the community maintainers.
Supabase employs the PostgREST maintainer (Steve), who is an amazing guy. He works full-time on PostgREST, and there are a few cool things coming including better JSONB and PostGIS support.
We recently benchmarked PostgREST for those interested: https://github.com/supabase/benchmarks/issues/2 https://github.com/supabase/benchmarks/issues/2
nb: i'm a supabase cofounder
- hrishi 6y agoGreat work guys, love what you're building at Supabase! Did you run any loadtests that stressed the system enough to start dropping/failing requests? I'm wondering where that threshold is.
- kiwicopple 6y agoYes, we are benchmarking all of the components we use in Supabase, including the end-to-end system here: https://github.com/supabase/benchmarks/issues https://github.com/supabase/benchmarks/issues We still have a few benchmarks to complete, but PostgREST has been thoroughly tested now. Steve just spent the past month improving throughput on PostgREST, with amazing results (50% increase). tldr: for simple GET requests on a t3a.nano you can get up to ~2200 requests/s with db-pooling.
- hrishi 6y agoThanks! It's amazing what you can get done with optimization vs horizontal scaling. What would you say are the current failure modes? Say for a t3a.nano, what combination of payload size/queue length/rps/other parameters would absolutely mandate an upgrade in capability?
- kiwicopple 6y agoI couldn't tell you with a reasonable degree of unfortunately. We will do some stress testing at some point, but we haven't started them yet. We see few 500 errors across all of the PostgREST requests at Supabase. The errors that I can remember are from users doing `select=*` on tables which would return hundreds of MB of data. If you're thinking of adopting it then we'd be happy to help figure out if it's the right tool for your use-case.
- steve-chavez 6y agoGlad to be part of the Supabase team! Clickable links to the Supabase client libraries, for those interested: - JS: https://github.com/supabase/postgrest-js/ https://github.com/supabase/postgrest-js/ - Dart: https://github.com/supabase/postgrest-dart https://github.com/supabase/postgrest-dart - Rust: https://github.com/supabase/postgrest-rs https://github.com/supabase/postgrest-rs - Python: https://github.com/supabase/postgrest-py https://github.com/supabase/postgrest-py Also, you can see how they're used together on https://pro.tzkt.io https://pro.tzkt.io.
- kiwicopple 6y agoAlso C#, which is still WIP but moving fast https://github.com/supabase/postgrest-csharp https://github.com/supabase/postgrest-csharp (created and managed by a community contributor)