Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: Plato – Airtable for your SQL database (plato.io)
100 points by mgummelt on March 8, 2023 | hide | past | favorite | 64 comments
Hi! I've been a member of HN for fifteen years so today I'm very excited to share Plato.

Plato is an Airtable-like interface for your Postgres or MySQL database. It's an admin panel for devs and non-devs alike to manage your DB. We see teams use Plato for customer support, customer success, ops, etc..

We built Plato because we think more people should be able to build and extend internal tools. We thought it was strange that even though low-code is supposed to democratize development, all of the low-code internal tool builders are marketed to engineers! Airtable is a familiar UI that fits the relational model well, so we've been inspired by their work. Even the engineers on our team use Plato quite a bit, since it's often easier than spinning up a SQL prompt.

Some features:

- Postgres and MySQL support

- Visual query controls (sorts, filters, hiding columns). No SQL.

- Joins by "expanding" foreign keys

- Virtual columns for tracking new data

- Auto-generated backlinks for one-to-many relationships

- Read-only locking for individual tables

- Virtual tables for sharing new views with your team

Plato today works on databases with a public IP (just whitelist our IP to connect), but we're soon rolling out an on-prem version. We can also set up an SSH tunnel for you if you contact us at team@plato.io.

We'd love to hear your feedback! Thanks.

- Michael



For any such tool, two questions are of primary importance:

- How connections between multiple tables are represented and managed

- How derived data is described (queries, workflows etc.)

Typically such tools are aimed at simplifying data connections but normally they end up with some kind of join-like approach which requires high expertise and is error prone. So users have to deal with something they wanted to get rid of when they buy the tool. Plato is not an exception: "No SQL needed". Yet, I could not find any information on how exactly it manages connections between tables and how the unified "virtual table" is defined.

The second question is about how we can derive new data from existing data. Ideally, users would like to have something very similar to Excel because spreadsheets are indeed extremely intuitive: we define new cells as functions of other cells (which in turn might be functions of other cells). In Plato I found "virtual columns" which should be rather useful. This is somewhat similar to the column-oriented approach implemented in Prosto [0]. Yet, what is really non-trivial is how to define (derived) columns by combining data from multiple tables.

In general, the tool looks very promising and I hope that additional features and additional information will make it really popular.

[0] https://github.com/asavinov/prosto Prosto is a data processing toolkit radically changing how data is processed by heavily relying on functions and operations with functions - an alternative to map-reduce and join-groupby


Hey. Good questions.

Pkey/Fkey joins are supported in Plato by "expanding" foreign keys. You can log in, connect our sample DB, and play around with how it works. It's pretty easy. We're soon adding support for generic joins as well.

And, yes! We take a more structured, column-oriented approach than Excel. Much like Airtable. Though we are introducing an Excel-like formula language for defining derived values. It will compile to SQL on the backend, but not expose that to the user.


Wow, there are so many of these spreadsheet wrapper around data products now. It feels like a new one shows up on HN every day. Just yesterday https://mathesar.org was on here and there's been at least another dozen or so in recent weeks.

I suspect that the space really needs to target specific use cases and nail those experiences.


"When helping our friends at a fintech startup, we saw that while they had spent weeks building an admin panel from scratch, their accountants seldom used it."

It sounds like your friends didn't talk to the accountants to ask them what they wanted.


It's more that requirements change faster than the engineers can respond. These internal tools often aren't prioritized, and the role of any ops team (e.g. accountants) is very dynamic.

At that particular company, the accountants would often come across new tax form data they'd need to track. Waiting on eng to migrate the DB was too slow.


So the solution that your friends came up with didn't meet the needs of the accountants, which is that the accountants have data which is very dynamic and your friends built a very static system. Again, not listening.


Congrats on the launch!

We use Metabase at our company (created and managed by a non developer). Can you share some reasons for us to switch to Plato?


Of course. Metabase is the first product I recommend for easy BI, but Plato isn't a BI tool. It's an ops tool used for more "transactional" workflows.

Startups use us to diagnose support issues, track new user data for ops, extend user trials, manually update ML training sets, etc..


Terrible Idea to run this kind of tool on actually transactional data. In our startup we have pre-defined scripts so a non-dev's work is actually scoped. This is free range access to the database. Now not just dev can drop a database but also a business person can delete all data.

You want to scope access via a BI tool to the business person. That is data archtecture 101. And when the access is scoped a BI tool like metabase or superset services a better purpose than this.


I agree that open access is not always the right approach. Most of our users don't in fact run Plato with open access. Databases are read-only by default, and many provide write-access to only certain tables. We're also working on more features to scope access.

- Queries restricted to certain virtual tables, to avoid unintentional linear scans

- RBAC for scoping access

- An API client for hitting administrative endpoints rather than cells directly

Lots more on the way.


Someone pointed me to NocoDB as an alternative to Airtable here on HN a few days ago. I deployed an instance, and it does what it says on the tin. Supports SQL Server, Oracle and even SQLite, in addition to Postgres and MySQL.

Do you have any additional “killer feature(s)” that might convince me to switch?


Hey deepspace. Check out my response here: https://news.ycombinator.com/item?id=35074506

The killer feature for many users is the ability to track new data with *virtual columns*, which stay in Plato and never touch your backend DB. It lets you extend schema for new operations without having to run a DB migration. They're great for support agents or other operators to take notes, track new customer requirements, etc..


Founder of Noco here - Congrats on your HN launch.

I see at the current state there is a massive difference between us and the initial launch of Plato.

We do support multiple databases and there are backlinks available with actual value in a spreadsheet cell (I see that isnt supported in Plato's links). By reading about virtual columns I felt its like a formula column but its not (between I don't see formula isn't supported yet in Plato). Only one of our user had the virtual column request before.

Mainly I see Plato does not YET support automatic Rest APIs for the databases, webhooks, grid view, gallery view, form view, webhooks, upload csv/json/excel, formulas, SQLite, SQL server, docker, executables, open-source and so many other features. Having said that Im sure these will be looked into in coming years.

Really happy to see simple and powerful tools in this space were lacking and we are all trying to fill the big void here.


> Founder of Noco here

Thanks for a great product! I wrote tens of thousands of lines of PHP 20 years ago to achieve this kind of functionality, but I ran out of steam as a solo developer, and I could not find anyone else interesting in helping with development at the time.

After installing Noco, I feel like I ran into a long-lost friend, albeit one with a facelift and a complete style make-over.


Gallery view? Where we're going, we won't need gallery view.


What is the point of REST API for the database? Why can't an application go directly to the database and run SQL?


The requirement that you have a public IP for your database and a third party system is sucking in our data are giant red flags for industries with any sort of confidential or proprietary data.

A huge strength of NocoDB is that it is run as just another service accessible your DB that you own.

I can see Virtual Columns being interesting for reporting-type purposes. The mentioned use case of “notations” on data owned by someone else is also interesting. But again - do I really want someone else hosting my data? I don’t know.

Is the target here then basically shadow IT adding onto other people’s data sources that they can’t get the devs to change directly?


Yep, lots of users need on-prem/VPC deployment. It's next on the list. If you subscribe to our email list, you'll be the first to know when it's ready. In the meantime, we can set up an SSH tunnel for you if you email us.

I think low-code and really SaaS itself has made "Shadow IT" here to stay. Gone are the days of centralized IT. The sprawl and integration of disparate computing systems is the new normal.

But many of the engineers we talk with want to provide a self-serve environment for tooling, because it takes a lot of work off their plate that they can redirect to creating products and infrastructure. Data teams provide self-serve sandboxes to their teammates for analytics. We think engineers will come to see the importance of providing tooling sandboxes as well.


Cool! This definitely fills a niche I’ve felt the pain for. I want to love Airtable so badly, but it severely limits how expressive you can be with your own data. I’d check this out, but I’m admittedly not interested in managing my own db somewhere.


Neat! I'm a heavy Airtable user (for personal things) that has been toying with moving to SQLite for some things, mostly to gain understanding around SQL topics. But losing Airtable's UI would be a pain, so I'll definitely bookmark this.

Good luck!


Congratulations on launching! I'm working on a open source project that solves a similar problem, there's so many challenges with figuring out UI and UX for real-life databases. Your virtual columns concept looks neat!


Thanks! Happy to trade notes. Shoot us an email.


Will do!


phpmyadmin coming back in style


Respect to the OG


L to the OG


In your home screen ( https://www.plato.io/ ) the screenshot has a Purchase column that has multiple values. Does that not violate 1NF?

The first normal form (1NF) requires that each column in a table must hold atomic (indivisible) values, meaning that each value in the column must be unique and cannot contain multiple pieces of data.

I know Airtable has it, but this is an RDBMS focused product, and it seems to encourage poor habits.


I don't think it's a breach of 1NF. The "chain" icon next to the column name suggests that it is not a "real" field, but rather some kind of linked field that shows entries from the "Purchases" table for each user.


That would be cool, if true. I would like to see what the underlying query looks like, and whether it is efficient.


Yes, these are essentially links to the corresponding rows in the child table. Airtable solves this problem via the "linkedRecordsField", though I'm not sure it's actually "solved", as the interface around them is a bit clunky and having more than a few is pointless as they get truncated and you can't see them regardless.

I've spent quite a bit of time plumbing Airtable's APIs, and am currently developing an app around Airtable to address some of these issues (zemanir.com) in case anyone is interested.


Yep, it's a one-to-many autogenerated backlink, helpful for seeing every e.g. purchase for a user.

The lack of backlinks is one of the big frustrations I've had in other DB apps, since "this thing has many of these" is such a common pattern.


Why do all the upcoming interfaces for the Databases have no command line like VS Code or linear? I wish I could switch tables just by pressing ALT + T and typing the table name. Looks nice tho, good job! For me, no reason to switch from DBeaver, unless I can work more efficient, which is only possible if I can use plato without my mouse as much as possible.


You're speaking my language. I think you'll love what we're cooking up. Stay tuned.


Great! Any way to follow the progress? :)


Yes. Subscribe to our email list on our homepage.


How do you compare to Baserow?


I can't say I've used Baserow, but looking at their website it seems like they let you create new databases (like Airtable does), rather than connecting to existing SQL databases.


Looks great! I've never used Airtable so miss the comparisons. Is Plato like a faster to use version of Django admin? That's usually how I set up my admin UIs and one of the top reasons I use django.


Yep, that's another good comparison. It's been a while since I used Django Admin, but based on my memory these are some of Plato's advantanges:

- Virtual columns that track new data w/o modifying the DB (Great for ops)

- Virtual tables for saving new table views and hiding their implementation details

- Inline edits (Django requires click through to forms)

- More user-friendly queries (Subjective, but I remember filters in Django being tedious)

There's also some rough edges in Django Admin, like IIRC for foreign key select inputs they have to load every value into the frontend, which grinds to a halt for anything other than small databases.

I'd love to have you try it out and compare. Shoot us an email!


I'm currently pretty happy with Supabase where my DB is hosted, as I'm the only person who needs to access it. I'll let you know if/when I need to expand!

FWIW, virtual columns and tables are pretty easy in Django. AJAX-ify the forms seems to be possible but the packages tend to be pretty out of date.

Obviously you product has value for non Django teams, but tbh it's not clear to me this project is a win over django-admin for me (someone who reaches for that as my first tool to solve this problem). And some of the rough edges are not that big of an issue for me personally, not enough to add unknown risks w/ a new technology.

It does look great, however - hopefully this feedback is useful because I definitely don't mean to crap on your service.


Not at all :)

Do you have a link or instructions on how to create virtual columns in Django Admin?


I'd just use a calculated virtual column that you calculate at the queryset retrieval time. (Note I am not an Django expert, more of a hack).

https://www.appsloveworld.com/django/100/228/add-calculated-...


Ah, this is an overloading of terms. Plato virtual columns are not computed columns. They're new storage.


Allow me to say that all the listed "advantages" above can be done using Django Admin to build internal tools pretty efficiently... and it's FOSS, can be integrated to CI/CD and host agnostic


My 2 c on first impression - you’re hitting the ‘Airtable for’ language so hard and so often that I had trouble parsing out whether your tool was a middleware that unlocked new features for Airtable or not.


Sorry to ask a stupid question, but wtf is AirTable? I can't even find screenshots on your site that explain what your product does without referencing this other thing I have no idea about!


I mean, this specific pitch is pretty heavily geared towards people who know what both Airtable and SQL databases are.

I think it's a smart pitch because a large chunk of that target audience has at least a basic idea of what both of those things are, and it'll hit pretty close to home for those people who've experienced the pain points of both of those options doing a thing very well, and a thing not well at all (which the other does well)

Perhaps they'll target other groups in the future, but in the meantime both of those things have a wealth of information for those looking to learn also.


I've written patches against a commercial SQL engine; I'm extraordinarily familiar with it ;) But what is AirTable?


This looks awesome, and exactly what I've been thinking about. However, when trying to connect to my postgres db, I'm getting the following error:

no pg_hba.conf entry for host


The user you're trying to connect with might not be configured in your DB. Want to shoot us a message over Intercom (in the bottom-right)? We can help debug.


Can you comment on cells and rows ? Document columns?

Congrats on the launch!!


Is there a way to try it out without creating an account? What are the security implications of attaching this to my database?


No, but accounts are free!

As for security, the short of it is that you whitelist our IP, and your DB will need a public address we can connect to. It's similar to how e.g. cloud Retool works. We're shipping on-prem soon.

Here's our full security docs: https://plato-app.notion.site/Security-Overview-6e38fdc4daf0...


What is the maximum number of rows supported? What data types are supported? Do you support images and attachments?


All queries are made directly to your Postgres or MySQL database, so those systems define the limits. We never store your row data. We've had users running Plato with 100M+ rows.

No image support yet.


But there must be a limit to how many rows you can display on screen efficiently, right?


Oh, yes. We load pages of 50 rows at a time, with lazy scrolling that loads more on demand. If you keep scrolling to load dozens of pages, sometimes perf can suffer, but we don't see that to be a common usage pattern. Most users use our query controls to find what they need rather than scrolling.


Congratulations on launching! What advantages does this have over NocoDB which is open source?


Thanks!

One advantage is that Plato is SaaS so you don't have to run it yourself. NocoDB's cloud offering is still in private beta.

Others:

- Multi database support

- Virtual columns for tracking new data without modifying the DB

- Backlinks for one-to-many relationships!

But the biggest difference is probably the roadmap outlined in our blog post. We aim to be a general purpose sandbox for all kinds of internal tools. The database admin is just the first step.


Founder of Noco here - have left the differences here https://news.ycombinator.com/item?id=35075827


Awesome stuff!

I noticed you are using Notion for your docs so i tried creating a website using Notaku [0]

Here is how it looks: https://plato-preview.notaku.site/

[0] https://notaku.so


Love the concept. Started using BaseDash earlier for similar reasons


Dope. Thanks for sharing.


getting an infinite spinner




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: