Επεξεργασία και δρομολόγηση XML ερωτήσεων σε συστήματα ομότιμων κόμβων Μαρίνα Δρόσου Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Αύγουστος 2006
2 Αντικείμενο (1/2) Πλέον τα συστήματα ομότιμων κόμβων (p2p) χρησιμοποιούνται ευρέως. Επίσης η γλώσσα XML τείνει να επικρατήσει ως μέσο ανταλλαγής πληροφορίας. Δημιουργία p2p συστημάτων που διαμοιράζουν έγγραφα XML. Λόγω του μεγάλου όγκου δεδομένων η αναζήτηση πληροφορίας απευθείας σε αυτά δεν είναι αποδοτική. Στρεφόμαστε σε τεχνικές περίληψης των δεδομένων.
3 Αντικείμενο (2/2) Για την περίληψη, χρησιμοποιούμε μια νέα δομή, το Ιστόγραμμα Bloom Ιστόγραμμα Bloom: ομαδοποίηση δεδομένων με βάση τη συχνότητα. Σκοπός μας η περιγραφή, μελέτη και εφαρμογές του ιστογράμματος bloom στην επεξεργασία και δρομολόγηση XML ερωτήσεων σε συστήματα ομότιμων κόμβων.
4 Διάρθρωση XML δεδομένα Ιστογράμματα Bloom Πειραματική μελέτη των Ιστογραμμάτων Bloom Χρήση Ιστογραμμάτων Bloom στη δρομολόγηση ερωτήσεων σε συστήματα p2p Ανακεφαλαίωση και Μελλοντική εργασία
5 Διάρθρωση XML δεδομένα Μορφή Ερωτήσεις – μονοπάτια Ιστογράμματα Bloom Πειραματική μελέτη Χρήση ιστογραμμάτων Bloom στη δρομολόγηση ερωτήσεων σε συστήματα p2p Ανακεφαλαίωση και Μελλοντική εργασία
6 XML δεδομένα Χρειάζεται κάποιος τρόπος περιγραφής της πληροφορίας ο οποίος να μπορεί να κατανοηθεί και να χρησιμοποιηθεί από όλους. H XML είναι μία περιγραφική γλώσσα. Χρησιμοποιεί ετικέτες για να περιγράψει την πληροφορία. Παράδειγμα: Fundamentals of Database Systems R. Elmasri S. B. Navathe Addison-Wesley 2000
7 Ερωτήσεις - μονοπάτια Η αναζήτηση πληροφορίας σε XML δεδομένα γίνεται συχνά μέσω ερωτήσεων - μονοπατιών. Πρόκειται για ερωτήσεις της μορφής /p 1 /p 2 /…/p n όπου p i ετικέτες XML. Παράδειγμα: Ερώτημα: /book/publisher Αποτέλεσμα: Addison-Wesley Συχνότητα: Αριθμός εμφάνισης μονοπατιού στα δεδομένα. Fundamentals of Database Systems R. Elmasri S. B. Navathe Addison-Wesley 2000
8 Διάρθρωση XML δεδομένα Ιστογράμματα Bloom Φίλτρα Bloom Περιγραφή δομής Εκτίμηση συχνότητας μονοπατιού Σφάλμα Κατασκευή Μέγεθος Πειραματική μελέτη Χρήση ιστογραμμάτων Bloom στη δρομολόγηση ερωτήσεων σε συστήματα p2p Ανακεφαλαίωση και Μελλοντική εργασία
9 Φίλτρα Bloom (1/2) Αναπαριστούν ένα σύνολο στοιχείων. Πίνακας bit μήκους m και k συναρτήσεις κατακερματισμού. Εισαγωγή στοιχείου p : Εφαρμόζουμε τις k συναρτήσεις κατακερματισμού στο p Τα bit στις θέσεις h i (p) παίρνουν την τιμή 1, 1 ≤ i ≤ k Το στοιχείο p ταιριάζει στο φίλτρο αν: Όταν εφαρμόσουμε τις k συναρτήσεις κατακερματισμού στο p, όλα τα bit στις θέσεις h i (p) έχουν την τιμή 1, 1 ≤ i ≤ k Ένα στοιχείο p που δεν ταιριάζει στο φίλτρο bloom δεν μπορεί να ανήκει στο αρχικό σύνολο στοιχείων. Ένα στοιχείο p μπορεί να ταιριάζει στο φίλτρο bloom αλλά να μην ανήκει στο σύνολο στοιχείων από το οποίο δημιουργήθηκε το φίλτρο.
10 Φίλτρα Bloom (2/2) Παράδειγμα: Έστω k = 4, m = 8 και τα μονοπάτια p, q, r με Αρχικά: Εισαγωγή p: Έλεγχος για q: Δεν ταιριάζει Δεν ανήκειΣωστό Εισαγωγή r: Έλεγχος για q: Ταιριάζει ΑνήκειΛάθος Πιθανότητα σφάλματος:Βέλτιστη: Συνάρτηση Μονοπάτι h1h1 h2h2 h3h3 h4h4 p1347 q2368 r
11 Ιστόγραμμα bloom (1/3) Δισδιάστατος πίνακας H της μορφής H(paths, v) όπου paths υποσύνολα μονοπατιών και v αντιπροσωπευτική τιμή για τις συχνότητες των μονοπατιών του υποσυνόλου. Κάθε υποσύνολο μονοπατιών αναφέρεται και ως «κάδος». Αν το μονοπάτι p ανήκει σε κάποιον κάδο του H θεωρούμε την αντίστοιχη τιμή v ως συχνότητα του p.
12 Ιστόγραμμα bloom (2/3) Πώς θα διαμοιραστούν τα μονοπάτια στους κάδους; Τα μονοπάτια ταξινομούνται κατά αύξουσα σειρά συχνότητας και στη συνέχεια χωρίζονται σε ομάδες έτσι ώστε μονοπάτια που ανήκουν στην ίδια ομάδα να έχουν παρόμοιες συχνότητες. Πώς θα αναπαρασταθούν οι ομάδες αυτές με αποδοτικό τρόπο; Κάθε ομάδα θα αναπαρασταθεί με ένα φίλτρο bloom έτσι ώστε να μπορούμε εύκολα να διαπιστώσουμε αν ένα μονοπάτι ανήκει ή όχι σε κάποια συγκεκριμένη ομάδα.
13 Ιστόγραμμα bloom (3/3) ΜονοπάτιΣυχνότητα /a10 /a/b10 /a/f/c99 /a/e101 /a/z999 /a/s1001 /a/i1499 /a/o1501 Φίλτρο bloomΣυχνότητα BF(/a, /a/b)10 BF(/a/f/c, /a/e)100 BF(/a/z, /a/s)1000 BF(/a/i, /a/o)1500
14 Εκτίμηση συχνότητας μονοπατιού Αλγόριθμος 1: QueryBloomHistogram(BH, p) 1: count = 0; k = 0; 2: for i = 1 to b do 3: if IsMember(p, BH.BF[i]) then 4: count += BH.count[i]; 5: k++; 6: end if 7: end for 8: if k > 0 then 9: return count/k; 10: else 11: return 0; 12: end if Θεωρούμε ως συχνότητα το μέσο όρο των συχνοτήτων των κάδων στους οποίους ταιριάζει το μονοπάτι p.
15 Σφάλμα εκτίμησης συχνότητας (1/2) Για τη μέτρηση της απόδοσης χρησιμοποιούμε το απόλυτο σφάλμα. Το σφάλμα προέρχεται από δύο παράγοντες: Το μονοπάτι p ταιριάζει σε πολλά φίλτρα bloom Η συχνότητα που επιστρέφεται είναι η μέση συχνότητα των αντίστοιχων κάδων και όχι η πραγματική Διαχωρισμός ερωτήσεων σε θετικές (πραγματική συχνότητα διάφορη του μηδενός) και αρνητικές. Τις αρνητικές ερωτήσεις επηρεάζει μόνο ο πρώτος παράγοντας.
16 Σφάλμα εκτίμησης συχνότητας (2/2) Αν η ερώτηση ταιριάζει σε k κάδους, τότε: Και επειδή μπορεί να ταιριάζει σε οποιουσδήποτε i από τους b κάδους, συνολικά έχουμε: (όπου ε το σφάλμα των φίλτρων bloom) Για τις θετικές ερωτήσεις έχουμε αντίστοιχα:
17 Βέλτιστο ιστόγραμμα bloom (1/4) Για την κατασκευή του ιστογράμματος πρέπει να καθοριστούν: Τα όρια των κάδων Η τιμή συχνότητας που ανατίθεται σε κάθε κάδο Η τιμή της συχνότητας σε κάθε κάδο είναι ίση με τη μέση τιμή των συχνοτήτων των μονοπατιών του κάδου. Εάν θέλουμε b κάδους στο ιστόγραμμά μας, πρέπει να υπολογίσουμε πως θα μοιράσουμε τα μονοπάτια σε αυτούς. Θεωρούμε τα μονοπάτια ταξινομημένα κατά αύξουσα σειρά συχνότητας.
18 Βέλτιστο ιστόγραμμα bloom (2/4) Ορίζουμε ως OPT[x, b] το βέλτιστο σφάλμα όταν μοιράζουμε τα πρώτα x μονοπάτια σε b κάδους. Επίσης ορίζουμε ως f(x, y) το σφάλμα ενός μόνου κάδου που περιέχει να μονοπάτια από το x-οστό ως το y-οστό. Παρατηρούμε πως:
19 Βέλτιστο ιστόγραμμα bloom (3/4) ΜονοπάτιΣυχνότητα /a10 /a/b10 /a/f/c99 /a/e101 /a/z999 /a/s1001 /a/i1499 /a/o1501 Αν PSUM ο αθροιστικός πίνακας συχνοτήτων τότε μπορεί να αποδειχθεί ότι: t ο αριθμός του μέσου μονοπατιού του κάδου PSUM
20 Βέλτιστο ιστόγραμμα bloom (4/4) Αλγόριθμος 2: BuildHistogram(x[], n, b) 1: PSUM[1] = x[1] 2: for i = 2 to n do 3: PSUM[i] = PSUM[i - 1] + x[i] 4: end for 5: for i = 1 to n do 6: OPT[i,1] = f(1,i) 7: end for 8: for k = 2 to b do 9: for j = 1 to n do 10: OPT[j,k] = +∞ 11: for i = k – 1 to j – 1 do 12: OPT[j,k] = min(OPT[j,k], OPT[i,k-1]+f(i+1,j)) 13: end for 14: end for 15: end for 16: return OPT[n,b]
21 Μέγεθος ιστογράμματος Bloom Τα ιστογράμματα bloom δεν έχουν μεγάλες απαιτήσεις σε χώρο. Αν χρησιμοποιήσουμε φίλτρα bloom μήκους m bits, b κάδους και το μέγεθος ενός ακέραιου αριθμού είναι α bits απαιτείται χώρος (σε bit) ίσος με: (m + α) ∙ b Αν χρησιμοποιήσουμε φίλτρα bloom μεταβλητού μεγέθους τότε απαιτείται χώρος ίσος με: (m 1 +…+m b ) + α∙b = (l∙n 1 +…+l∙n b ) + α∙b = l∙n + α∙b
22 Διάρθρωση XML δεδομένα Ιστογράμματα Bloom Πειραματική μελέτη Σύνολα δεδομένων Πειράματα Χρήση ιστογραμμάτων Bloom στη δρομολόγηση ερωτήσεων σε συστήματα p2p Ανακεφαλαίωση και Μελλοντική εργασία
23 Υλοποίηση Κατασκευή ιστογράμματος bloom: Για ένα σύνολο XML δεδομένων Parsing δεδομένων και απομόνωση όλων των μονοπατιών Μέτρηση αριθμού εμφανίσεων κάθε μονοπατιού Ταξινόμηση μονοπατιών κατά αύξουσα σειρά συχνότητας Μετά την εφαρμογή του Αλγορίθμου 2 στην ταξινομημένη λίστα των μονοπατιών, το ιστόγραμμα bloom είναι πλέον έτοιμο.
24 Σύνολα δεδομένων Σύνολα δεδομένων που χρησιμοποιήσαμε: «SIGMOD record»(επαναληπτική δομή) «SwissProt»(μεγάλες διαφορές συχνοτήτων) «XMark»(μεγάλος αριθμός μονοπατιών) Χαρακτηριστικό Σύνολο Δεδομένων Μέγεθος # μονοπατιών Μέγιστη διαφορά συχνοτήτων Ελάχιστη συχνότητα Μέγιστη συχνότητα SIGMOD record483 KB SwissProt ΚB XMark75501 KB
25 Σφάλμα φίλτρων bloom Ως σφάλμα θεωρούμε το μέσο απόλυτο σφάλμα Καθώς το σφάλμα των φίλτρων bloom ελαττώνεται (μέσω της αύξησης του μήκους τους), το σφάλμα του ιστογράμματος bloom μειώνεται. Το ίδιο συμβαίνει και για θετικές και για αρνητικές ερωτήσεις. SIGMOD record/5 κάδοι SwissProt/70 κάδοι XMark/250 κάδοι
26 Καθώς ο αριθμός των κάδων αυξάνεται, το σφάλμα που οφείλεται σε αυτούς μειώνεται. Η μείωση σταματά όταν ο αριθμός αυτός γίνεται μεγαλύτερος από το πλήθος διακριτών συχνοτήτων του αρχικού συνόλου δεδομένων. Αριθμός κάδων SwissProt XMark
27 Συνολικό σφάλμα (1/2) Το σφάλμα μειώνεται όταν Αυξάνουμε το μήκος των φίλτρων bloom Αυξάνουμε τον αριθμό των κάδων Όταν διαθέτουμε περιορισμένο χώρο πρέπει να επιλέξουμε τι θα αυξήσουμε περισσότερο. Περισσότεροι κάδοι → μεγαλύτερη ακρίβεια αλλά και Περισσότερα φίλτρα bloom → αύξηση σφάλματος
28 Συνολικό σφάλμα (2/2) Στην πράξη εξαρτάται από το σύνολο δεδομένων αν και γενικά το μεγαλύτερο ποσοστό του σφάλματος οφείλεται στα φίλτρα bloom. SwissProt XMark Για κάθε σύνολο δεδομένων υπάρχει ένας βέλτιστος συνδυασμός, συνήθως κοντά στο σημείο που μηδενίζεται το σφάλμα των κάδων.
29 Διάρθρωση XML δεδομένα Ιστογράμματα Bloom Πειραματική μελέτη Χρήση ιστογραμμάτων Bloom στη δρομολόγηση ερωτήσεων σε συστήματα p2p Ευρετήρια δρομολόγησης Συγχώνευση ιστογραμμάτων Bloom Ομαδοποίηση κόμβων Ομοιότητα ιστογραμμάτων Bloom Ανακεφαλαίωση και Μελλοντική εργασία
30 Ευρετήρια δρομολόγησης (1/2) Σύμφωνα με αυτή τη μέθοδο δρομολόγησης κάθε κόμβος ενός συστήματος p2p διαθέτει δύο ευρετήρια: Ένα τοπικό ευρετήριο μέσω του οποίου διαθέτει μία περίληψη των τοπικών του δεδομένων. Και ένα ευρετήριο δρομολόγησης το οποίο περιέχει μία περίληψη των δεδομένων που είναι προσβάσιμα μέσω των γειτόνων του. Μπορούμε να χρησιμοποιήσουμε (συγχωνευμένα) ιστογράμματα bloom ως ευρετήρια δρομολόγησης. Δημιουργία και συντήρηση με ανταλλαγές ιστογραμμάτων και συγχωνεύεις στους διάφορους κόμβους του συστήματος.
31 Ευρετήρια δρομολόγησης (2/2) Παράδειγμα: Συγχωνευμένο ιστόγραμμα bloom [Α] Φίλτρο bloomΣυχνότηταΓείτονες BF(/a, /a/b)50B, E BF(/a/f/c, /a/e)400B, G BF(/a/z, /a/s)900B, E, G BF(/a/i, /a/o)3000B Τοπικό ιστόγραμμα bloom [Α] Φίλτρο bloomΣυχνότητα BF(/a, /a/b)10 BF(/a/f/c, /a/e)100 BF(/c/d)1000 BF(/a/i, /a/o)1500 Ερώτηση στον Α: «/a/b» Έλεγχος τοπικού ευρετηρίου: επιστροφή 10 αποτελεσμάτων Έλεγχος ευρετηρίου δρομολόγησης: προώθηση ερώτησης στους B και E
32 Συγχώνευση ιστογραμμάτων bloom Κίνητρο: Χρήση σε συστήματα p2p. Άντληση πληροφορίας από ένα ιστόγραμμα αντί από πολλά. Έστω δύο ιστογράμματα bloom ΒΗ 1 (paths 1,v 1 ), ΒΗ 2 (paths 2,v 2 ) για τα σύνολα δεδομένων D 1 και D 2 αντίστοιχα και έστω ότι τα ιστογράμματα αυτά καταλαμβάνουν χώρο s 1 και s 2 αντίστοιχα (και επιπλέον m 1 = m 2 ). Στόχος μας είναι η κατασκευή ενός νέου ιστογράμματος ΒΗ (paths,v) το οποίο θα αντιπροσωπεύει το σύνολο δεδομένων D 1 D2 καταλαμβάνοντας χώρο όχι μεγαλύτερο από s max = max{s 1, s 2 }.
33 Συγχώνευση με βάση τις τιμές των κάδων Αλγόριθμος 3: MergeBloomHistograms_buckets(BH1, BH2) 1: int min, target 2: for i = 1 to b2 do 3: min = +∞, target = 0 4: for j = 1 to b1 do 5: if BH2.value[i] – BH1.value[j] < min then 6: min = BH2.value[i] – BH1.value[j]; 7: target = j; 8: end if 9: end for 10: MergeBuckets(i, target); 11: end for Συγχώνευση κάδων που έχουν παρόμοιες αντιπροσωπευτικές τιμές συχνότητας.
34 Συγχώνευση με βάση τα φίλτρα bloom Αλγόριθμος 4: MergeBloomHistograms_filters(BH1, BH2) 1: int max, target 2: for i = 1 to b2 do 3: max = -∞, target = 0 4: for j = 1 to b1 do 5: if similarity(BH2.BF[i], BH1.BF[j]) > max then 6: max = similarity(BH2.BF[i], BH1.BF[j]); 7: target = j; 8: end if 9: end for 10: MergeBuckets(i, target); 11: end for Συγχώνευση κάδων που έχουν παρόμοια φίλτρα bloom.
35 Βελτιώσεις Καλύτερη προσέγγιση τιμών κάδων Σε κάθε κάδο έχουμε και τον αριθμό k των μονοπατιών που έχουν εισαχθεί σε αυτόν. Η τιμή v του νέου κάδου θα είναι: Άθροισμα τιμών κάδων Αν τα φίλτρα bloom των κάδων που συγχωνεύονται είναι ίδια, η τιμή του νέου κάδου είναι ίση με το άθροισμα των δύο αρχικών. Επαναληπτική κατασκευή ιστογράμματος
36 Απόδοση συγχωνευμένων ιστογραμμάτων SwissProt XMark Η συγχώνευση με βάση τις τιμές των κάδων φαίνεται πιο αποδοτική όσο το σφάλμα των φίλτρων bloom του τελικού ιστογράμματος δεν είναι πολύ μεγάλο. Οι βελτιώσεις βελτιώνουν την απόδοση περίπου κατά 10% (με μικρό επιπλέον κόστος - μία επιπλέον «στήλη» στα ιστογράμματα).
37 Ομαδοποίηση κόμβων Η ομαδοποίηση με βάση το περιεχόμενο στοχεύει στον περιορισμό των κόμβων που συμμετέχουν στη δρομολόγηση μιας ερώτησης (λιγότερες ανταλλαγές μηνυμάτων). Ιεραρχική οργάνωση: Οι νέοι κόμβοι συνδέονται στο υποδένδρο στο οποίο οι κόμβοι διαθέτουν παρόμοια ευρετήρια με αυτούς.
38 Ομοιότητα ιστογραμμάτων bloom (1/4) Τι σημαίνει «παρόμοια» όμως στην περίπτωση των ιστογραμμάτων bloom; Διαισθητικά: Παρόμοια φίλτρα και συχνότητες. Λόγω του τρόπου κατασκευής όμως τέτοιες συγκρίσεις δεν είναι εύκολες. Δεν μπορούμε να εξάγουμε τα αρχικά δεδομένα. Δύο ιστογράμματα από το ίδιο σύνολο δεδομένων με άλλα όμως χαρακτηριστικά μπορεί να διαφέρουν αισθητά. Θα βασιστούμε στην ομοιότητα των φίλτρων bloom των ιστογραμμάτων. Εντοπισμός παρόμοιων φίλτρων στα δύο ιστογράμματα.
39 Ομοιότητα ιστογραμμάτων bloom (2/4) 1 ος τρόπος: Για κάθε κάδο του ΒΗ 1 βρίσκουμε τον κάδο του ΒΗ 2 που απέχει το λιγότερο από αυτόν. Πολυπλοκότητα Ο(b 2 ). Απλός στην υλοποίηση Εξυπηρετεί την ομαδοποίηση Μη συμμετρικές αποστάσεις Αλγόριθμος 5: BloomHistogram_dist_1(BH1, BH2) 1: total_dist = 0; 2: for i = 1 to b2 do 3: BH2.used[i] = false; 4: end for 5: for i = 1 to b1 do 6: dist = +∞ 7: for j = 1 to b2 do 8: if dist(BH1.BF[i], BH2.BF[j]) < dist and BH2.used[j] = false then 9: dist = dist(BH1.BF[i], BH2.BF[j]); 10: BH2.used[j] = true; 11: end if 12: end for 13: total_dist = total_dist + dist; 14: end for 15: return total_dist;
40 Ομοιότητα ιστογραμμάτων bloom (3/4) 2 ος τρόπος: Βρίσκουμε επαναληπτικά το ζεύγος που απέχει τη μικρότερη απόσταση. Πολυπλοκότητα Ο(b 3 ). Συμμετρικές αποστάσεις Καλύτερος ορισμός Αυξημένη πολυπλοκότητα Δυναμικός προγραμματισμός; Απαιτείται ίδιο πλήθος κάδων Αλγόριθμος 6: BloomHistogram_dist_2(BH1, BH2) 1: total_dist = 0; 2: for i = 1 to b do 3: BH1.used[i] = false; 4: BH2.used[i] = false; 5: end for 6: for i = 1 to b do 7: dist = +∞ 8: for j = 1 to b do 9: for k = 1 to b do 10: if dist(BH1.BF[j], BH2.BF[k]) < dist 11: and BH1.used[j] = false 12: and BH2.used[k] = false then 13: dist = dist(BH1.BF[j], BH2.BF[k]); 14: BH1.used[j] = true; 15: BH2.used[k] = true; 16: end if 17: end for 18: end for 19: total_dist = total_dist + dist; 20: end for 21: return total_dist;
41 Ομοιότητα ιστογραμμάτων bloom (4/4) 3 ος τρόπος: Σύγκριση των φίλτρων του ΒΗ 1 με το φίλτρο BF που δημιουργείται από το δυαδικό OR των φίλτρων του BH 2. Πολυπλοκότητα Ο(b). Χαμηλή πολυπλοκότητα Μη συμμετρικές αποστάσεις Μη αποδοτικός όταν το BF περιέχει πολλά bit με την τιμή 1 Αλγόριθμος 7: BloomHistogram_dist_3(BH1, BH2) 1: total_dist = 0; 2: BF = 0; 3: for i = 1 to b2 do 4: BF = BF BOR BH2.BF[i]; 5: end for 6: for i = 1 to b1 do 7: total_dist = total_dist + dist(BH1.BF[i], BF); 8: end for 9: return total_dist;
42 Διάρθρωση XML δεδομένα Ιστογράμματα Bloom Πειραματική μελέτη Χρήση ιστογραμμάτων Bloom στη δρομολόγηση ερωτήσεων σε συστήματα p2p Ανακεφαλαίωση και Μελλοντική εργασία
43 Ανακεφαλαίωση Σε αυτήν την εργασία: Μελετήσαμε τη μορφή και τις ιδιότητες του Ιστογράμματος Bloom Μελετήσαμε το σφάλμα του πειραματικά Σφάλμα φίλτρων bloom Αριθμός κάδων Προτείναμε και μελετήσαμε πειραματικά μεθόδους συγχώνευσης Ιστογραμμάτων Bloom Προτείναμε τεχνικές για την εύρεση ομοιότητας μεταξύ των Ιστογραμμάτων Bloom
44 Μελλοντική εργασία Τα Ιστογράμματα Bloom προτάθηκαν για τον υπολογισμό της συχνότητας μονοπατιών XML δεδομένων. Όπως φαίνεται μπορούν να βρουν και άλλες εφαρμογές. Κάποια θέματα παρουσιάζουν ενδιαφέρον και αξίζει να μελετηθούν περισσότερο: Η απόδοση των αλγορίθμων συγχώνευσης. Εύρεση κανόνων για το πότε είναι πιο αποτελεσματικός ο κάθε αλγόριθμος. Ορισμός της απόστασης (ομοιότητας) μεταξύ δύο Ιστογραμμάτων Bloom. Ένας καλός ορισμός που να λαμβάνει υπόψη και τις συχνότητες θα μπορούσε να βρει εφαρμογή και πέρα από την ομαδοποίηση κόμβων με βάση το περιεχόμενο (ομοιότητα συνόλων δεδομένων κτλ). Σύγκριση Ιστογραμμάτων Bloom με Πολυεπίπεδα Φίλτρα Bloom (Multi-Level Bloom Filters).