How can I determinate the pc specs I need for my database? I am writing an application for a client that says he will have 20 orders / day and that will increase to 200 within 2 years.
He wants to have his own local server for that and wants me to suggest him a PC specification that may supply his needs for N years say 7~10.
The database will be mariadb.
What data do I need to look at to evaluate that?
My initial idea is to generate data to cover for 300 daily records for a year and then calculate based on that.
I will be writing an app that writes dummy data to the db using N connections to emulate concurrent insert, reads, etc, not sure if this is a good way to do this either. What are your advice?
But I am not sure how I would calculate memory, cpu and disk io into the equation only the disk space.
How can I calculate the memory cpu and disk io for this purpose to know say what sort of HD/SSD/M2 or cpu and memory that it would require?
300 orders per day for 10 years is about a million rows. Assuming 10KB of data per sale (probably will be a lot less), that's 10GB of disk space. As for how to check your assumptions about disk usage and throughout, you will need to write some test scripts to create those million sales and measure latency for each transaction with an increasing number of concurrent connections.
A Raspberry Pi would be adequate for a volume of data that small.
My advice is to start with an Oracle free tier VM and see if it is responsive enough for you. If it isn't, get a VM from Scaleway for €3/month. Or, if your client is really welded to the idea that he must have the server on site, get a Raspberry Pi.
Whatever solution you go with, make sure you have reliable, frequent backups.
In terms of how to work out the resources, work out how many transactions an order creates. If it is 1 transaction, and you have 300 orders per day, that is 300 transactions per day. 300 transactions per second would be relatively low throughput.
What you really need to test is response time when somebody is using the system. With such low throughput, your requirements will be dictated by response latency, not throughput for 300 transactions per day.