Bruce Momjian, a longtime PostgreSQL core developer, publishes talks, slides, and short posts on Postgres internals and features.
Commenters recommend his talks for deep dives into internals and enjoy his frequent non-trivial tidbits, including advice on connection counts.
Look at the trend for Britney Spears compared to PostgreSQL (http://www.google.com/trends?q=britney+spears%2C+postgresql&ctab=0&geo=all&date=all&sort=1). I'm not sure what to make of it because Britney Spears and mongodb do not offer a tenth of the features of postgresql, yet they are clearly more popular.
In computer science, I believe everything can be seen as a graph so of course, graph databases are a great fit for every problem. Object databases were also a great fit for objects. But where are object databases now compared to relational databases?
It's great to have so many options now and it's great to see nosql databases giving ideas to sql databases (http://momjian.us/main/blogs/pgblog/2010.html#April_10_2010_2). Although relational databases might be less elegant for immediate programming problems, they are far more flexible when new needs emerge and their ACID properties have a far better track record than most (if not all given their age) nosql databases.
> For some types of software, we really do not want students doing it, for free or otherwise. There are whole classes of software, like database engines, that are non-obvious and require many years of real-world domain experience before it is plausible that someone will design a competent, scalable architecture and implementation.
Of course as with all things the situation is more nuanced than this. Since you mention database engines we should keep in mind that without Stonebraker and 39 of his students[1] there would be no Postgres. Yet without incentives and many years of contributions from professionals (and students who would become professionals) we would not have PostgreSQL. A healthy system has a place for contributors of all levels of experience.
1- https://momjian.us/main/blogs/pgblog/2020.html#September_21_2020
I haven't fully read it (yet), but based on a quick scan of a few chapters, it looks like a dense but well-written introduction.
Some additional resources I'd recommend if you're interested:
Designing Data-Intensive Applications is a fantastic place to start if you're interested in the intersection of databases & distributed systems:
https://dataintensive.net/
The Architecture of Open-Source Applications book has a fewer chapters on databases:
https://aosabook.org/en/bdb.html
https://aosabook.org/en/hdfs.html
https://aosabook.org/en/nosql.html
There's some fantastic documentation on Postgres and its internals:
http://www.interdb.jp/pg/index.html
https://momjian.us/main/presentations/internals.html
https://www.postgresql.org/docs/current/internals.html
I have followed various snippets of community folklore advice on this topic over the years (many of them suggesting that the proper number of connections should relate somehow to the number of CPU cores). It was, therefore, refreshing to see one of the core developers, Bruce Momjian, publish modern advice[0] based on empirical observations he made while working on real client problems through Enterprise DB. Spoiler: on modern hardware, without an over-agressive shared_buffer config setting[1], up to 250 direct connections to the DB may be made without detrimental impact.
[0] https://momjian.us/main/blogs/pgblog/2020.html#April_22_2020
[1] https://momjian.us/main/blogs/pgblog/2018.html#December_7_2018
Here's the description for this PDF from the author's website: https://momjian.us/main/presentations/administration.html
Mastering PostgreSQL Administration
This talk is designed for PostgreSQL administrators. It covers all aspects of PostgreSQL administration, including installation, security, file structure, configuration, reporting, backup, daily maintenance, monitoring activity, disk space computations, and disaster recovery. It shows how to control host connectivity, configure the server, find the query being run by each session, and find the disk space used by each database.
This looks to be an excellent, thorough resource on MVCC in Postgres. Here are some others:
Chapter 13 of the Postgres official docs -> https://www.postgresql.org/docs/current/static/mvcc-intro.html
Concurrency Deep Dive talk @ PostgresOpen 2017 -> https://www.youtube.com/watch?v=ZxhBkBNxvR0
There is a wealth of good, informative, high signal/noise ratio talks at the PostgresOpen 2017, encourage you to check it out
And another famously good resource that's not quite related:
PostgreSQL internals through pictures -> https://momjian.us/main/writings/pgsql/internalpics.pdf