2009-11-24 11 views
6

Je crée une application qui stocke les informations financières des utilisateurs dans une base de données sqlite. Je veux qu'il stocke toutes sortes d'informations comme le numéro de compte, le nom de la banque, les taux d'intérêt, etc.Pour ceux dans le secteur financier, le stockage des données question

Je voulais demander comment ce qui suit est fait dans le logiciel financier réel. Par exemple, lorsque quelqu'un demande des données de la base de données via le logiciel, le logiciel va-t-il simplement récupérer les données ou le logiciel va-t-il obtenir les informations fondamentales et ensuite calculer sur place les données nécessaires?

Si nous voulions voir un montant de paiement et que nous savons qu'il s'agit d'un certain pourcentage, stockons-nous le montant du paiement dans le tableau ou le calculons-nous sur place.

Si je voulais interroger la base de données pour connaître l'intérêt total accumulé, est-ce que je stocke ces données dans le tableau ou dois-je les calculer sur place? J'ai juste du mal à comprendre s'il vaut mieux garder la table de la base de données simple et faire la plupart des calculs sur place, ou conserver plus de données sur la table et faire en sorte que le logiciel la remplisse en arrière-plan.

Répondre

4

Généralement, dans toutes les industries, nous ne stockons pas les données qui peuvent être calculées, car sinon, c'est une violation des formes normales de la base de données. Si un élément de données est mis à jour, ils doivent tous être mis à jour. Faites attention cependant, car les données peuvent être initialement calculées, mais peuvent ne pas changer avec d'autres données. Comme il pourrait y avoir un taux d'intérêt actuel, mais en attribuant des paiements d'intérêts, vous voudrez peut-être stocker le taux d'intérêt qu'ils ont gagné, parce que le taux d'intérêt qu'ils ont gagné est constant, mais le taux d'intérêt actuel ne l'est pas.

+2

Vous ne stockez pas les données qui peuvent être calculées SAUF si cela aurait pour résultat des gains significatifs à l'efficacité ailleurs – John

+1

Il est très commun dans les applications financières de casser certaines règles de normalisation. Les principaux objectifs des applications financières tendent vers la validité historique et l'auditabilité sur l'économie d'espace. Les quelques applications financières avec lesquelles je travaillais (auxquelles je n'avais pas participé au début), toutes impliquaient des schémas qui s'inséraient et utilisaient un identifiant pour indiquer quel enregistrement était actif, ce qui les rendait lents et difficiles à interroger mais fourni des enregistrements historiques parfaits. En outre, les bases de données financières finissent souvent par accumuler des ensembles de données très volumineux, ce qui rend les calculs à la volée irréalisables. –

+0

@SamuelNeff J'ai beaucoup travaillé dans le secteur financier, et les règles s'appliquent généralement, il peut parfois y avoir des données «dupliquées» dans les tables/lignes historiques, mais des formes normales plus élevées s'appliquent toujours. – McKay

1

Eh bien, gardez à l'esprit que vous aurez besoin d'enregistrer beaucoup d'historique relatif aux changements de taux et de lier vos entrées financières individuelles à potentiellement beaucoup de taux différents. Nous maintenons la possibilité de générer tous les calculs à partir de zéro si nécessaire (et rapprocher régulièrement), mais nous avons généralement des positions agrégées historiques qui sont mises à jour périodiquement (une nouvelle entrée pour chaque semaine ou mois) et les calculs sont basés sur les changements. Il n'est pas toujours pratique de tout générer à partir de zéro en un instant.

1

Habituellement (pas toujours, évidemment), lorsque vous travaillez avec des données finales, vous trouverez une sorte de données calculées pré-attrapées dans presque tous les ERP. Lorsque vous devez déplacer des millions de transactions et vous devez faire beaucoup de colonnes et d'agrégats calculés, les bénéfices de stockage et de maintien de ces données calculées seront bénéfiques. Vous pouvez trouver ces données sous forme de colonnes supplémentaires dans les tables où se trouvent les données d'origine ou dans des tables distinctes stockant des agrégats ou des opérations intermédiaires.

4

"Immutable Invoices" serait un conte de prudence dans une certaine mesure sur ce sujet. Bien que l'on ne veuille pas stocker de données supplémentaires, certains d'entre eux sont probablement mieux exportés dans certaines archives en cas de changements de prix qui ne devraient pas modifier rétroactivement les factures.

3

J'écris des logiciels financiers pour les banques.

Je ne peux pas dire quelle est la réponse tout à fait juste, mais c'est ce que j'ai vu et ce qui fonctionne. En fonction de la complexité du calcul (0,5 ou 2 heures/enregistrement), le code peut soit calculer le résultat à la volée lorsqu'il est interrogé à partir de la base de données, soit extraire un résultat déjà calculé d'une autre table. Il est très utile de stocker séparément toutes les variables qui entrent dans le calcul, au cas où il serait nécessaire de revenir sur le résultat.

Dans de nombreux cas, les calculs incluent des débits en temps réel et des informations financières et il n'y a pas de temps (lorsque le calcul est complexe) pour mettre à jour tous les enregistrements avec les résultats correctement calculés. Ceux-ci sont généralement effectués dans des lots de nuit, mais n'ont pas la mise à jour en temps réel.

0

Dans l'application financière, les champs de données sont généralement emballés dans certains formats standard. Ces champs de données portent des données d'authentification de l'utilisateur. Les données empaquetées arrivent sur le serveur de l'acquéreur et en réponse, le code de réponse est généré. Les données de réponse sont compressées dans le format standard et envoyées au client. Le code défini du côté client doit correspondre au code de réponse pour une transaction réussie. De cette façon, le travail se poursuit dans les logiciels financiers.