What is DBMonster?

DBMonster is a tool which helps database application developers with tuning the structure of the database, tuning the usage of indexes, and testing the application performance under heavy database load. DBMonster generates as much random data as you wish and puts it into an SQL database. It provides a very pluggable interface and is easy to use.

How does it work?

The idea of DBMonster is very simple. It is table-oriented monster, which means that it generates data for tables one by one. DBMonster can generate data for the following types:

  • strings for SQL char, varchar and text,
  • integers for SQL int4 and int8,
  • numbers for SQL arbitrary numeric type and arbitrary precision,
  • booleans for SQL boolean,
  • timestamps for SQL datetime and timestamp.
DBMonster reads the tables definitions from a XML schema file(s) and starts the generation proccess from the first table. If the table contains a column(s) that use(s) a foreign key constraint DBMosnter will generate the needed tables first. The table order is calculated on-the-fly.
Data generation process is based on Generators concept. Each column has its own value-generator that knows how to produce random value. There are several predefined generators (such as StringGenerator, NumberGenerator, BooleanGenerator etc.) but you may write more sofisticated ones (if you want) that will fit you needs. Generator interface is simple but therefore very flexible.
Tuples are inserted into database in brute-force way. It does matter when a column has unique indexes on non-key columns. If a row cannot be inserted into the database DBMonster tries to find another values. The maximum number of tries can be configured by <dbmonster.max-tries> configuration variable. The default value is 1000.

Limitations

  • DBMonster doesn't support advanced data generation model for more than one table at the same time. As a workaround a sofisticated DataGenerator may be used.

Third-party libraries used in DBMonster

DBMonster uses some third-party libraries. Most of them comes from The Apache Jakarta Project. Here is the whole list:

This product includes software developed by the
Apache Software Foundation (http://www.apache.org/).
This product includes software developed by
Geoff Kuenning and other unpaid contributors.