Scala – Database scalability – performance vs. database size

databasescalability

I'm creating an app that will have to put at max 32 GB of data into my database. I am using B-tree indexing because the reads will have range queries (like from 0 < time < 1hr).

At the beginning (database size = 0GB), I will get 60 and 70 writes per millisecond. After say 5GB, the three databases I've tested (H2, berkeley DB, Sybase SQL Anywhere) have REALLY slowed down to like under 5 writes per millisecond.

Questions:

  • Is this typical?
  • Would I still see this scalability issue if I REMOVED indexing?
  • What are the causes of this problem?

Notes:

Each record consists of a few ints

Best Solution

Yes; indexing improves fetch times at the cost of insert times. Your numbers sound reasonable - without knowing more.

You can benchmark it. You'll need to have a reasonable amount of data stored. Consider whether or not to index based upon the queries - heavy fetch and light insert? index everywhere a where clause might use it. Light fetch, heavy inserts? Probably avoid indexes. Mixed workload; benchmark it!

When benchmarking, you want as real or realistic data as possible, both in volume and on data domain (distribution of data, not just all "henry smith" but all manner of names, for example).