We have a J2EE application with multiple interfaces, from both external company and intranet sources. How do I go about database capacity planning for this application? Is there a rule of thumb calculation?
One of the first things one can do is to try to determine how big your data requirements may be. If you have some sample data, then load the sample data into your schema and see how much space it occupies. If you do not have sample data, enter some dummy data that is representative of the data you expect. For instance, you can easily make up phone numbers, addresses, social security numbers, etc. even if the data is fictitious.
The hard part is estimating the number of rows your table will hold. In some cases, you may be able to get a real good idea of how many rows of data will be in the table. For instance, if I have a table titled EMPLOYEES, then there will be one row of data for every employee in my company. Multiply my sample row size by the number of employees in my company, and I can get a good idea of the total size needed for this table. In other cases, estimating is performed with a good knowledge of how the application will be used. For instance, in the INVOICES table, I need to figure out how many invoices I will be required to hold. I would try to get an idea of the maximum number of invoices my company has ever printed in a single year. This, along with the average size to hold one row in the INVOICES table can lead me to the space requirements for a single year. Next, you'll need to figure out how many years worth of invoices you'll need to store.
Capacity planning for memory and CPU resources is tougher to figure out. Changes in hardware only make planning more difficult. The best way I have handled this is to deploy a system and monitor the memory and CPU resources. You may have to upgrade your hardware in the future when these resources start becoming taxed heavily. Oracle 10g's Grid strategy helps out in this arena. With 10g and Real Application Clusters (RAC), you can start off with two small servers in your cluster. If you find that you need more resources, you can add other servers to your cluster.
Dig Deeper on Oracle database design and architecture
Have a question for an expert?
Please add a title for your question
Get answers from a TechTarget expert on whatever's puzzling you.