2010-02-19 5 views
0

Mon application tire une grande quantité de données d'une source externe - normalement sur Internet - et les stocke localement sur le serveur d'application.Modèle/cadre pour la population paresseuse d'une base de données à partir d'une source distante

Actuellement, lorsqu'un utilisateur démarre un nouveau projet, nous essayons agressivement d'extraire les données de la source externe en fonction de l'ordre dans lequel nous prédisons que l'utilisateur voudra y accéder. Ce processus peut prendre 2 à 3 heures.

Il semble qu'une approche plus intelligente consiste ici à fournir un accès aux données de manière fictive. Par exemple, si un utilisateur veut accéder à l'entité A, essayez de le récupérer dans notre base de données. Si ce n'est pas encore le cas, récupérez-le à partir de la source distante et remplissez la base de données en même temps. Ceci, combiné avec le remplissage de la base de données en arrière-plan, donnerait une expérience beaucoup plus lisse à l'utilisateur.

Y a-t-il des frameworks qui gèrent ce niveau d'abstraction? (Mon application est en Java).

Il y a plusieurs considérations ici - c'est-à-dire. Actuellement, ma base de données renforce l'intégrité relationnelle - quelque chose qui pourrait devoir être désactivé pour faciliter cette approche de chargement paresseux. La concurrence semble comme cela causerait des problèmes ici.

De même, il semble que des entités et des collections puissent exister dans un état partiellement peuplé - cela nécessite des données de schéma supplémentaires pour distinguer le complet du partiellement rempli. Si je comprends bien, c'est juste un modèle de dépôt agrégé - est-ce correct, ou est-ce un modèle plus approprié que je devrais étudier?

+0

Etes-vous sûr de vouloir utiliser la balise entity-framework? EF est un framework .NET O/RM et vous avez inclus le tag java. – TrueWill

+0

Merci - J'ai supprimé l'étiquette. –

Répondre

0

Avez-vous essayé JPA/Hibernate? Cela semble facilement possible dans Hibernate.

+0

J'utilise Hibernate pour ma couche de base de données sur le serveur de l'application. Cependant, le défi consiste à charger des données qui ne sont peut-être pas encore dans la base de données. Si c'est le cas, nous devons extraire les données de la source distante et remplir la base de données. Essentiellement, il s'agit d'une couche d'abstraction au dessus d'Hibernate. –

+0

Ok. Je l'ai. Quelle est la source distante? Est-ce la base de données, XML, Web Service? – Padmarag

+0

Il s'agit d'un serveur situé ailleurs dans le monde. Pour les besoins de cette discussion, il peut s'agir de l'un des protocoles que vous avez mentionnés: un serveur Web, une base de données distante ou un serveur d'applications distant. –

Questions connexes