RIH has about the same -- 30-45M instances, somewhere between 5-15TB depending on compression and improperly duplicated studies (don't ask). Files are on disk, metadata is in postgres.
A single Orthanc couldn't keep up with amount of data we produce when I set this up a couple of years ago, so I use a receiving queue (1 orthanc that receives on DICOM and forwards to HTTP) and 3-5 HTTP peers that accept incoming instances round-robin using an nginx reverse proxy. And I have one more separate Orthanc acting as a DICOM Q/R node for the main database. Very recent Orthancs are multi-threaded though, so running parallel instances may not be as important anymore (although I generally disagree with the choice to complexify Orthanc.)
When data arrives, I also convert all of the tags to JSON files and index those separately in Splunk, which is awesome for complex queries, dashboards, visualizations, alerting, and various other non-DICOM-friendly workflows. We use it heavily for dose-monitoring, for example.
Moreover, this is a non-clinical "research PACS", and once a year or so someone in the machine room does something stupid like installing unnecessary anti-virus software on my servers or changing IDs on the mapped network drives and brings the whole thing down, sometimes for several days. So while I have very high confidence in Orthanc, I also don't recommend doing something like this for production unless you _really_ know what your are doing, you are staffed appropriately for 24/7 trouble-shooting, and have end-to-end control of your hardware.
Derek-