1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau

68 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Tác giả Ngụ Thành Được
Người hướng dẫn PGS.TS. Thoại Nam
Trường học Đại học Quốc gia Tp. HCM
Chuyên ngành Khoa học máy tính
Thể loại Luận văn thạc sĩ
Năm xuất bản 2013
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 68
Dung lượng 3,37 MB

Cấu trúc

  • Chương I: GIỚI THIỆU (14)
    • 1.1 Tính cấp thiết của đề tài (14)
    • 1.2 Phát biểu vấn đề (16)
    • 1.3 Tóm tắt các giải pháp và các kết quả đạt được của đề tài (17)
    • 1.4 Cấu trúc luận văn (18)
  • Chương II: KIẾN THỨC NỀN TẢNG (19)
    • 2.1 Giải thuật hash (19)
      • 2.1.1 Ứng dụng (19)
      • 2.1.2 Skein hash (20)
    • 2.2 AVL Tree (21)
    • 2.3 Các nghiên cứu liên quan (24)
      • 2.3.1 Haystack của facebook (24)
      • 2.3.2 Picasa – Google (31)
      • 2.3.3 Facebook Photo Appraiser OR Search by Image for Google (31)
    • 2.4 Tốc độ truy xuất ổ đĩa (32)
  • Chương III: BÀI TOÁN VÀ GIẢI PHÁP (34)
    • 3.1 Bài toán tìm kiếm hình ảnh (34)
    • 3.2 Bài toán biến đổi ảnh thành giá trị (35)
    • 3.3 Bài toán tổ chức dữ liệu (36)
  • Chương IV: HIỆN THỰC HỆ THỐNG (38)
    • 4.1 Xây dựng hàm hash (38)
    • 4.2 Hiện thực bài toàn tổ chức dữ liệu (41)
      • 4.2.1 Main Tree (42)
      • 4.2.2 Child Tree (46)
      • 4.2.3 Insert tree (46)
      • 4.2.4 Tìm kiếm dữ liệu (50)
      • 4.2.5 Tìm kiếm trên cây (50)
      • 4.2.6 Thêm phần tử vào cây AVL (53)
      • 4.2.7 Hủy một phần tử trên cây (54)
  • Chương V: ĐÁNH GIÁ (58)
    • 5.1 Đánh giá tốc độ hàm hash (58)
    • 5.2 Đánh giá kết quả tìm kiếm (60)
    • 5.3 Khả năng triển khai thực tế (61)
  • Chương VI: KẾT LUẬN (65)
    • 6.1 Các kết quả đạt được (65)
    • 6.2 Những hạn chế của đề tài (65)
    • 6.3 Hướng mở rộng và phát triển (65)
  • TÀI LIỆU THAM KHẢO (66)

Nội dung

Hiện nay có rất nhiều ứng dụng quản lý hình ảnh và loại trừ ảnh trùng nhau mà chúng ta có thể dễ dàng tìm kiếm trên internet như ứng dụng Similar Image Finder, Photosort,… Bên cạnh đó, c

GIỚI THIỆU

Tính cấp thiết của đề tài

Trong thời đại ngày nay, internet phát triển với quy mô rất rộng trên toàn thế giới và với tốc độ ngày càng nhanh Đi cùng với sự phát triển của internet là sự phát triển của các trang mạng xã hội chẳng hạn như là Facebook, Google plus, twitter và còn nhiều trang chia sẽ thông tin, hình ảnh khác Để thấy được sự bùng nổ của các mạng xã hội như thế nào thông qua một vài thông tin và những con số đã nghiên cứu, tìm hiểu được ở 2 mạng xã hội nổi tiếng:

Facebook [11]: ã Trung bỡnh 618 triệu người dựng hoạt động trờn Facebook mỗi ngày ã Trung bỡnh hàng thỏng cú 680 triệu người dựng hoạt động trờn Facebook thông qua thiết bị di động ã Cú hơn 250 triệu hỡnh ảnh được đăng tải và chia sẻ trờn Facebook mỗi ngày ã Trung bỡnh mỗi người dựng Facebook sử dụng mạng xó hội này 700 phỳt mỗi tháng, có 130 người bạn và chia sẻ 90 nội dung khác nhau hàng tháng ã 23% người dựng Facebook thường xuyờn check tài khoản của mỡnh tối thiểu 5 lần/ngày ã 167 triệu người dựng ở Mỹ, chiếm đến hơn 50% dõn số của quốc gia này 70% số lượng người dùng còn lại của Facebook trải đều trên khắp toàn cầu ã Với 10,6 triệu người dựng tại Việt Nam là quốc gia đứng thứ 22 trong tổng số các quốc gia có lượng người dùng Facebook lớn nhất thế giới hiện nay

Google + [12]: ã 540 triệu thành viờn sử dụng ã 1,5 tỷ bức ảnh được đăng tải trờn mạng xó hội này mỗi tuần

Với lượng dữ liệu ngày càng bùng nổ như hiện nay, câu hỏi đặt ra là làm sao để quản lý những khối dữ liệu khổng lồ này Hiện nay đã có nhiều phương pháp quản lý dữ liệu tiên tiến để giải quyết bài toán này, giúp doanh nghiệp tận dụng tối đa tiềm năng của dữ liệu, từ đó đưa ra các quyết định sáng suốt và đạt được hiệu quả kinh doanh tốt hơn.

Một kỹ thuật loại trừ dữ liệu trùng nhau (data deduplication) là một kỹ thuật nén dữ liệu đặc biệt dùng để loại bỏ những bản sao của dữ liệu được lặp đi lặp lại Kỹ thuật này được sử dụng để cải thiện việc lưu trữ và cũng có thể được áp dụng cho việc làm giảm các byte cần phải di chuyển qua lại trên mạng Quá trình phân tích diễn ra tiếp tục trong khi những phần khác được so sánh với các bản sao lưu và bất cứ khi nào có một sự tìm thấy sự trùng lấp, các phần dư thừa này sẽ được thay thế bằng một tham khảo đến phần lưu trữ Với cùng một mẫu, thì việc trùng lại xảy ra hàng chục, hàng trăm, thậm chí hàng nghìn lần ( tần số trùng dữ liệu phụ thuộc vào kích thước vùng lưu trữ)

Vài lợi ích của việc loại trừ dữ liệu trùng nhau:

- Làm giảm số lượng lưu trữ cần thiết cho một tập các files

- Network data deduplication được dùng để giảm số lượng byte cần phải chuyển giữa các thiết bị đầu cuối, suy ra giảm được lượng băng thông cần thiết Chúng ta có thể bắt gặp rất nhiều trong tối ưu hóa mạng WAN

Máy chủ ảo tạo ra các tập tin hệ thống riêng biệt trên danh nghĩa cho mỗi máy ảo, nhưng chúng được hợp nhất thành một không gian lưu trữ duy nhất Điều này giúp tạo bản sao lưu hoặc sao chép môi trường dễ dàng hơn.

Bài toán loại trừ dữ liệu trùng nhau nêu trên là là rất cần thiết, ngoài data, byte ra thì ta còn có hình ảnh, nhạc, ứng dụng mà hiện nay facebook, picasa (google), itune (apple) cũng đang đi tìm lời giải tốt nhất cho mình Đề tài luận văn tập trung vào bài toán tìm kiếm dữ liệu trong tập dữ liệu lớn, từ đó cho ra kết quả ta mong muốn là đã tồn tại hay chưa Đây là một phần quan trọng đóng vai trò quyết định trong tốc độ và điểm mấu chốt chính của toàn bộ hệ thống

Phát biểu vấn đề

Hình 1:Cấu trúc chính của hệ thống

Hình 1 mô tả các thành phần chủ yếu của hệ thống quản lý ảnh và tìm ảnh trùng nhau Gói Full Scan image nhận hình ảnh từ mạng bên ngoài và chuyển cho module Hash Join Module này thực hiện chuyển định dạng ảnh sang định dạng text và giải mã dữ liệu thành key tương ứng cho hình ảnh đó Phần key này có đặc tính là hình ảnh khác nhau thì key được tạo ra cũng khác nhau và ngược lại Tất cả các key được tạo ra sau module này được chuyển giao qua module quản lý (Manage Key) Module này sẽ tổng hợp và quản lý tất cả các key, dựa vào các câu truy vấn tìm hình ảnh mà module này cho ra kết quả phù hợp

Vấn đề quan tâm của luận văn này là xây dựng module quản lý key (Manage Key) cho toàn bộ hệ thống Nguyên tắc cơ bản của module này là thực hiện các thuật toán so trùng và tìm kiếm key Do không gian và độ lớn của tập dữ liệu thực tế của chúng ta rất

16 lớn, cho nên lúc thiết kế và hiện thực ta phải quan tâm đến vấn đề tốc độ xử lý, độ chính xác, tính mềm dẻo và khả năng mở rộng.

Tóm tắt các giải pháp và các kết quả đạt được của đề tài

Đề tài đã thiết kế mô hình hệ thống quản lý tập dữ liệu ảnh cho phép kết nối với bất kỳ kho dữ liệu hình ảnh nào Với mô hình này, người dùng hoặc doanh nghiệp sở hữu khối lượng hình ảnh lớn như mạng xã hội, công ty game, công ty hình ảnh có thể dễ dàng truy vấn, loại trừ nhanh chóng các hình ảnh trùng lặp Ngoài ra, mô hình còn giúp các tổ chức, doanh nghiệp giảm bớt lưu trữ hình ảnh dư thừa, tiết kiệm tài nguyên và chi phí Do đề tài có quy mô lớn và phức tạp nên đã được chạy thử nghiệm một phần để đảm bảo tính khả thi và khả năng tìm kiếm nhanh.

Giải pháp lưu trữ khối dữ liệu khá lớn Thay vì hệ thống phải lưu trữ và tìm kiếm trên hàng petabytes hình ảnh thì hệ thống chỉ cần chuyển các hình ảnh này sang các key tương ứng với hình ảnh đó, và chỉ việc tìm kiếm và quản lý trên tập dữ liệu key này Tuy nhiên với tập dữ liệu key này nó vẫn còn khá lớn để có thể thực hiện một lần trên bộ nhớ chính của máy tính được, và các key được tao ra một cách ngẫu nhiên không liên tục nhau do đó sắp xếp các key sao cho việc tìm kiếm được thực hiện một cách tối ưu nhất có thể, bên cạnh đó vì khối lượng key chúng ta có được rất lớn, cho nên với hệ thống máy tính hiện nay chúng ta có được không thể đáp ứng được việc đưa toàn bộ khối dữ liệu này nạp vào bộ nhớ chính, do đó giải pháp phân hoạch tập dữ liệu này ra từng tập con nhỏ hơn để cho các hệ thống máy tính hiện nay có thể đáp ứng được

Giải pháp cho việc phân hoạch các key: Và dựa trên ý tưởng của hệ thống Haystack của facebook các dữ liệu của hình ảnh sẽ được gom nhóm thành những file có kích thước trung bình từ 100-200 megabytes.Những key có giá trị liên tiếp nhau sẽ được gom lại thành từng file và khi file này có độ lớn vượt quá mức giới hạn cho phép độ lớn

17 của từng file thì các key tiếp theo sẽ được lưu vào các file khác và cứ tiếp tục như thế cho đến khi nào toàn bộ khối dữ liệu ban đầu được phân hoạch ra từng tập dữ liệu con thì việc phân hoạch xem như hoàn thành Việc tổ chức và thiết kế mô hình gom các thông tin theo dạng file sẽ giúp cho việc tìm kiếm và lưu trữ trở nên hiệu quả hơn

Với giải pháp phân hoạch tập key ra từng phân hoạch nhỏ hơn giúp cho việc tìm kiếm tốt hơn, tuy nhiên để tìm một key trong một tập dữ liệu có độ lớn từ 100-200 megabytes cũng tốn khá nhiều thời gian và trong khi kết quả ta cần chỉ là vài kilobytes dữ liệu trong số đó Chính vì vậy đề tài này đưa ra nhầm mục đích: ã Làm sao xỏc định được key này thuộc phõn hoạch nào một cỏch nhanh nhất ã Làm sao tỡm được key này khi đó xỏc định được phõn hoạch đang cú khả năng chứa nó.

Cấu trúc luận văn

Phần tiếp theo của luận văn có cấu trúc như sau:

Chương 2: Trình bày các kiến thức nền tảng liên quan đến đề tài, bao gồm hệ giải thuật hash, giải thuật tìm kiếm và các kết quả nghiên cứu trước đây

Chương 3: Tổng quan về vấn đề xử lý nội dung, cách thức quản lý dữ liệu

Chương 4: Trình bày thiết kế kiến trúc của hệ thống

Chương 5: Đánh giá và kiểm nghiệm hệ thống, bao gồm luôn cả việc kiểm nghiệm độ chính xác của việc tạo key của hàm hash

Chương 6: Tổng kết các kết quả của luận văn và đề xuất hướng phát triển tiếp theo

KIẾN THỨC NỀN TẢNG

Giải thuật hash

Hàm băm (hash function) là giải thuật nhằm sinh ra các giá trị băm tương ứng với mỗi khối dữ liệu (có thể là một chuỗi kí tự, một đối tượng trong lập trình hướng đối tượng, v.v )

Giá trị băm đóng vai gần như một khóa để phân biệt các khối dữ liệu, tuy nhiên, người ta chấp hiện tượng trùng khóa hay còn gọi là đụng độ và cố gắng cải thiện giải thuật để giảm thiểu sự đụng độ đó Hàm băm thường được dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp (nhờ việc so sánh các giá trị băm nhanh hơn việc so sánh những khối dữ liệu có kích thước lớn)

Hình 2 : Hash funtion 2.1.1 Ứng dụng:

Các hàm băm được ứng dụng trong nhiều lĩnh vực, chúng thường được thiết kế phù hợp với từng ứng dụng Ví dụ, các hàm băm mật mã học giả thiết sự tồn tại của một đối phương - người có thể cố tình tìm các dữ liệu vào với cùng một giá trị băm Một hàm băm tốt là một phép biến đổi "một chiều", nghĩa là không có một phương pháp thực tiễn để tính toán được dữ liệu vào nào đó tương ứng với giá trị băm mong muốn, khi đó việc giả mạo sẽ rất khó khăn Một hàm một chiều mật mã học điển hình không có tính chất

19 hàm đơn ánh và tạo nên một hàm băm hiệu quả; một hàm trapdoor mật mã học điển hình là hàm đơn ánh và tạo nên một hàm ngẫu nhiên hiệu quả

Bảng băm, một ứng dụng quan trọng của các hàm băm, cho phép tra cứu nhanh một bản ghi dữ liệu nếu cho trước khóa của bản ghi đó

Các hàm băm còn được ứng dụng trong việc nhận dạng âm thanh, chẳng hạn như xác định xem một file MP3 có khớp với một file trong danh sách một loại các file khác hay không

Skein hash là một thành viên của các hàm hash với bộ 3 kích thước khác nhau : 256, 512, and 1024 bits Skein là một giải thuật mã hóa và là top 1 trong 5 giải thuật được đánh giá cao trong cuộc thi NIST diễn ra hàng năm[8] Thiết kế của nó kết hợp tốc độ, bảo mật, đơn giản, và rất nhiều tính linh hoạt trong một gói mô-đun giúp dễ dàng để phân tích

Bộ 3 kích thước của Skein hash [9]: ã Skein-512 : là giải thuật được đề nghị chớnh – với CPU 64bit , hash data tại

6.1 clocks mỗi byte Điều này có nghĩa là nếu chúng ta dùng máy với cấu hình 3.1 GHz x64 Core 2 Duo CPU thì Skein sẽ cho tốc độ 500MB/s mỗi core Gần như nhanh hơn 2 lần so với giải thuật SHA-512 và gấp 3 lần so với SHA-256

Hình 3: Tốc độ skein-hash ã Skein-1024 : Vỡ nú gấp 2 lần chiều dài của Skien 512, do đú khụng đảm bảo tính thân thiên với kích thướt này ã Skein-256: là loại với vựng nhớ thấp Nú cú thể được thực hiện sử dụng khoảng 100 byte bộ nhớ RAM

Sử dụng mô hình Skein-512 với mục đích chuyển đổi hình ảnh thành khóa đại diện, tác giả đã đánh giá và đề xuất triển khai mô hình này Tính toán xác suất đụng độ giữa các khóa cho thấy kết quả chấp nhận được, đảm bảo tính bảo mật và duy nhất của khóa đại diện cho từng hình ảnh.

AVL Tree

Một cây AVL(Adelson-Velskii and Landis' tree)[14] là một cây tìm kiếm nhị phân tự cân bằng, và là cấu truc dữ liệu đầu tiên có khả năng này Trong một cây AVL, tại mỗi nút chiều cao của hai cây con sai khác nhau không quá một Hiệu quả là các phép chèn (insertion), và xóa (deletion) luôn chỉ tốn thời gian O(log n) trong cả trường hợp trung bình và trường hợp xấu nhất Phép bổ sung và loại bỏ có thể cần đến việc tái cân bằng bằng một hoặc nhiều phép quay

Hình 4 : Ví dụ cây AVL

Hai cây trên được tạo ra từ cùng dãy khóa : 23; 76; 37; 85; 50; 40; 72; 35; 16; 27;

Các cây tìm kiếm nhị phân được xây dựng theo phương pháp chèn thông thường có thể có những biến dạng mất cân đối nghiêm trọng, chẳng hạn có thể hoàn toàn lệch phải (tất cả các nút trong chỉ có con phải) hoặc lệch trái (tất cả các nút trong chỉ có con trái) Trong các trường hợp này chi phí cho việc tìm kiếm trong trường hợp xấu nhất đạt tới n (n là số nút trên cây) Nếu có một cây tìm kiếm nhị phân cân bằng hoàn toàn, chi phí đó chỉ xấp xỉ log2n Tuy nhiên nhiều khi không thể xây dựng một cây tìm kiếm nhị phân như vậy cho mọi dãy khóa G.M Adelson-Velsky và E.M Landis đã đề xuất một tiêu chuẩn cân bằng (sau này gọi là cân bằng AVL)[14], giảm nhẹ hơn so với cân bằng hoàn toàn Cây T được gọi là cân bằng AVL nếu tại mỗi nút u của nó hệ số cân bằng có trị số tuyệt đối không vượt quá 1 Điều đó cũng có nghĩa là với mọi nút u của T, balance(u) chỉ nhận một trong ba giá trị -1, 0, 1 Khi đó cây T cũng được gọi là cây AVL Nếu cây con gốc tại đỉnh u là cân bằng AVL, ta cũng gọi đỉnh u là cân bằng AVL Như vậy các lá là cân bằng AVL, cây chỉ gồm một nút gốc là cây AVL, cây chỉ gồm 2 nút là cây AVL Cây gồm 3 nút có thể cân bằng AVL, cũng có thể không

22 Khi tính cân bằng AVL tại u bị phá vỡ, cần một hoặc hai phép quay để tái cân bằng AVL cây con gốc u và biến đổi cây T trở thành cân bằng AVL

Trường hợp 2 (LR): Trước hết thực hiện phép quay trái tại u.left để đưa về TH1

(LL) sau đó thực hiện phép quay phải tại u

Trường hợp 3 (RR): Thực hiện phép quay trái tại u

Trường hợp 4 (RL): Trước hết thực hiện phép quay phải tại u.right để đưa về TH3 (RR) sau đó thực hiện phép quay trái tại u.

Các nghiên cứu liên quan

Facebook đã phát triển Haystack – một hệ thống quản lý các tập tin hình ảnh trung gian để cải tiến sự truy vấn Haystack quản lý và lưu trữ các hình ảnh trong vùng đệm và từ đây chịu trách nhiệm trả lời các truy vấn hình ảnh

24 Haystack là hệ thống lưu trữ và quản lý ảnh tốc độ cao của Facebook (nói một cách chính xác là hệ thống lưu trữ đối tượng, đối tượng không nhất thiết phải là ảnh)

Facebook lưu trữ khổng lồ hơn 80 tỷ bức ảnh, với hơn 1,2 triệu bức ảnh cần xử lý mỗi giây Hệ thống quản lý Haystack của Facebook giúp xử lý và tăng tốc độ xử lý dữ liệu, giảm thiểu thao tác trên đĩa bằng cách tải trước dữ liệu và tìm kiếm trực tiếp trên bộ nhớ chính.

Kiến trúc hoạt động của facebook[17]:

Với kiến trúc này, facebook đang quản lý với 3 tác vụ chính: Haystack Directory, Haystack Cache và Haystack Store

Haystack Store : là thành phần lưu trữ liên tục cho các hình ảnh và là thành phần duy nhất quản lý các file metadata của hình ảnh Chúng được tổ chức thành các physical

25 volumes Một ví dụ đó là: nếu chúng ta có 10TB cần lưu trữ vào 100 physical volumes do đó mỗi physical volumes chỉ chứa 100GB Ngoài ra các Physical Volumes ở những máy Store khác nhau được nhóm lại thành các Logical Volumes Khi một hình ảnh được lưu vào một Logical Volume Bức hình đó sẽ được lưu vào trong tất cả các Physical Volume liên quan trong Logical Volume đó Điều này giúp cho việc tránh bị mất mát dữ liệu khi có sự cố về ổ cứng của một máy Store hoặc gặp bug do disk controller Việc mapping giữa logical và physical data được quản lý bởi các Haystac Directory, module này cho chúng ta biết được hình ảnh nào đang ở đâu và logical volumes nào đang còn trống Hay stack Cache hay CDN, chứa toàn bộ những request về những hình ảnh phổ biến nhất, nếu request này thất bại, CDN cần phải được làm mới lại nội dung

Khi người dùng truy cập một trang web server, Directory xây dựng một URL cho mỗi bức ảnh URL có chứa một số thông tin, mỗi phần tương ứng với trình tự các bước từ khi liên hệ trình duyệt của người dùng CDN (hoặc Cache) để cuối cùng lấy một bức ảnh từ một máy tính trong store Một URL điển hình mà chỉ đạo các trình duyệt để CDN trông giống như sau: http://⟨CDN⟩/⟨Cache⟩/⟨Machine id⟩/⟨Logical volume, Photo⟩

Phần đầu của URL xác định từ đó CDN yêu cầu bức ảnh CDN có thể tra cứu các bức ảnh trong nội bộ chỉ sử dụng các phần cuối của URL: logical volume và photo id

Nếu không xác định được vị trí CDN của ảnh dựa trên CDN từ URL và địa chỉ liên lạc cache, cache sẽ thực hiện một tra cứu tương tự để tìm ảnh và khi không tìm thấy, sẽ loại bỏ thông tin CDN từ URL và yêu cầu ảnh từ máy chủ gốc Yêu cầu ảnh này sẽ được chuyển trực tiếp đến cache với một quy trình tương tự, ngoại trừ URL không có thông tin CDN cụ thể.

Kiến trúc trên mô tả quá trình upload hình ảnh của facebook Khi người dùng upload hình ảnh lên hệ thống, trước hết hình ảnh được gửi vào Web Server Sau đó, server yêu cầu một write-enabled Logical Volume từ Haystack Directory Cuối cùng, Web Server gán Id cho hình ảnh và upload hình ảnh lên các Physical Volumes trong cùng Logical Volume được gán

Haystack được sử dụng cho các mục đích sau: ã Đảm nhận việc mapping từ logical đến physical volumes Mỗi logical volume chứa nhiều physical volume ã Căn bằng việc load dữ liệu giữa logical và physical volumes ã Xỏc định cỏc yờu cầu cần được xử lý bởi CDN hoặc Haystack Cache Với chức năng này, Directory có thêm vùn logic, nó sẽ gửi yêu cầu cho CDN(vùng dữ liệu phổ biến) hoặc đi thẳng đến cache cho nội dung ít phổ biến, do đó giúp cho việc giảm sự phụ thuộc luôn luôn kiểm tra trong vùng có sự phổ biến cao

27 ã Xỏc định vựng chỉ đọc Volume trở thành vựng chỉ đọc khi nú gặp những truy vấn thất bại hoặc là nó đã đầy

Haystack Cache được thực hiện như bản băm được phân loại Với bản băm này dùng để sử dụng các ID như các Key để xác định vị trí các dữ liệu được lưu trữ Nếu bộ nhớ cache không có những hình ảnh được lưu trữ thì nó sẽ đi đến Haystack Store để lấy các data cần thiết Bộ nhớ Cache lưu trữ data trong 2 trường hợp:

1 Các yêu cầu từ browser, không phải CDN Nếu các yêu cầu không từ CDN, thì có thể nó không được lưu trữ trong bộ nhớ Cache Do đó, CDN nên đến thẳng đến nơi lưu trữ và bộ nhớ Cache của chính nó (Các data phổ biến sẽ được lưu trữ trong CDN, nếu nó không nằm ở CDN, thì dựa vào các thống kê, data có thể không được truy xuất trong một khoảng thời gian, vì vậy nó rất có thể không được lưu trữ trong cả Haystack Cache

2 Hình ảnh được lấy từ một write-enable Store volume Điều này được thực hiện bởi vì các hình ảnh lớn nhất được sử dụng ngay sau khi chúng được ghi Vì hẩu hết các hệ thống tập tin được thực hiện tốt nhất khi chúng đang ở chế độ Read hoặc Write, khi một ảnh vừa được ghi ở máy vật lý cho việc read and write cùng lúc

Hình 11:Layout of Haystack Store file

Bảng 1: Bảng giải thích chi tiết của 1 needle

Haystack Store tổ chức các volume logic Mỗi volume logic quản lý nhiều máy vật lý trên các dữ liệu được lưu trữ và nhân rộng Mỗi volume vật lý là một tệp lớn (100 GB) chứa nhiều ảnh Nhờ đó, Store có thể truy xuất nhanh mỗi ảnh chỉ bằng ID tệp ảnh và bù ảnh Trong khi chúng ta cần lưu trữ khối lượng lớn mô tả ảnh, chúng ta không còn phải lưu trữ khối lượng lớn mô tả tệp tin nữa Bởi vì các mô tả tệp tin dung lượng lớn hơn và phức tạp hơn khi lưu trong bộ nhớ Máy Store lưu mở các mô tả tệp tin cho mỗi volume vật lý và ánh xạ trong bộ nhớ của ID ảnh vào hệ thống tệp.

Mỗi file được chia thành một superblock và vô số các needle Mỗi needle đại diện cho một hình ảnh, nơi mà metadata của hình ảnh và hình ảnh thật được lưu trữ Hệ thống tiếp tục duy trì một index file cho tất cả các needle Bằng cách này thì Store có thể nhanh chóng xây dựng lại trong bộ nhớ mapping trên hệ thống khởi động mà không cần phải tái quét toàn bộ ổ đĩa Từ khi xoá và cập nhật thì hiếm khi hệ thống đơn giản đặt một delete flag cho việc xoá và gắn thêm những hình ảnh mới như là các needle với một photo ID giống nhau nhưng offset lớn hơn cho sự kết thúc của một file Do đó, nó dễ dàng xây dựng và theo dõi các index file Các hình ảnh có ID giống nhau nhưng offset lớn hơn là những cái mới nhất Chúng ta không đề cập các hoạt động write là nhanh khi mà chúng ta luôn luôn write đến sự kết thúc của một file

Tốc độ truy xuất ổ đĩa

[18] Ổ đĩa cứng, hay còn gọi là ổ cứng (tiếng Anh: Hard Disk Drive, viết tắt:

HDD) là thiết bị dùng để lưu trữ dữ liệu trên bề mặt các tấm đĩa hình tròn phủ vật liệu từ tính

Tốc độ quay của đĩa cứng, được đo bằng vòng quay trên phút (rpm), là một yếu tố quan trọng ảnh hưởng đến hiệu suất của ổ cứng Tốc độ quay càng cao, đĩa cứng hoạt động càng nhanh do khả năng đọc/ghi nhanh hơn và thời gian tìm kiếm ngắn hơn.

Các ổ đĩa cứng phổ biến hiện nay có các tốc độ quay sau: 3.600 rpm dành cho ổ đĩa cứng thế hệ cũ; 4.200 rpm thường dùng cho máy tính xách tay tầm trung từ năm 2007; 5.400 rpm là tốc độ phổ biến của ổ cứng 3,5 inch sản xuất từ 2-3 năm trước và hiện nay ổ cứng 2,5 inch cho máy tính xách tay đã chuyển sang tốc độ 5400 rpm để đáp ứng nhu cầu đọc/ghi dữ liệu nhanh hơn; 7.200 rpm là tốc độ quay phổ biến của các ổ đĩa cứng hiện đại.

(2007) ã 10.000 rpm, 15.000 rpm: Thường sử dụng cho cỏc ổ đĩa cứng trong cỏc mỏy tính cá nhân cao cấp, máy trạm và các máy chủ có sử dụng giao tiếp SCSI

Bảng 2: Chuẩn giao tiếp ổ đĩa cứng

Các chuẩn giao tiếp của ổ đĩa cứng Giao tiếp

Tên tiếng Anh đầy đủ Tốc độ

(viết tắt) truyền dữ liệu

SATA II Serial ATA 300 300 MBps

BÀI TOÁN VÀ GIẢI PHÁP

Bài toán tìm kiếm hình ảnh

Các hệ thống mạng xã hội ngày nay đều có số lượng hình ảnh khá lớn Hầu hết việc tìm kiếm hình ảnh của các hệ thống mạng xã hội là query dựa trên câu truy vấn từ khoá hoặc về nội dung của hình ảnh Tuy nhiên các thông tin đó chỉ là một phần thuộc tính của hình ảnh, và bản thân mỗi hình ảnh đều có những thuộc tính khác ví dụ như: thời gian, vị trí,

Bài luận này giải quyết vấn đề xây dựng một giải pháp để tìm kiếm ảnh trùng lặp trong một tập ảnh lớn Kích thước tập ảnh được đề cập hướng đến quy mô hàng tỷ ảnh, tương đương với các hệ thống có sẵn như Facebook hoặc Google.

Khái niệm “ảnh trùng” trong phạm vi luận văn là các ảnh trùng nhau tuyệt đối 100%

Vấn đề “tìm kiếm ảnh trùng” ở trên làm nảy sinh các bài toán con cần giải quyết:

(1) Biến đổi dữ liệu ảnh thành giá trị để tìm kiếm nhanh, kích thước lưu trữ nhỏ (2) Tổ chức tập dữ liệu ở bài toán (1) để việc tìm kiếm ảnh nhanh

Vì kiểu dữ liệu hìnhrất khó để chúng ta có thể tìm ra một hình ảnh là có trùng với hình ảnh nào trong tập ảnh chúng ta đang có hay không chỉ bằng việc so sánh với nội dung thô Do đó, ta cần phải tạo cho ảnh này một khóa đại diện (key), như vậy từ bài toàn tìm ảnh ta đã chuyển bài toán về tìm key Với cách này việc tìm ảnh và phân loại ảnh trở nên đơn giản hơn

Nếu tập dữ liệu nhỏ thì các giải pháp tìm kiếm đã có; nhưng với số lượng ảnh lên hàng tỷ thì cần thiết tổ chức tập dữ liệu key để việc tìm kiếm nhanh Một thách thức nữa là tập dữ liệu này có thể không thể lưu trữ trên bộ nhớ của một máy tính

Giải pháp cho các bài toán này lần lượt được trình bày ở các mục kế tiếp sau

Bài toán biến đổi ảnh thành giá trị

Để xác minh tính toàn vẹn của tệp khi tải xuống, tác giả thường cung cấp mã MD5 hoặc mã băm đại diện cho tệp Mã này giúp xác định xem tệp có giống với tệp gốc hay không Nếu không có mã đại diện, việc kiểm tra phải so sánh toàn bộ tệp, rất tốn thời gian và phức tạp Tuy nhiên, với mã đại diện, thay vì so sánh hai tệp, chỉ cần so sánh hai mã này, nhanh hơn và chính xác hơn.

Từ những đúc kết thực tế đó, và với các đặc điểm của hàm Hash có được: ã H cú thể được ỏp dụng trờn khối dữ liệu cú độ dài bất kỳ ã H tạo đầu ra cú độ dài cố định ã H(x) tớnh toỏn mọi x tương đối dễ dàng, tạo điều kiện cho việc cài đặt trờn phần cứng lẫn phần mềm được thiết thực ã Với bất kỳ giỏ trị băm h, khụng thể tớnh được x sao cho H(x)=h Hay H được gọi là hàm một chiều ã Với bất kỳ giỏ trị x, khụng thể tớnh được y ≠ x sao cho H(y) = H(x) ã Khụng thể tớnh được một cặp (x, y) sao cho H(x) = H(y)

Suy ra chúng ta dùng hàm hash để có thể chuyển đổi ảnh thành giá trị tương ứng với ảnh đó

Ngoài những yêu cầu chuyển đổi ảnh thành key thì bài toán này còn đặt ra một thách thức đó là về tốc độ và độ chính xác Giải thuật để phục vụ cho lời giải bài toán này là giải thuật Skein-hash đã được trình bày khá chi tiết trong chương II

Từ bài toán tìm kiếm hình ảnh, qua hàm hash ta đã chuyển bài toán sang tìm kiếm chuỗi dữ liệu

Kết luận: để giải quyết bài toán này ta dùng Skein-hash

Bài toán tổ chức dữ liệu

Thử hình dung khó khăn thế nào để lấy được bất kì thông tin nào từ một hệ thông tin nếu dữ liệu được lưu giữ theo cách không có tổ chức Do đó, trong tất cả các hệ thông tin, tài nguyên dữ liệu phải được tổ chức và cấu trúc theo cách thức logic nào đó để cho chúng có thể được truy nhập tới dễ dàng, được xử lí hiệu quả, được truy lục nhanh chóng, và được quản lí hiệu quả

Bài toán này là phần cốt lõi của luận văn cần giải quyết Với việc giải bài toán trong 3.2 chúng ta được tập có khối lượng khá lớn cần được phân hoạch thành các tập nhỏ hơn

Hình 13:Mô hình phân hoạch key

Giải thuật Haystack phân chia dữ liệu thành hai tầng quản lý: tầng một quản lý các tập hợp con, trong khi tầng hai quản lý các tập con cụ thể Cách thức hoạt động này tương tự như Facebook, giúp xử lý hiệu quả lượng dữ liệu lớn.

Cho ví du ta có tập hợp : A = {1,2,3,4,5,6} gồm 6 phần tử, giả sử ta chia tập A này ra thành 3 tập con nhỏ đó là A1, A2, A3:

Với kết quả có được như trên, tần 1 quản lý : A1, A2, A3 Tầng 2 quản lý tập con của những tập hợp này Để có thể phân hoạch được các tập con như trên Cây AVL đưa ra như một lời giải cho những yêu cầu dặt ra với bài toán lớn này

HIỆN THỰC HỆ THỐNG

Xây dựng hàm hash

Với yêu cầu nén mẩu tin bất kỳ về kích thước cố định.Hash được sử dụng để phát hiện thay đổi của mẩu tin Hash có thể sử dụng nhiều cách khác nhau với mẩu tin, Hash thường được kết hợp dùng để tạo chữ ký trên mẩu tin

Hình 14: Xác thực file nguồn và file đích

Hàm Hash tạo nên dấu vân tay (tức là thông tin đặc trưng) của một tập, mẩu tin hay dữ liệu h = H(M)

Hàm Hash: thực hiện việc nén mẩu tin vê kích thước cố định bằng cách xử lý mẩu tin theo từng khối kết hợp dùng một hàm nén nào đó và có thể sử dụng mã khối

Hình 15:Kiến trúc hàm hash tổng quát

Ngày nay có rất nhiều giải thuật hash để hiện thực hàm f này chúng ta có thể kể đến :

Thuật toán MD5 là một hàm băm sử dụng một thông điệp đầu vào có độ dài bất kỳ để tạo ra một chuỗi đầu ra có độ dài cố định 128 bit Thuật toán này được thiết kế để chạy hiệu quả trên các máy tính 32 bit.

Thuật toán SHA-1[16]: Đầu vào của thuật toán là một thông điệp có chiều dài bất kỳ nhỏ hơn 264 size 12{2 rSup { size 8{"64"} } } {} bit, SHA-1 cho ra kết quả là một thông điệp rút gọn có độ dài là 160 bit [16] Ứng dụng những đặc tính của hàm hash, và những gì nhóm phát triển Skein-hash đã hiện thực Phần hiện thực này sẽ không đi vào hiện thực lại phần core của giải thuật mà phần chính là đi vào hiện thực lại để giải thuật này có khả năng nhận được giá trị đầu vào là hình ảnh thay vì dữ liệu chuỗi

Hình 16:Quá trình xử lý chuyển ảnh thành key

Khi người dùng muốn tạo khóa cho key này, người dùng đưa hình ảnh mình qua giao diện hệ thống xử lý, hệ thống xử lý xong sẽ lưu trữ toàn bộ key của những bức ảnh này ở bộ nhớ thứ cấp

Hình 17:Skein-hash convert ảnh thành key

Hình 18:Một hàm băm tiêu biểu đang hoạt động

Convert method nhận giá trị đầu vào là hình ảnh, sau đó sẽ đọc các giá trị nhị phận của hình ảnh này và cho ra giá trị Plain Text (kiểu dữ liệu hàm hash có thể nhận được)

40 Kết thúc của quá trình trên, một hình ảnh đã được chuyển đổi thành key với chiều dài là 512bit (128 HEX)

Với 260 tỷ ảnh trên kho dữ liệu hình ảnh của Facebook, sử dụng hàm băm sẽ tạo ra 260 tỷ khóa tương ứng với từng ảnh Thách thức đặt ra là tìm một khóa cụ thể trong 260 tỷ khóa này.

Vì vậy để khắc phục khó khăn này, thì ta cần phải có một cách sắp xếp các key này sao cho việc tìm kiếm và quản lý nó một cách hiệu quả nhất.

Hiện thực bài toàn tổ chức dữ liệu

Kiến trúc chính cho toàn bộ quá trình quản lý key và tìm kiếm key trong bài toán này là quản lý và tìm kiếm key trên cây AVL

Cây AVL tổng quát được hình thành lên bởi sự kết hợp của cây AVL (tree center) và cây AVL (leaf tree), mỗi node trên tree center chứa giá trị là một cây cây AVL(leaf tree)

Hình 19:Cấu trúc tổ chức dữ liệu

Phần main tree ở đây sẽ quản lý các tập dữ liệu, sẽ điều hướng và xác định xem một key mới vào nó thuộc tập hợp nào, từ đó mới quyết định tìm kiếm trong tập con đó

Phần child tree là phần chứa những giá trị trong từng tập con Khi main tree xác định được tập con nào, child tree sẽ được gọi để load toàn bộ những giá trị trong tập con đó lên và thực hiện những tác vụ mà người dùng cần truy vấn

4.2.1 Main Tree: Ở chương 2, phần các nghiên cứu liên quan Trong đó Haystack đang được facebook xây dựng hiện nay dùng để quản lý 260 tỷ ảnh của facebook Chúng ta có thể thấy được cách thức tổ chức dữ liệu của facebook như dưới đây:

Với cách quản lý này, 1 superblock sẽ chưa rất nhiều Noodle 1 trong đó Dựa vào ý tưởng trên superblock như facebook, phần hiện thực này cũng tao ra các key để lưu trữ vào các superblock của hệ thông (main tree) Đối với Facbook việc xác định block thông qua các file index, và như đã trình bày ở Chương II phần Haystack, khi có một ảnh mới vào ngay lập tưc ảnh mới này sẽ được gán cho một id mới với cơ chế tạo ra id được Haystack quản lý [17] Từ đây giúp cho Haystack dễ dàng truy vấn các key này dựa vào file index Đối với phần hiên thực này, key mới được tạo ra tương ứng với id trong facebook và main tree được tạo ra dùng để quản lý các key này tương đương với việc dùng file index của Haystack Để tránh được trường hợp khi ta insert dữ liệu mới vào làm cây suy biến làm cho việc tìm kiêm gặp nhiều khó khăn Maintree được xây dựng dựa trên việc xây dựng cây AVL tree Hơn nữa với đặc tính của cây nhị phân, ta dễ dàng insert, delete, update giá trị của từng node Giá trị của từng node trong tập main tree là một chuối danh sách các key được lưu trữ dưới ỗ đĩa cứng đã được sắp thứ tự

Khi tìm kiếm một key, maintree sẽ được duyệt để xác định vùng dữ liệu chứa key Sau đó, child tree của vùng dữ liệu đó sẽ được tải lên để thực hiện tìm kiếm tiếp theo.

Hình 22:Tập con đã được phân hoạch

Hình 22 là biểu diễn kết quả sau khi quá trình phân hoạc dữ liệu diễn ra Ta có rất nhiều file với nội dung của từng file được biểu diễn ở Hình 23 bên dưới đây Tên của từng file tương ứng với giá trị nhỏ nhất trong từng file đó File main (hình 24) là file chứa toàn bộ tên của những file nhỏ này và cũng được sắp theo thứ tự

44 Quá trình phân hoạch này được thực hiện khi ta nhận được request thêm vào một key mới hoặc delete key ra khỏi hệ thống Ngược lại khi nhận được một request yêu cầu tìm kiếm một key nào đó trong hệ thống, đầu tiên hệ thống chỉ việc nap file man lên bộ nhớ chính và thực hiện tác vụ tìm kiếm để xác định ra key mới này thuộc file con nào và cho kết quả là key mới này có nằm trong hệ thống hay không.

Hình 23:Giá trị trong từng phân hoạch

Như hình trên, mỗi nút có giá trị nhỏ nhất của cây con góp phần tạo nên tổng giá trị của cây chính Các cây con này cũng được xây dựng dựa trên cấu trúc cây AVL.

Quá trình xây dựng Maintree và Child tree đươc thực hiện thông qua cơ chế insert, delete, update của cây AVL tree

Bài toán thực hiện để xây dựng Main Tree và Child Tree, đồng thời phân vùng dữ liệu Giả sử tồn tại tập các phân vùng được quản lý với tập ID cho trước.

Hình 26:Main Tree Original TH1: số item nhỏ hơn số item giới hạn cho từng phân vùng:

Giả sử rằng chúng ta muốn insert thêm phần tử 90 vào hệ thống trên Hệ thống sẽ thực hiện những bước dưới đây : ã Tỡm kiếm trong MainTree giỏ trị 90 này thuộc vào phõn vựng nào Nếu Maintree là rổng thì giá trị 90 này được ghi nhận vào Maintree và Childtree thông qua phương thức insert vào cây AVL và đồng thời ghi xuống file với giá trị 90 Ngược lại cho biết được 90 này thuộc vào phân vùng nào bằng

90 không tồn tại trong maintree, và từ đó ta xác định được chuỗi đường đi của 90, từ những node này ta sẽ xác định được 90 thuộc vào phân vùng của 60 vì 60 là phần từ nhỏ hơn 90 liền kề ã Xỏc định được phõn vựng cần insert phần tử 90 này vào đú là phõn vựng 60 ã Load phõn vựng đú lờn và thực hiện thao tỏc insert như trong cõy AVL tree

TH2: item lớn hơn số item giới hạn cho từng phân vùng

Nếu giá trị vượt ngưỡngGiới hạn cho từng phân vùng, phân vùng này sẽ được chia thành 2 và quá trình insert sẽ tiếp tục.

Giới hạn của từng phân vùng được config trong file config như sau:

Khi số lượng node cho từng phân vùng con vượt quá file config, hệ thống sẽ gọi hàm split tree tách đôi tập dữ liệu con này

Hình 28:Split tree method Để cho dễ hình dung, giả sử file config chúng ta config maxnode = 4 và hiện tại tập con 60 của chúng đã đầy đủ phần tử:

Khi có thêm phần tử 90 vào tập con 60 này sẽ được tách ra thành 2 tập con như sau:

Sau khi tách đôi ra thành 2 tập con, tập con mới có giá trị min nhất alf 63, ngoài việc tập 90 này được insert vào tập con mới 63, giá trị mới 63 này được cặp nhật vào trong tập maintree

Hình 29: Main tree after insert 90

Ngoài ra cấu trúc cảu 2 cây con mới của chúng ta bây giờ có thể nhìn thấy được như sau:

Hình 30: Child tree after insert 90

Sau quá trình insert này chúng ta đã có 2 tập dữ liệu 60, 63 đã được sắp xếp theo thứ tự khi được lưu trữ dưới file với cách duyệt cây IN-ORDER

Hình 31:Store tree method 4.2.4 Tìm kiếm dữ liệu

ĐÁNH GIÁ

Đánh giá tốc độ hàm hash

Trước khi đi vào đánh giá tốc độ hàm hash này đạt được như thế nào, phần này cho thấy được hàm convert từ ảnh sang plain text hoạt động với những kiểu hình ảnh thông thường hiện nay, những kiểu hình ảnh khác chưa được xem xét trong giai đoạn này vì có thể nói hạn chế về mặt chuẩn bị data

Quá trình kiểm nghiệm được test với tập dữ liệu mẫu dưới đây và được đo với đơn vị đọ là milisecond

Hình 41:Thời gian chạy 860 mẫu thử

Hình 42:Bảng phân bổ thời gian thực thi của 860 mẫu

Qua bảng phân bố thời gian chạy của tập dữ liệu hình ảnh, thời gian thực thi dữ liệu luôn xoay quanh trục đường thẳng tuyến tính, chứng tỏ tốc độ của hàm hash không bị thay đổi nhiều.

Với khối lượng hình ảnh lên đến 860 ảnh và mỗi ảnh có dung lượng từ 2MB đến 8MB, tổng dung lượng cần thiết ước tính khoảng 4GB Do đó, nếu chỉ có sẵn 500MB, không đủ để lưu trữ toàn bộ số hình ảnh này.

Với cấu hình máy tính hiện tại, thời gian để chuyển hết 500MB này gần 6 lần so với tốc độ lý thuyết đề ra Nếu ta có xem mỗi ảnh có kích thước là 500KB vậy với 500MB ta có 1000 hình ảnh Suy ra thời gian chuyển đổi 1000 hình ảnh thành key trong vòng 5.66 giây Và thời gian chuyển đổi 1 ảnh thành key là gần bằng 6 milisecond

Thời gian tính toán như trên và được đo với cấu hình máy tính đưa ra, tốc độ này gần bằng với độ đo mà nhà thiết kế đưa ra đó là 500MB/s thì ta có được là 1000 bức ảnh nếu xem mỗi bức ảnh là 500KB Vậy với tốc độ đề ra như thế này thì với 260 tỷ bức ảnh

Đánh giá kết quả tìm kiếm

Bảng 4: Bảng đánh giá kết quả tìm kiếm Đánh giá tốc độ tìm kiếm data

Lần thử Khối lượng mẫu Thời gian Độ chính xác Cùng tập con

Với tập mẫu trên ta chạy 5 lần và cho kết quả là 3 lần 1ms với cùng tập con và 2 lần 2ms với các tập con khác nhau Có sự khác biệt này là khi cần phải truy vấn key ở tập

60 con khác, hệ thống cần tốn thời gian nạp vào vùng nhớ tập dữ liệu mới này, và thực hiện thao tác tìm kiếm trên cây mới vừa được update dữ liệu

Hạn chế ở phần kiểm nghiệm tốc độ thực thi là không có đủ dữ liệu thực tế để có thể kiểm tra hết 960 tỷ key như bài hiện thực có thể đáp ứng được Tuy nhiên chúng ta vẫn có thể tính toán được giá trị truy vấn một key trên cây AVL full hết dữ liệu, kết quả tính toán này được tính toán dựa trên cơ sở lý thuyết : ã Truy xuất 300MB dữ liệu từ ổ đĩa cứng SATA II mất 1s (đó được mụ tả trong chương II tốc độ truy suất ổ đĩa) Vậy với khối dữ liệu có độ lớn là 2GB ta cần:

2 ∗ 1000 300 = 6.7 â ã Độ phức tạp của giải thuật tỡm kiếm là log(n) với cõy AVL Từ đú ta suy ra được tốc độ tối đa thực tế để ta có thể tìm kiếm được 1 key với mỗi phân vùng là 2GB và main tree đầy đủ cũng với 2GB tập index là : log(31.250.000) + 6.7*1000 = 6707 ms = 6.7s.

Khả năng triển khai thực tế

Giả sử như chúng ta đang có một khối dữ liệu với số lượng hình ảnh trong kho này là 260 tỷ bức ảnh Sau khi quá trình chuyển ảnh thành key ta có được 260 tỷ key tương ứng với 260 tỷ bức ảnh đó với kích thước mỗi key là 512bit (64 byte) Và toàn bộ độ lớn của số key này chúng ta có được:

Với 16TB dữ liệu, chúng ta không thể load toàn bộ khối dữ liệu này lên hết bộ nhớ chính, vì thật ra chúng ta chỉ cần tìm kiếm một phần nhỏ trong 16TB key này, nếu chúng ta load lên toàn bộ ô nhớ sẽ gây ra việc lãng phí tài nguyên Để phục vụ cho việc quản lý, 16TB này được phân chia và sắp xếp lên main tree và các child tree

61 Ví dụ cho trường hợp này, giả sử ta có tập dữ liệu plain text chứa các key cần săp xếp như ở sample10.csv dưới đây:

Sau quá trình phân tích tập dữ liệu sample10.csv lớn, chúng ta có được một bộ sưu tập các tập hợp con sắp xếp các phần tử Tập tin chính (file main) lưu trữ tất cả các giá trị tối thiểu của các tập hợp con này.

Với file main tạo được, hệ thống xây dựng lên được kiến trúc quản lý những tập con này Với kiến trúc quản lý này, nếu chúng ta muốn định vị một tập con nào đó, cách

62 đơn giản là là chúng ta đi tìm trên cây AVL main này và xác định chính xác tập con nào chúng ta cần lấy ra

Dựa vào kiến trúc quản lý này, ta vẽ ra được cây quản lý của tập sample10 là cây AVL dưới đây Dựa vào cây này, chúng ta rất dễ dàng tìm ra đường đi để đi đến các node mà chúng ta cần tìm

Nếu máy tính có RAM 2GB và mỗi Node là : 512 bit hay 64 byte

Vậy ta có công thức tính số node tối đa cây nhị phân mà một máy tính Ram 2GB có thể chứa hết như sau :

2 10 64 = 31.250.000 ( ) Từ công thức tính số node n = 2 h+1 – 1 ta suy ra được h là chiều cao cây:

( ) − 1 = 30 Từ các tính toán trên, ta có thể dựng được main tree tổng quát để quản lý các tập key đã được chia:

Chứa một tập các phần tử đã được sắp thứ tự và được lưu trữ trong bộ nhớ chính của máy, tập dữ liệu này chỉ được load lên bộ nhớ chính khi có phần tử tìm kiếm trong vùng dữ liệu này

Công thức tính số node tối đa của cây AVL có thể chứa từng phân vùng tương tự như việc tính trong Main tree

Suy ra tổng số node tối đa mà hệ thống này có thể quản lý được với máy tính có Ram là 2GB là (31.250.000) 2 hơn 961 tỷ key.

Ngày đăng: 24/09/2024, 04:40

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] F. Chabaud and A. Joux, "Differential Collisions in SHA-0," Advances in Cryptology: Euro - crypt '98 Proceedings, Springer-Verlag, 1998, pp. 56-71 Sách, tạp chí
Tiêu đề: Differential Collisions in SHA-0
[2] X. Wang, Y.L. Yin, and H. Yu, "Collision Search Attacks on SHA1," research summary, 2005 Sách, tạp chí
Tiêu đề: Collision Search Attacks on SHA1
[3] Kjkj P. Hawkes, M. Paddon, and G. Rose, "On Corrective Patterns for the SHA-2 Family," Cryptology ePrint Archive, Report 2004/207 Sách, tạp chí
Tiêu đề: On Corrective Patterns for the SHA-2 Family
[5] "Now From Bruce Schneier, the Skein Hash Function". Slashdot. Retrieved 2008-10- 31 Sách, tạp chí
Tiêu đề: Now From Bruce Schneier, the Skein Hash Function
[7] Bruce Schneier, Niels Ferguson (2013), Skein (hash function), Wikipedia, truy cập ngày 22 tháng 11 năm 2013, < http://en.wikipedia.org/wiki/Hash_function)&gt Link
[8] NIST. Retrieved 2012-10-02, NIST Selects Winner of Secure Hash Algorithm (SHA- 3) Competition , NIST, truy cập ngày 22 tháng 11 năm 2013, <http://www.nist.gov/itl/csd/sha-100212.cfm&gt Link
[4] Horvath, Adam (February 5, 2012). "Binary search and linear search performance on the .NET and Mono platform&#34 Khác
[9] Niels Ferguson, Stefan Lucks Bauhaus, Bruce Schneier, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon Callas, and Jesse Walker. The skein hash function family (version 1.2), 2009 Khác
[10] Google support, How does Picasa handle folder changes done outside of Picasa, Google, truy cập ngày 22 tháng 11 năm 2013, &lt Khác
[12] Social networking service, Google+, Wikipedia, truy cập ngày 24 tháng 11 năm 2013, <http://en.wikipedia.org/wiki/Google+&gt Khác
[17] Dooug B., Sanjeev K., Harry C.L., Jason S., Peter V. - Finding a needle in Haystack: Facebook’s photo storage. OSDI ’10, USENIX Association, Berkeley, USA, 2010, pp. 1-8 Khác

HÌNH ẢNH LIÊN QUAN

Hình 1: Cấu trúc chính của hệ thống - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 1 Cấu trúc chính của hệ thống (Trang 16)
Hình 2 :  Hash funtion  2.1.1  Ứng dụng: - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 2 Hash funtion 2.1.1 Ứng dụng: (Trang 19)
Hình 3: Tốc độ skein-hash - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 3 Tốc độ skein-hash (Trang 21)
Hình 4 :  Ví dụ cây AVL - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 4 Ví dụ cây AVL (Trang 22)
Hình 5: AVL - LL - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 5 AVL - LL (Trang 23)
Hình 6 :  AVL - LR - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 6 AVL - LR (Trang 23)
Hình 7: AVL - RR - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 7 AVL - RR (Trang 24)
Hình 8: AVL - RL  2.3  Các nghiên cứu liên quan: - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 8 AVL - RL 2.3 Các nghiên cứu liên quan: (Trang 24)
Hình 9: Serving a photo. - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 9 Serving a photo (Trang 25)
Hình 10: Uploading a photo - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 10 Uploading a photo (Trang 27)
Hình 12: Cách tìm kiếm hình ảnh của google image  2.4  Tốc độ truy xuất ổ đĩa: - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 12 Cách tìm kiếm hình ảnh của google image 2.4 Tốc độ truy xuất ổ đĩa: (Trang 32)
Hình 15: Kiến trúc hàm hash tổng quát - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 15 Kiến trúc hàm hash tổng quát (Trang 38)
Hình 17: Skein-hash convert ảnh thành key - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 17 Skein-hash convert ảnh thành key (Trang 40)
Hình 19: Cấu trúc tổ chức dữ liệu - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 19 Cấu trúc tổ chức dữ liệu (Trang 42)
Hình 20: Haystack index - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 20 Haystack index (Trang 43)
Hình 21: Main tree - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu phát triển giải pháp phát hiện ảnh trùng nhau
Hình 21 Main tree (Trang 44)

TỪ KHÓA LIÊN QUAN