Is there any really excellent reason to use PostgreSQL over MySQL/MariaDB for an app like #Readlebee or any other federated app? I know MySQL much better and could develop for it much faster, but if PostgreSQL is inherently better at storing and retrieving records concurrently or something like that, I'd be willing to stick with using it.
@Readlebee i don't have much experience but I know many people who won't using anything else after postgres. It works with JSON eg which is cool
@Readlebee We tend to actively avoid MySQL because. Here are some of the reasons: https://gist.github.com/edwardloveall/5276a954140cee94b2d79e64db6936ff
@Readlebee I recognize that familiarity is important also and you're totally right to take that into account. On the other hand, this might be a good excuse to dive into a ⭐️ new thing ⭐️!
Either way, good luck and I'm excited to use Readlebee! 😀
@edwardloveall Thanks for that reference, it's really helpful! I do feel like Postgres is probably the "right" choice for this project. Plus knowing more than just MySQL will definitely be more enriching in the long run. 😁
Thanks! I hope I'm able to deliver something worth being excited for! 😅
@Readlebee Hah, extra "because" here. Too much editing 😬
It's true that familiarity is a plus, but is it really that different when you start a new project? I would imagine what will make most of the difference is the SQL, and that should be largely the same... except for the extra things you will be able to use in PG.
@Readlebee I know and love Postgres, but not MySQL. I do know there are some nice features Postgres has that MySQL doesn't — queryable JSON columns, materialized views... MySQL is less supportive of triggers, stored procedures, subqueries, ... To me MySQL feels like a Honda Civic. Reliable, but nothing fancy. Postgres is more lux. Still gets you to the same place, just a little more comfortably (and fun!)
@Amgine I love SQLite, but it's definitely the incorrect database choice for this project. I'm anticipating federation support, which will require handling a lot of data and accessing the database many times simultaneously.
SQLite is more geared toward single-user or light multi-user interaction rather than what #Readlebee will do, so having a separate database manager will be essential to ensure that no (or at least less) corruption or loss of data happens when multiple connections go at once.
@Amgine Yeah, I really like that idea a lot! Allowing Readlebee *not* to federate would probably be a good option to include anyway, so that'll go on the list for sure. :)
The advantage of Postgresql wrt to ActivityPub or any other json based protocol is that you can do ad hoc searches on protocol records stored in fields with the jsonb data type. You don't build your application on this; you still break out any properties you want to search on from the application so that there's an index to profile. When you want to refactor an application to add an index, however, it's a lifesaver
For people who care about, support, or build Free, Libre, and Open Source Software (FLOSS).