0
$\begingroup$

This is eluding me. I have four different databases with the following row/record counts (specified in the titles) with corresponding total database sizes. I need to determine what the database sizes will be when there are 50 million records.

Database/Size  Empty,    5k records,  10k records,  50 million records
A              7626 kB   20   MB      31   MB       ?
B              6298 kB   6298 kB      6298 kB       ?
C              7801 kB   7914 kB      7914 kB       ?
D              12   MB   1209 MB      2405 MB       ?

The sizes for databases B and C are obvious.

I don't think I can simply take the values found for 10k - 5k and use that as a delta and then multiply by the difference between 50 million and 10k (using 50 million would be close enough if I am on the correct path). Figuring this out will help our database administrator pre-size our databases.

I apologize that I have no idea what tag to use for this. =/

$\endgroup$
7
  • $\begingroup$ Have you ever heard of the method of interpolation and extrapolation? Your data set is far too small to be able to make any reasonable guess as to on what order the size will grow but one might think it would likely be that it would be linear. Do you know how to find the equation of a line given two points? $\endgroup$
    – JMoravitz
    Commented Aug 24, 2016 at 19:42
  • 1
    $\begingroup$ When you say the size for database C is obvious, you're implicitly saying that you can just extrapolate the delta between 10k and 5k and multiply it by the ratio between 50 million and 5k. $\endgroup$
    – Erick Wong
    Commented Aug 24, 2016 at 19:42
  • $\begingroup$ What makes you think that simply taking the values found for 10k - 5k and using that as a delta and then multiply (by about 10k) might be worse than any other approach? $\endgroup$
    – Henry
    Commented Aug 24, 2016 at 19:43
  • $\begingroup$ This question is not very mathematical as there is potential for implementation-specific dependencies. For instance, a database could choose to use narrower datatypes for indices when the number of rows falls below a certain threshold, making the interpolation from 10k to 50 million non-linear to an extent that can't be measured from the data you have given. In addition, many file formats will be block-based so that you won't see a change in file size unless you create a delta sufficiently large. $\endgroup$
    – Erick Wong
    Commented Aug 24, 2016 at 19:44
  • 1
    $\begingroup$ @ErickWong and JMoravitz, I think you are both correct. Having a 1 Million data sample would be ideal and I may end up doing this. $\endgroup$
    – D-Klotz
    Commented Aug 24, 2016 at 19:53

1 Answer 1

1
$\begingroup$

I think you are intended to say for A that the increase is roughly 23MB/10k records, or 2.3 kb/record. This leads to about 115 GB at 50 million records. For D, the increase is about 24MB/10k records,so the size is close to the same. These, and your answers for B and C, assume that the size can be approximately represented by a model of some size to create the database and approximate linear increase per record. This may or may not be correct.

$\endgroup$
1
  • $\begingroup$ Thank you. There will be variance in the size of each record but it isn't critical that we be exact. $\endgroup$
    – D-Klotz
    Commented Aug 24, 2016 at 19:48

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .