Postico: A Modern PostgreSQL Client for the Mac
eggerapps.at
eggerapps.at
Or Sequel Ace (https://github.com/Sequel-Ace/Sequel-Ace) if you need to interact with MySQL databases, or similar, like MariaDB.
Also, the poster should have linked to Postico 2 — https://eggerapps.at/postico2/
If you click and drag vertically in TablePlus, it selects multiple rows of data. In DbVisualizer, the same action selects just one column (or more, if you move the mouse horizontally too) in multiple rows, allowing for quick copying and pasting of just the data you need. (The reason I don't use DbVisualizer as my daily driver is that it's a Java app, so the UI isn't native, which brings some quirks and sluggishness to the app that I avoid when I can. Other than that, it's great.)
Oddly, I'd never heard of Postico before although I have used Postgresql.app briefly in the past. I will try Postico 2 out on a test server at some point and track it's progress post beta.
TablePlus is good enough for daily use but not too good like data/definition button is way low and small to click on and those minor annoyances but at least it can interact with plenty of DB that I don't need to switch apps for different DB.
- a visual database diagram
- a visual query builder
- their Index Tuning Wizard
They had these things in the nineties and I've not seen something that comes close since (they've even made it worse for their own stuff). All the alternatives are janky java approximations that have terrible auto formatting options or keep to the very basics SQL.
Visual query builders are a deskilling device. There's a small hump to get over to learn to write SQL queries, it's worth getting over (IMO) (there are times when I'd like to take a large existing multi-way join and see a pic of it though).
The index wizard is likewise de-skilling. If you know what you are doing you 99% don't need it (I've got a couple of useful tips off it, ever, that's all). You need to understand what the query optimiser does and how to give it the info it needs (indexes, clustered indexes, stats, whatever), which the wizard will not help you understand.
These are not fundamentally complex or magic (there will be times you wonder at the stupidity of the query plan), there are books on this and lots of articles out there.
For small dbs, no problem, but as they grow not understanding the optimiser will kill you.
Anyway, my experience. Don't feel pressured, do what works for you.
Oh, I can write massively complex queries with the best of 'em, but I like visualizing the connections seeing it all out in front of me helps me. And it's not often I need this, just the few times I do it really strikes me as odd that the tools we had for this were better all those years ago. Also, it can really help explain things to new devs.
Your PoV reminds me a bit of the old GUI vs CLI flame wars :) both have merit, it's not a zero-sum game.
> The index wizard is likewise de-skilling.
This is just really a time suck for me. It's not my primary task, all I want is the DB to be better at its job so it lets me be better at mine. In companies without DBAs these tools are very useful.
You could design your entire schema as an ER diagram, thus being able to play around with how everything could be laid out extremely easily and also get a visual "feel" for that it'd end up being like and how your queries could work. But not just that, you could also forward engineer this ER diagram of yours to get SQL that you could apply to a live instance, or vice versa - to create an ER diagram of an existing DB instance. Not only that, but there was also the ability to synchronize schemas, with the tool essentially diffing what is there and what needs to be changed, so partial changes also become doable (e.g. adding a new table to an existing schema through the ER diagram) which was just surprisingly useful!
The migrations might (should?) still be applied by a tool of some sort and could be versioned, but being able to draw a bunch of boxes around and getting all of the DDL that you need to get 90% of the way there is pretty great! Curiously, this also lets you tackle the laziness of the developers: "But i don't want to create 5 different tables for these types of objects that are different but also seem vaguely similar at the present time, i might just do with one wide table with lots of columns because i'm lazy and data normalization be damned!"
Of course, using tools like that in some capacity probably also immensely useful for discovering larger and older DB structures and just exploring the schema rather than just writing a bunch of SELECT/DESCRIBE/... statements or something - tools like DbVis can let you visualize hundreds of tables of various DBMSes easily, as well as filter your layouts etc., which in my experience has been really useful for well architected schemas (e.g. proper foreign keys) also far less useful for badly architected ones (no foreign keys OR EAV/OTLT pattern which has more proponents than i'm okay with).
Now, i'm not saying that these tools are all that people should be using, quite on the contrary - learning a bit of everything is probably pretty nice, if you have enough time and are willing to put in the effort to explore your options! But i've also seen them not being used at all leading to some pretty bad circumstances - gradually created DB schemas where you end up needing to query 9 different tables to get some data because of no good reason, killing the usability of the DB through any tool where you want to visualize things or even want to write SQL queries because some app developer thought that going for OTLT (e.g. references like TABLE_NAME, ID_IN_TABLE, just typically also named weirdly like REF_TYPE, ENTITY_ID because they pretend they can abstract the DB away) is a good idea and didn't consider that maybe the DB should also be usable outside of a particular Java application which has bunches of enums and so on.
I've also seen DBs that perform horribly because the schema and how it's queried changed over time but nobody really looked into checking what's going on with the indices and as a consequence things perform about 100 times slower than they otherwise would, which can totally go under the radar until suddenly it's a big problem because it ends up in a critical path for some action that's done often. Thus i maintain that any solution that may assist you in creating indices, e.g. what Oracle has available (albeit i would prefer to use MariaDB/PostgreSQL in most cases) is really good and should be standard functionality for any good DBMS.
> Anyway, my experience. Don't feel pressured, do what works for you.
This is still spot on, though! Use what works for you, look for ways to make your life easier and hopefully make things perform correctly and performantly.
How are you solving this issue?
It can output in markdown with embedded svg diagrams (which is great for previewing in github) as well as yaml (which I use for generating models).
It is not quite polished but works pretty well. Also all the db diagrams and docs are committed alongside code in the repo which is a big plus for me.
Also gui tools are really useful for visualising content in tables with a lot of columns.
See for yourself → https://eggerapps.at/postico2/
As the developer of Postico I'm probably biased, and I'm not really up to date where Table Plus is right now, so take my thoughts with a grain of salt. You probably have to try both to see which of the two clicks with you.
The tools are the face of the database and while I didn’t love MySQL, sequel pro made working with it really nice.
And all the postgres guis at the time were really ugly.
When Postico came around I could finally have a smooth experience running queries and I’ve never looked back.
Now if redgate added PG support to sql data compare I’d be in Heaven.
The only feature I miss is some sort of schema designer.
Then we shipped a release which included a migration. The lock prevented the migration from happening and it took us 30 minutes (of downtime!) to figure out that it was my DBeaver client holding a table hostage. I closed the app and a few seconds later the migration was done and we were up.
Now, obviously this was noobness on my part, somehow, but iirc there was no clear indication in the UI that there was an uncommitted transaction going on or anything like that. I'm sure the problem was between keyboard and chair, but I never dared touch DBeaver after that.
In addition, I like that the main sidebar shows everything properly categorized and as a tree with collapsing nodes, i.e. servers > databases > schemas > tables, views, materialized views, functions, etc… > columns, constraints, foreign keys, indexes, triggers, partitions, dependencies, references, etc.
Finally, the support is great. I reported some bugs on GitHub and they all have been fixed on the next release, like 1 or 2 weeks after the report.
It was slow on my old Mac, but since I switched to a M1 I have no complaints.
Great support from the developer, nice UI, and I've yet to run into any kind of major limitation of the software.
The one major thing that's missing is that it doesn't support collaboration features (to share queries, manage access across your team, etc). If you need that functionality and want a more Superhuman/Linear-style modern UI with lots of keyboard shortcuts, I suggest you try Arctype (https://arctype.com). Disclosure: I'm a founder. It supports not just Postgres but also MySQL, SQLite, PlanetScale, Yugabyte, etc.
I wanted to make a modern database app for PostgreSQL, like Sequel Pro or Base. I also took a lot of inspiration from other modern Mac apps, like Transmit from Panic, or all the Omni Group apps.
One of the features that best showcases what I consider "modern" is the table structure editor, where I spent a lot time on the interaction design. I'm pretty proud of how it turned out (even though there are issues with it and I never finished all the features I would like to have in there).
In the last 10 years, a few other "modern" database apps for PostgreSQL have been developed, like PSequel, SQLPro Studio, and as other people have commented here, Table Plus, so Postico is probably no longer unique in trying to be modern.
At some level, Postico is even starting to look a bit dated, since I haven't been keen on the direction Apple has been going in the last few years. So maybe it's not entirely accurate to call Postico modern any more, but I do keep looking at what other Mac apps are doing, and what Apple is doing with their apps, and use that as a guiding post to keep Postico a "modern" app that feels at home on the Mac.
https://github.com/jemcode/heroku-postico
heroku postico:open --app <app_name>
Or
production postico:open (if you use the parity gem)
Not sure it works with v2 though…
It sounds like there is a lot of the sentiment on this thread too, although it doesn't go into specifics.