I prefer the UX of TablePlus as well. As an example, I find the constraints UX in Postico to be dummed down and inefficient. That's an area where I want a very terse, straightforward, and easy to visually organize / parse display of information, and TablePlus using a grid there is far superior imho. There are other examples, but I dislike the injection of eye candy into a tool that I need to be methodical and analytical within.
I use TablePlus on a daily basis and really enjoy it. The one feature it's missing that I really want, and which I sometimes switch over to DbVisualizer for, is spreadsheet-style selection and editing.
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.)
On first glance there are features in Postico 2 that I'd find useful - having SQL queries organised in the UI rather than on the filesystem for one. I'm a daily TablePlus user and very happy with it so I'd need to find real added value.
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.
I keep all my queries in Dash (but I’m also a SQL hacker in the sense of piecing it together slowly as I learn the language rather than a native) - I love tableplus, the only advantage I can see from what the splash shows is the ability to create/edit fields (and tables?) in UI, but I’m past that stage of my journey now
Too bad nothing still beats SequelPro usability and SequelAce somehow doesn't feel like its predecessor.
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.
For most things I use Navicat, for more complex stuff I use DBeaver. But what I've really wanted is what Microsoft had over 20 years ago:
- 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.
DB dev here with > 2 decades experience. This is just IMO and it depends on your needs, but these fit mine. If you're using SQL on small DBs you can probably get away with what you do, for large DBs that won't fly.
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.
> 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).
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.
To expand upon the argument of leaning into GUI tools for stuff like this, or to offer my own opinions, i really liked the functionality of MySQL Workbench.
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.
- a visual database diagram
We are looking at sqldbm to visualize and document our DWH schema. It looks nice, but is cloud first and expensive if you want to collaborate.
A very lofi solution I have been using is tbls [1]. It is a native cli utility that generates documentation from db schema (and includes comments in the db as well).
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.
Tools like this only emphasize my point I think. I've resorted to writing my own diagram (also in svg) and docs generator for our apps and those things are fun to write, but I can't help but feel like this was all better taken care of back in the early 2000s with SQL Server Enterprise Manager.
Whilst I agree with you for writing queries, the gui tools provide some nice tools. I haven’t used postico but I regularly use sequel pro and the ease to write a query and export results via csv that non technical people might need is a great feature. I’m sure there is a way to do it in command line but for me I find it a lot easier as I’m not a db admin.
Also gui tools are really useful for visualising content in tables with a lot of columns.
It's feature complete, and a few thousand people are already using it. It's probably the better choice for most users. But there are still a few issues with the file editor that I want to fix before I officially release it, because I have a lot of corporate users who presumably prefer to have fewer features but more stability.
I'm using it for probably 1.5 years and never had any problems with it. I can highly recommend it. It's really stable and I reported 2 (small, cosmetic) bugs which both got fixed within a few days.
There are annoying show-stopper bugs that the developer refuses to fix, like this one for not being able to set options for null/empty values when importing data from csv ( https://github.com/jakob/Postico/issues/406). Or issues importing CSVs exported by Postico itself, that seems like a pretty basic requirement.
On the other hand, even though DBeaver has an annoying and ugly UX (as any other 90s Java software) and is full of warts (eg not showing a unique key constraint in a postgres table, which was visible in Postico), it somehow feels more substantial.
It's not an empty string bug report. It's not being able to import CSVs with blank values, because postico interprets them as null, and no way to remap the values. Depending on your workflow, this could be a serious hinderance.
I used to use Postico (paid version) but switched to TablePlus free and then paid for it. I switched so long back that I don't remember exactly why I switched but TablePlus has been amazing.
Some parts of the UI in Table Plus have been inspired by Postico, which is probably why it looks similar at a first glance. But the apps are different, and they have a very different focus. As far as I can tell Table Plus tries be the best client for everybody (every platform + every databases), while Postico tries to be the best client just for PostgreSQL on the Mac.
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.
Thanks for your work on Postico. Was looking for a Mac based GUI when I made the switch from MySQL to Postgresql almost 10 years ago. Sequel Pro was my go to interface for understanding my database tables in MySQL and I wanted something similar for Postgresql. I bought a license years ago and it is part of my daily workflow. Didn't know about v2, will have to check that out!
Thanks so much for your work on Postico. I use it every day and recommend it highly. It’s fast, stable, and a Mac app through and through (increasingly a rarity).
I once somehow managed to get dbeaver keep a table locked on our prod db, just by having the program open. I thought I was long done doing the things i needed to do, i just hadn't closed the program.
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.
I use it, other than being a bit heavy weight, I love it. Same types of features but to me looks better in a few ways - supports any database, beautiful auto-generated ER diagrams, personally I like the interface better, and to the extent that you don't hate Eclipse it's an advantage that you can install it into a regular Eclipse instance and use any other language / plugin that Eclipse supports (for example editing SQL with vim keybindings). It's actually really cool, for example, working with Django, debugging your code and in the same window having auto-refresh running to show the rows getting added in the DBeaver interface.
Use it and love it. I believe that table plus (or similar ones) are nice and cool, but for me, DBeaver is very powerful and useful piece of software. It may not look cool sometimes, but it gets the job done. And it has a lot of connectors. Plus it is free! I can't expect more.
I tried several clients for Mac a few years ago (including Postico) and DBeaver was the only one not lacking basic features (views & materialized views, triggers, functions, partitions, extensions…). So I've been using it since then.
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.
It's big, complex and heavyweight (it's basically an eclipse skin), but if you do a lot of data work with different sources it's definitely your best bet.
It has nice viewer interfaces even for uncommon data types (like geospatial data), and it's well-suited for both infra work and querying.
It's not pretty but it's one of the most useful pieces of software I interact with.
Postico is a really solid piece of software. Very user friendly and approachable, it's a tool I use every day for working with databases. Solidly recommended.
I used to use separate apps for things like this and now I just use the one built into IDEA and it totally does the job. Bonus, I don't have to leave my IDE.
My biggest issue with using IDEA for DB work is that DB connections are saved to the project or workspace (not sure about the IDEA lingo). We have many projects and so I have to add the DB connections again and again. Is there a nice solution for that?
In Jetbrains IDEs, when you define a data source, there is a button to make the source global. If you do that, it will be accessible across all projects.
When I run into questions like this with IDEA, there is usually an answer. If not, file an issue in their issue tracker. Seriously. They fix stuff nonstop. Sometimes it even takes years, but they eventually do it if it is a good one. They are very responsive in their tracker.
pgAdmin4 is so good. And so simple to setup with new projects. I have a template with Docker with the server credentials that gets loaded in so all my new projects have a pgAdmin4 container baked in. Nice that it translates to any sort of cloud or remote environment when you do it that way.
Is there any way to visualize the relationships between entities? I'm currently using DBeaver and previously used DataGrip for this. In a databae with complex models, being able to see a diagram is a massive time saver.
I looked into that too a few weeks ago and the nicest looking one I could find is the one in DataGrip. I don't think that it's that great though. I found navigating in the generated view to be cumbersome.
Postico is amazing! I'm glad to see a new version come out.
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.
It looks great, but as much as I like mac-native apps, I use Mac for work, and Linux at home. TablePlus is cross platform, and much better for my needs.
What does it mean to be modern in this context? Are you trying to differentiate from some other client in a meaningful way? The description says modern design language but it looks pretty plain, which is a good thing, but I wouldn't use 'modern' to describe it.
When I started working on Postico, the other PostgreSQL client apps all had a really dated Windows 95 / Java UI style, with hundreds of toolbar icons, assistants for everything, and lots of modal dialogs. They were such a kludge that many people just used psql on the command line instead.
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.
Thanks so much for your work on Postico. I had been using Sequel Pro working with MySQL and was looking for something as good, when i switched to a company that uses Postgres. Postico has fit that bill entirely and then some, and has been one of the few tools i've been wiling to pay money for, along with Sublime Text.
I suggest using more descriptive words than 'modern'. Simple, uncluttered, native, and interactive seem like better words to describe the effort you've put into the application.
I have been using postico for the past few years until I recently discovered table plus which I very much prefer. Also jet rains data grip is good too (albeit expensive).
I think the point is that the integrated SQL client is good enough for GP's needs, so no need to switch apps. Even if it's from the same editor, DataGrip still is a different application that requires switching back and forth.
I have always just used the psql command as I have a cli based mindset from using Linux so long. I find it works great for reading data and querying but would like a small application for building an image graph of the whole database. Does anyone know a good one for MacOS?
At work I use SQLyog, but only for the copy database feature. It is able to copy a database from a server to my laptop much faster than dumping and importing can. Is there any other application that can do this?
There's nothing wrong with pgadmin, it's just a bit of a different use case I feel. Postico is a nice, native mac app for using the database. pgadmin is mostly focused on administrating the database as the name suggests. Sure it has some query possibilities but that's not the main use case so it's less refined.
Really hard to differentiate for PostgreSQL usage, both are great options. The main difference is that TablePlus supports a lot of other databases. I slightly prefer how Postico does things, also it has better PostgreSQL support (TablePlus is good but not great with arrays, hstore etc). I think the only thing that puts TablePlus ahead for my usage is being able to filter columns when viewing a row. I have some tables with maybe 40-50 columns and many similar column names so browsing with Postico can be a bit tedious.
Using both, both are very good. Sticking to postico most of the time due to better UX (totally IMO of course). Also, try v2 https://eggerapps.at/postico2/
this replacement for excel for PG is nice but as a developer I live in Tmux across many servers and in many scripts so I am not sure how good it is in this sort of way.
pgAdmin is a cross platform app that doesn't look like a native Mac app at all while Postico is and behaves like a native Mac app. How is that better UI?
What's so different about the UI except that the different query windows are now visible in the top left corner? I'd hardly call that a "big step back".
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/