I am trying to design a data model which can hold a very large amount of data, does anyone with experience in large volumes of data have any feedback on this, ie:
// example only, not meant to compile
public class TransactionAccount {
private long balance;
private List<Transaction> transactions = new ArrayList<Transaction>();
....
public long getBalance() { return balance; }
}
private class Transaction {
public Date date;
public long amount;
}
Based on what I have read, the only way to get transactional integrity on inserting a Transaction
and updating balance
is to make it one entity group.
However over time there would be millions of transactions for a particular TransactionAccount
. The number of writes to this entity group would be low, but the reads would be much higher.
I know it could possibly be sharded, however reading the balance
is a very frequent operation, and sharding it would make one of the most common operations getBalance()
the slowest operation.