Retool Database
retool.comHi HN! I’m the lead engineer on Retool Database.
Spreadsheets are often used as “poor man’s databases”—they’re quick to get started, but fall apart when you need data integrity, validation, and the ability to query/filter data.
This is why I am so excited about this launch - Retool Database gives you the power of Postgres with the “getting started” speed of a spreadsheet. No setup required.
We've also spent a lot of time on the UI for interacting with the database as well. You can create and edit tables, columns, and rows quickly without writing SQL. You should be able to get the same speed of iteration as spreadsheets, but you are also starting from the get-go that can handle the increasing complexity of your data and scale much better with app development.
We’re giving you 5GB free storage for the first year + connection strings so you can access your data outside Retool.
Lots of learnings as we built this—happy to answer any question you have!
I just tried using this, and I'm afraid I don't think it's as easy as a spreadsheet. I don't even understand it!
I started things off, just kept clicking "yes, yes", made a database called "shopping", and now...
I just seem to have an empty page? There is 'id' and 'created_at'.
I can "Add row", which just let's me specify "id", which has to be a number.
There is a button marked "fields", which tells me my fields are "id" and "created_at", but doesn't seem to have any way to add new fields.
I then, at my last guess, tried doing "import CSV". It asks me to choose a field for each column. I don't have any fields yet. I want to make some. Why can't I pick "this should be a new field"?
Anyway, import CSV just tells me 'Syntax error at or near ")"' when I try running it. There are no close brackets in my CSV, so no idea where that is coming from.
Can Retool Database be self-hosted stand-alone without Retool? I can see using this as a replacement for excel on some things.
Check out:
NocoDB (https://github.com/nocodb/nocodb) - works w/ MySQL, PostgreSQL, SQL Server, SQLite, MariaDB
Baserow (https://gitlab.com/bramw/baserow) - PostgreSQL based
APITable (https://github.com/apitable/apitable) - MySQL based
There's also Grist (https://getgrist.com) - SQLite based with Excel-like formulae in Python.
I run it on my NAS as my own private Airtable for calorie tracking.
Also Mathesar (https://github.com/centerofci/mathesar/) - PostgreSQL based
thanks, I've been looking at all the spreadsheet-over-a-database projects i can find, and hadn't discovered APITable yet! I have a very specific requirement (app where I want a few views to be collaborative spreadsheets and the rest more freeform html based pages reading from the same tables) and so far none of the popular projects has been quite suitable. (basetool might have but it's dead :()
Beautiful thank you.
We agree! The UI can be really helpful to make quick changes to schema, data, etc. You can’t run the UI without a Retool account though. We have a self-hosted Retool that works with your own Postgres database that you connect to Retool. Docs here: https://docs.retool.com/docs/retool-database-self-hosted
How do indexes work? Do you design them yourself or do they get automatically added based on some kind of heuristics?
We don't do anything automatic like that (yet?), you will have to add indexes manually.
But I would have to say - modern day databases are so fast that you probably won't notice the performance of adding indexes until at least 100k+ rows in a table and/or you have very high read throughput on that particular table.
You'll see a performance benefit way before 100k rows depending on the size of each row, especially with sorting. It might save you guys a ton of CPU hosting wise, depending on how this all works, to track slow queries and auto add indexes. Way worth the write overhead in most cases.
It’s likely that most of their customers would only have a few hundred or thousand rows where indexing may not actually matter after all. Otherwise I’m sure they would’ve prioritized it.
Yeah for now. You know people will try storing all tweets in it or whatever :)
huh? what about joins? surely your customers are doing joins. a few thousand times a few thousand is >> 1 million.
Ah yes if you need sorting then indexed are def the way to go!
Looks awesome, great work Sikan and team!
Way to go! Looks great.
Looks super snazzy:
Can I point Retool Database to an existing Postgres database? If not, do y'all have any plans to add support?
How's it work under the hood? Custom extensions?
(PM at Retool) For self-hosted deployments, you can point an existing Postgres DB (v14.3 or later) to Retool Database - though it’s more specifically designed to quickly evolve a new database. For cloud customers, we currently don’t support pointing your own database but it’s something we’re thinking about!
No custom extensions - we wanted to make it a lightweight and effective layer on top of Postgres. So it’s just a vanilla Postgres database under the hood. The UI gives you access to a lot of the power of Postgres, and for anything that you can’t do via the UI you can use the connection string directly: e.g. create triggers, create compound unique keys, etc.
Just helping OP keep up: https://docs.retool.com/docs/retool-database-self-hosted
Curious to know your use case. Were you hoping to use Retool Database with your existing Postgres as a schema builder or as a data editor via their spreadsheet UI?
I think Retool is awesome - though last time I think I didn't see a way to allow clients to have access to certain views. We have some databases we'd love to generate views for client access, but we don't need them to have full blown accounts. Is that something on the horizon?
(PM at Retool) Yes! We recently shipped Retool Embed to enable you to build settings pages, dashboards, and UIs in Retool and embed them securely into your client-facing apps. You can learn more about Embed here and sign up for the beta: https://retool.com/products/embed We’re also working on a solution to let you build full-stack client portals in Retool. I’m antony@retool.com if you want to chat!
Love it. Especially for software that is database driven, but not necessarily well exposed to UI concepts, it's been very cool to mock up and play with.
I think this will be a killer feature - thanks guys
We have clients solving this pattern using supabase (storing the client's credentials on supabase and then using RLS) and our open-source solution Windmill to solve this exact problem.
I wish retool had two things, more granular permissions for users on team plan. right now this is reserved for enterprise. I can not simply share only specific apps to certain users.
I wish to be able to pay yearly. We are on a hosted solution.
(Retool employee here.) Based on how we see companies using the different plans, we have a couple of delineations between the monthly and yearly plans. Happy to chat with you about your specific use case and discuss pricing/plan options! I’m tommy@retool.com
Congrats. Looks like it will be useful for plenty of folks. Can you outline how it compares with e.g. NocoDB [0] and others mentioned in another comment [1]?
As for "getting started" speed and general data tinkering, I find little beats Gnumeric -> CSV -> SQLite query [2] although I appreciate that solo developers aren't your target market :)
[0] https://github.com/nocodb/nocodb
[1] https://news.ycombinator.com/item?id=35381252
[2] https://til.simonwillison.net/sqlite/one-line-csv-operations
Very cool, can you give any details about how this was built? Just a massive Postgres cluster with programmatic schema creation? Or a primary/replica hosted on K8s for each user and offloaded to blob storage after some period of inactivity?
Looks cool, I'm just wondering how this compares to Google Tables?
Google tables is similar to Airtable, they are proprietary databases. You cannot query them and interface with them easily from another application like a regular database.
Retool Database has that friendly table UI but also give you the full query capability via SQL (we even give you the Postgres connection string that let you connect to it externally with your favorite tool).
Hey just wanted to take this chance to thank the Retool people. Retool was absolutely essential for our last startup. And they have been super responsive with bugs. A great product!
Thanks - this will improve my life
I've been using Retool Database inside a Retool Workflow and I find my update queries don't seem to resolve in the workflow, although I can see the updates in the table. I've just chalked it up to beta status, but since y'all are here I thought I might ask if this is a known issue or if I should reach out to support.
Edit to add: really killer addition to the product, keep up the great work
Hi Taylor! (David here, CEO @ Retool.) I've reached out over email; this sounds like a bug on our end. We will fix it. Thanks for using Retool!
I think building this as a tool on top of Postgres was a very good idea. Is there anything special Retool DB does on top of Postgres or is it basically just a nice UI for interacting with your tables?
Nothing special under the hood!
Are there good video resources for Retool in general, I looked at some youtube videos and found mostly creating a basic database view with a form. Any more substantial examples?
Hey there! We are actually working on a video course for Retool that covers more of the breadth of the platform. Definitely more to come. One more substantial example we released recently is this bookstore application, which uses about every part of the platform [1]. It's the app demoed at this virtual event, Retool Developer Day [2].
I wish retool produced more tutorial videos. There is this one operation, I have been trying to do for couple of weeks.
There are some URLs on a table, I want to select them and I want to make an API call to the selected URLs. There are a few discussions on their community website and all point to one documentation piece. I still haven't figured out how to do this. I don't want open a thread because I know I am going to be asked to read the documentation.
Google "multiple api request retool".
Sorry to hear this has been challenging - were you trying to do something like this, where you select a row in the table, and then make another API request with data from that row?
https://retoolhacks.retool.com/embedded/public/17eebce9-96f3...
If this is close to what you're looking for, you can import this sample app from this JSON export:
https://gist.githubusercontent.com/kwhinnery/4fed2a80788f429...
I've had a pretty good experience with retool but its component library definitely needs more documentation, as a frontend developer I'm able to go through all those props and tinker a bit until I get something done, but it's time consuming and not intuitive at first glance.
An example of this is the Table components, which allows you to create columns and set them a specific type, but that component documentation page doesn't include a section about which column types are allowed and how they work. Even further, there's a column type called Tag that it's available for us to use, but we don't have documentation about it and Tag documentation isn't helpful either,
It wouldn't hurt to add some common examples like a storybook along some way to let us see how to configure the components like that, or json examples we can import into our projects.
Absolutely agree, and something we were discussing today as it happens on the docs crew. We have some ideas we'll try in the next few months to bring more docs directly into the product, and beef up coverage and examples in the component docs.
Can this sync to an air table database or only import from it?
Both ways if you use our Workflow product to create background jobs that calls the Airtable REST API
This is good news. Retool-local storage was a big missing piece of the puzzle for us.
For self-hosted customers, is the database still on-premises? Or does it live in the Retool cloud?
For self-hosted customers, Retool Database operates more like a front-end for your own DB (though we do require specific versions of Postgres for it all to work smoothly). Docs here: https://docs.retool.com/docs/retool-database-self-hosted
Can I sync a google sheet to this
(Eng at Retool Database) You can export your Google Sheet as a CSV and upload it to Retool Database. We're thinking about enabling to syncing your sheets to Retool Database but that also opens up a host of complexity in repeatedly parsing the sheet over time and maintaining it as a DB table. We'd hope after a one-time upload, Retool Database would be similar enough to a spreadsheet to allow you to continue operations there.