PuppetDB is a specialized database REST API designed to interact with the Puppet master. It mainly comprises a PostgreSQL backend with an API wrapper. The latter was written in Clojure and runs in yet another JVM.
PuppetDB aids the master's secondary task of storing reports and other agent data. It is also necessary for some specific manifest compiler functionality. This is covered in Chapter 6, The Puppet Beginners Advanced Parts.
The best way to set up and configure PuppetDB is actually Puppet itself. Since the necessary tools have not yet been introduced, we will postpone this step until Chapter 6, The Puppet Beginners Advanced Parts. This is not a problem, because PuppetDB is not essential for basic master operation.