MỤC LỤC
Bài toán “Chia sẻ danh sách đen trong lĩnh vực cho vay trực tuyến” là bài toán xây dựng cơ chế chia sẻ dữ liệu và kiến trúc giữa những công ty tài chính công nghệ là đối tác của nhau mà không làm lộ thông tin của khách hàng dù là cho chính đối tác đó bằng cách sử dụng ý tưởng của cấu trúc dữ liệu Bloom Filter. − Chương 2 CƠ SỞ KIẾN THỨC: là các cơ sở lý thuyết mà học viên sử dụng trong luận văn này, bao gồm các lý thuyết cơ bản về Bloom Filter, các thuộc tính của Bloom Filter và biến thể cải tiến khác của Bloom Filter là Counting Bloom Filter hay Mergeable Counting Bloom Filter, các hàm băm được sử dụng trong Bloom Filter, lý thuyết về Lamport Clock và Vector Clock.
Rừ ràng, tỷ lệ dương tớnh giả sẽ giảm khi độ dài của mảng m tăng, và giảm khi số lượng phần tử n được thêm vào Bloom Filter tăng. Để tìm ra số hàm băm tối ưu, ta có thể lấy đạo hàm công thức 2.3 theo k, cho vế bên trái bằng 0 và giải phương trình. Khi kiểm tra một phần tử bất kỳ e’ có nằm trong Counting Bloom Filter không, ta cũng băm đối tượng thành bằng k hàm băm.
Dương Tính Giả (False Positive), Số Hàm Băm Tối Ưu (Optimal K), Kích Thước Của Bộ Đếm (Counter Size) và Độ Đếm Tràn (Counter Overflow) của Counting Bloom Filter. Cho là chiều dài của mảng bộ đếm, là tổng số phần tử đã được mã hả trong Counting Bloom Filter tập hợp và là số hàm băm. Nếu giá trị bộ đếm đang là và ta mã hoá một phần tử mới, bộ đếm sẽ tăng lên 1, tràn bộ đếm (counter overflow) sẽ xảy ra.
; là chỉ mục mới được chọn từ ô ứng viên ở trên 1: if ô thứ i của mảng được bật then. Giá trị trả về tương ứng là kết trả về của hàm băm cũng là chỉ mục trong mảng bit. - Lặp lại quá trình trên k lần cho k hàm băm tới khi tất cả bit trả về từ hàm băm được bật.
Chúng ta sử dụng thuật toán virtual-Cuckoo để tìm ra ô cuối cùng và tắt bit đó thành 0.
Quá trình hợp Hàm băm trong Bloom Filter chịu trách nhiệm chuyển đổi các phần tử của tập hợp vào các chỉ mục trong mảng bit của Bloom Filter. Mục tiêu của hàm băm là phân phối các phần tử trong tập hợp đều nhau trên mảng bit, giúp tăng tính hiệu quả của Bloom Filter và giảm tỷ lệ dương tính giả. Điều này đảm bảo rằng sự phân tán của các phần tử trong tập hợp không tạo ra sự đụng độ lớn, từ đó giảm thiểu tỷ lệ dương tính giả.
Thứ ba các hàm băm dùng cho Bloom Filter nên độc lập với nhau để đảm bảo tỷ lệ dương tính giả thấp, bảo mật cho Bloom Filter để tránh cho kẻ tấn công có thể suy luận, tận dụng cái mối quan hệ để tìm ra các hàm băm còn lại và đảm bảo về hiệu suất khi chúng ta có thể tính toán băm đồng thời và độc lập. MurmurHash có thể được sử dụng cho nhiều loại dữ liệu khác nhau, bao gồm chuỗi ký tự, số nguyên, dữ liệu nhị phân và hơn nữa. MurmurHash cũng có tính chất tốt về khả năng trộn (avalanche effect), tức là thay đổi nhỏ trong đầu vào sẽ dẫn đến thay đổi lớn trong giá trị băm đầu ra.
Để Lamport clock là một cơ chế để xác định thứ tự của cá sự kiện trong một hệ thống phân tán khi không có một đồng hồ chung (global clock) hay một thời gian tham chiếu tập trung (centralized time reference). Ý tưởng của Lamport clock là mỗi sự kiện trong hệ thống đều được gán cho một đồng hồ logical (logical clock) để cho phép xác định thứ tự của sự kiện. - Mỗi tiến trình, nút trong hệ thống phân tán sẽ duy trì một đồng hồ logical riêng với giá trị khởi tạo.
- Khi tiến trình gửi một thông điệp (message) tới một tiến trình khác, ở tiến trình gửi đồng hồ logical của mình lên một, đồng thời hệ thống cũng gửi đồng hồ logical của nó tới tiến trình còn lại. - Ở tiến trình nhận, đồng hồ logic của tiến trình nhận sẽ bằng số lớn nhất của đồng hồ logic của tiến trình gửi và tiến trình nhận, và tăng thêm 1. Lamport clock được sử dụng nhiều trong các cơ sở dữ liệu phân tán (distributed database), và cái hệ thống gửi thông điệp (message passing) hay trong kiến trúc hướng sự kiện (Event driven architecture).
- Mỗi sự kiện xảy ra ở tiến trình i, ta tăng giá trị tại chỉ mục i trong vector. - Nếu giá trị của một phần tử trong vector ứng với sự kiện A nhỏ hơn phần tử tương ứng trong vector ứng với sự kiện B, thì sự kiện A đã xảy ra trước sự kiện B. - Nếu giá trị của một phần tử trong vector ứng với sự kiện A lớn hơn phần tử tương ứng trong vector ứng với sự kiện B, thì sự kiện B đã xảy ra trước sự kiện A.
- Nếu mọi giá trị trong vector của sự kiện A bằng giá trị tương ưng của vector sự kiện B tương đương với sự kiện A xảy ra đồng thời, hoặc không xác định so với sự kiện B. Trong ví dụ trên hình 2.2, chúng ta có 3 tiến trình trong hệ thống phân tán. Mỗi tiến trình sẽ lưu trữ một vector có độ dài là 3, và khởi tạo giá trị là 0.
Bắt đầu từ công trình nghiên cứu về cấu trúc dữ liệu gọn nhẹ và hiệu quả của tác giả Burton Howard Bloom vào năm 1970 [1] là Bloom Filter, đã có được rất nhiều nghiên cứu để cải tiến và ứng dụng nó ra đời. Bài báo đã liệt kê khoảng 20 biến thể khác của Bloom Filter và ứng dụng của chúng trong hệ thống phân tán như caching, hệ thống ngang hàng, định tuyến và chuyển tiếp (routing and forwarding) và tổng hợp dữ liệu đo đạc (measurement data summarization). Zegura, đã đề xuất một giao thức truy vấn định tuyến (query routing protocol), cho phép tiêu thụ ít băng thông bằng cách duy trì một bảng định tuyến xác suất (probabilistic routing table) ở mỗi nút (node).
Để đáp ứng nhu cầu dữ liệu càng trở lên lớn trong môi trường Internet, công trình dữ liệu "Scalable Bloom Filters" của Almeida và các cộng sự [8] tập trung vào việc xây dựng Bloom Filter có khả năng mở rộng để đáp ứng nhu cầu xử lý dữ liệu lớn trong các hệ thống phân tán. Mani Chandy và cũng chính Leslie Lamport cùng giới thiệu công trình “Distributed Snapshots: Determining Global States of a Distributed System” [19] để xác định được trạng thái của chung của một hệ thống phân tán bằng cách qua bản lưu phân tán (distributed snapshots) của hệ thống mà không ảnh hưởng tới tác vụ chính của hệ thống. Công trình này đã tạo ra một khung việc để xác định và so sánh sự xảy ra đồng thời của các sự kiện trong hệ thống phân tán, mở ra cánh cửa cho việc xây dựng các thuật toán đồng bộ và phân tán trong các môi trường phức tạp.
BFS sẽ quản lý toàn bộ thông tin danh sách đen đã được mã hoá dưới cấu trúc dữ liệu Mergeable Counting Bloom Filter (mergeCBF) của tất cả các công ty cùng thời gian logical của hệ thống. Nếu dữ liệu các công ty đối tác đã sẵn ở thời gian logical mới nhất, thì BFS sẽ gửi lại một thông điệp bao gồm thời gian logical và danh sách đen tổng hợp công ty đối tác của công ty gửi thông điệp vào hàng đợi của BFC. Ngoài ra, BFC hỗ trợ một số giao diện giao diện lập trình ứng dụng (Application Programming Interfaces hay api) để người dùng (có thể nhà phát triển hoặc quản trị viên BFC, hay một hệ thống khác) có thể tương tác hoặc tích hợp với.
Chúng ta phải bảo mật hàm băm bằng cách chia sẻ hàm băm qua một kênh khác như email, ftp…Hàm băm cũng cần cập nhật thường xuyên và chia sẻ lại cho các thành viên cùng sử dụng trong hệ thống. BFC có mở một số kết nối (apis) để tích hợp với hệ thống nội tại của từng công ty, vì vậy chúng ta có thể áp dụng phương pháp bảo mật cho BFC tương tự cho message broker: bật Transport Layer Security (TLS/SSL), xác thực/ủy quyền, sử dụng mạng riêng ảo. Giải pháp cho vấn đề này, ở BFS, chúng ta có thể làm một tiến trình chạy định kỳ (cron job) chạy sau một thời gian để quét xác định những công ty chưa gửi, tiến hành xử lý điểm tắc nghẽn, là lấy danh sách đen cũ lần gần nhất của những công ty bị tắc nghẽn, hợp lại với những đối tác gửi lại cho những đối tác.
Trong luận văn này, học viên sẽ lần lượt khảo sát về dung lượng lưu trữ và thời gian kiểm tra số điện thoại của Mergeable Counting Bloom Filter với nhưng phương pháp lưu danh sách đen vào cơ sở dữ liệu. Với mergeCBF, tác giả sẽ sử dụng kết quả ở chương 4.1 để cấu hình tham số của mergeCBF như độ dài mảng bit, tổng số mảng bit sử dụng, số hàm băm tối ưu ứng với số lượng phần tử danh sách đen nhất định và tỷ lệ dương tính giả là 0.001 Kết quả sẽ được thể hiện trong bảng sau.