Я пытаюсь разработать модель данных, которая может содержать очень большой объем данных, делает любого с опытом в больших объемах данных, имеют любую обратную связь на этом, т.е.:
// 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;
}
На основе того, что я считал, единственный способ получить целостность транзакций при вставке a Transaction
и обновление balance
должен сделать это одной группой объекта.
Однако со временем были бы миллионы транзакций для детали TransactionAccount
. Количество записей этой группе объекта было бы небольшим, но чтения будут намного выше.
Я знаю, что это мог возможно быть черепок, однако читая balance
очень частая операция и sharding, он сделал бы одну из наиболее распространенных операций getBalance()
самая медленная операция.