2009-12-12 10 views
1

Par exemple, j'ai un grand nombre de bulletins qui sont organisés dans un arbre (arborescence de catégories). Toutes les catégories inclus. Donc, si je regarde des éléments dans la catégorie A, je vois aussi tous les éléments dans les sous-catégories de cette catégorie A. Et si je regarde à la racine, je vois tous les bulletins.Distribution de structures arborescentes

Je veux réaliser l'évolutivité horizontale ici, en raison de la grande taille de l'ensemble.

La seule façon que je connais est ce qu'on appelle scatter-gather. Scatter-rassembler signifie que j'envoie une requête sur tous les nœuds (ou sous-ensemble de tous les nœuds si je sais où les données sont exactement) et après la réponse des nœuds de données que je rassemble. Le problème avec cette méthode est que je ne peux pas faire de pagination sur les nœuds de données. Et cela conduit à un trafic important sur le réseau, car le tri et la pagination doivent être effectués sur le noeud coordinateur (noeud qui initie le scatter-gather).

Existe-t-il d'autres moyens de distribuer des structures arborescentes sur un ensemble de serveurs pour obtenir une évolutivité horizontale?

Répondre

1

Vous pourriez envisager d'utiliser une sorte de B-tree, où les valeurs adjacentes auront tendance à être dans le même bloc, et donc sur le même serveur.

1

Vous pourriez vouloir regarder dans un arbre modélisé comme imbriqué Distributed Hash Tables? Juste une idée.

+0

Oui, je l'ai vu. DHT très prometteur en présence d'une défaillance du nœud. Mais c'est un travail similaire à scatter-gather en termes de bande passante réseau. Par ailleurs, y a-t-il une implémentation de DHT sur le dessus de Terracotta? ;) –

+0

Je ne connais pas de DHT sur Terracotta mais vous pourriez trouver le projet open source Terrastore intéressant: http://code.google.com/p/terrastore/ –