Question

Je suis en train de déterminer la façon la plus efficace et évolutive pour mettre en œuvre un mécanisme de file d'attente de traitement dans une base de données SQL. Le court il est, j'ai un tas d'objets « domaine » des statistiques « » Backlink associés. Je veux comprendre efficacement que le besoin d'avoir leurs domaines Backlinks traités.

Domaine Tableau: id, domainName

Backlinks Tableau: id, DomainID, comte, checkedTime

Le tableau Backlinks a plusieurs enregistrements (pour conserver un historique) à un enregistrement de domaine. Je dois sélectionner efficacement les domaines qui sont dus à leurs Backlinks ont traité. Cela pourrait signifier que le Backlinks record avec le plus récent checkedTime est assez loin dans le passé, ou qu'il n'y a pas d'enregistrement Backlinks du tout pour un enregistrement de domaine. Les domaines devront être commandés pour le traitement d'un certain nombre de facteurs, y compris la commande par le plus ancien checkedTime premier.

Il y a des domaines de traitement multiples »lecteurs. Si le même domaine obtient traité deux fois ce n'est pas une affaire énorme, mais il est une perte de cpu.

Le travailleur prend une quantité indéterminée de temps pour traiter un domaine. Je préférerais avoir une sauvegarde dans le sens que la caisse serait « expirer » plutôt que d'exiger le processus de travail explicitement « checkin » un disque quand il est terminé, dans le cas où le travailleur échoue pour une raison.

La grande question est mise à l'échelle ici. Dès le début, je vais facilement avoir environ 2 millions de domaines, et ce nombre va continuer de croître tous les jours. Cela signifie que mon histoire Backlinks va croître rapidement aussi, comme je l'attends à ce processus dans certains cas, tous les jours, et d'autres cas hebdomadaires pour chaque domaine. La question devient, ce qui est le moyen le plus efficace pour trouver des domaines qui nécessitent des backlinks de traitement?

Merci pour votre aide!

Était-ce utile?

La solution

Je décidé de structurer les choses un peu différemment. Au lieu de trouver des domaines qui doivent être traitées en fonction des critères de plusieurs tables, je l'attribution d'une date à laquelle chacun des besoins métriques à traiter pour un domaine donné. Cela permet de trouver les domaines qui ont besoin de traitement beaucoup plus simple d'une requête.

Je fini par utiliser l'idée des lots où je trouve des domaines à traiter, les marquer comme étant traitée par un identifiant de lot, puis retourner ces domaines au travailleur. Lorsque le travailleur est fait, il renvoie les résultats, et le lot est supprimé, et les domaines sera naturellement prêt à traiter à l'avenir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top