From my common sense, my physical machine hosting a very large Postgres database (for big data) should be real rather than virtual or container.

Some people say it is better to install on a virtual machine or a container. I would like to get opinion from those who works with database every day. I am looking for performance over everything else.

Another question is about the storage: external or internal? I would think real internal disks with the RAIDs. Not sure external storage with logical volumes are better or not.

  • Answers to this question might be helpful, though still mostly opinion-based. – mustaccio May 22 '19 at 18:48

Your decision on VM or not shouldn't be so much determined by the number of rows but rather the availability, scaling, technical expertise, company culture, and performance based on your hardware availability.

You can run billions of rows in VMs. Obviously you'd want to find the database engines best practices doc for your hypervisor and follow them carefully. You should conduct plenty of testing to ensure it meets your needs and also test your HA solutions if needed for your SLAs.

External and internal at the end of the day come down to availability and IOPS or MBps. If you have the expertise to run a fast external source reliability, great! If you don't, then it would be safer to go internal. Internal will be faster anyways by default without any special configuration or external hardware anyways and you should be testing your perf. reqs. but with SSDs and the latest nand solutions you're a lot less likely to under perform.

| improve this answer | |
  • A few other points to consider is the choice can have on recovery after a hardware failure or when migrating the server to another physical or cloud location. A VM might allow for a lift and shift while a physical machine might take more setup. – Joe W May 22 '19 at 18:41

Not the answer you're looking for? Browse other questions tagged or ask your own question.