Qual é o projeto de base de dados de melhores práticas para agregação de transações?

estou a criar uma base de dados que irá conter dados de nível de transacção. Funcionará da mesma forma que uma conta bancária - débitos/créditos para um número de conta.

Qual é a melhor e mais eficiente forma de obter a agregação destas transacções.

estava a pensar em usar uma tabela de resumo e depois adicioná-los a uma lista das transacções de hoje, a fim de obter quanto cada conta tem (ou seja, o saldo existente).

Quero que isto seja escalável. Mil milhões transactions) então não quer ter que realizar hits de banco de dados para a tabela de fatos principal, uma vez que ele vai precisar encontrar todos os débitos/créditos associados com um número de conta desejado digitalizando potencialmente um bilhão de linhas.

Obrigado, qualquer ajuda ou recursos seria fantástico.

Author: Jimmyn, 2016-04-08

2 answers

(Trabalham nos bancos há quase 10 anos. Aqui está como é realmente feito). A tua ideia é boa.

De vez em quando você armazena o saldo em outro lugar ("transportar o saldo para a frente"). Por exemplo, todos os meses (ou mais do que um determinado número de transacções). Para calcular o saldo real (ou qualquer saldo no passado) acumula todas as transacções relevantes que recuam no tempo até ao saldo mais recente que manteve ("saldo de reporte"), que precisa de adicionar, É claro.

O saldo "actual" não é mantido em lado nenhum. Apenas sozinho para os problemas de bloqueio que você teria se você atualizasse este equilíbrio o tempo todo. (Em bancos reais você vai acertar algumas contas internas do banco com quase todas as transações. Há uma abundância de contas internas do banco para ser capaz de obter os números exigidos por lei. Estas contas são atingidas com muita frequência e, assim, causaria problemas de bloqueio quando você gostaria de atualizá-los com cada transação. Em vez disso, todas as transacções são basta inserir-mesmo os saldos transitados são apenas inserções).

Também em bancos reais tem muitos casos de uso que tornam esta abordagem mais favorável:

  • ser capaz de recuperar saldos datados a qualquer momento - ser capaz de obter saldos com base em datas diferentes para qualquer hora (por exemplo, Data-valor vs. data de transacção).
  • as inversões / cancelamentos são uma diversão própria. Imagine reverter uma transação de duas semanas atrás e ainda manter tudo o acima acontecer.
É uma longa história. No entanto, a resposta à sua pergunta é: sim, você não pode acumular um número cada vez maior de transações, você precisa manter saldos intermediários para limitar o número de acumular, se necessário. Bater na tabela principal para um número limitado de linhas, não deve ser problema.

Certifique-se que a sua pesquisa principal usa um apenas um índice .

 3
Author: Markus Winand, 2016-04-08 04:48:46

Faça um desenho orientado a objectos, crie uma tabela para objectos, como conta, transacção, etc. Aqui está um bom site para sua referência. Mas há muito mais na web a discutir os OODBMS. A referência que dei é apenas a minha base quando comecei a fazer um OODBMS.

 -3
Author: JC Borlagdan, 2016-04-08 04:36:55