I am extending an e-voting application with a database. Consider multiple concurrent ballots. For each ballot, several configuration options are stored, and also the votes.
The configuration tables are obviously very small, in the presence of a reasonable amount of concurrent ballots, but the votes table can grow to be extremely large.
My question is this: is it better to have the DB concern only one ballot, and have each ballot create a new instance of the whole DB, or to have a ballot_id foreign key in most tables, and store the data for all ballots in the same DB?
My question mainly concerns performance, especially of insertions in the votes table, once it has grown to be huge.