TIỂU LUẬN MÔN CƠ SƠ DỮ LIỆU NÂNG CAO HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN RIAK

32 1.1K 11
TIỂU LUẬN MÔN CƠ SƠ DỮ LIỆU NÂNG CAO HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN RIAK

Đ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

eo ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN RIAK BÀI TẬP LỚN MÔN CƠ SỞ DỮ LIỆU NÂNG CAO Ngành: Công nghệ thông tin Khóa: 18 Cán bộ hướng dẫn: PGS.TS Nguyễn Hà Nam Nhóm 1: Nguyễn Thanh Tịnh Vương Đình Dũng HÀ NỘI - 2012 Mục lục 1 MỞ ĐẦU 1 Chương 1: Tổng quan về Riak 2 Chương 2: Phân tích ưu nhược điểm của Riak 21 Chương 3: Một số ứng dụng có thể dùng Riak 26 Chương 4: Tổng kết 28 Tài liệu tham khảo 29 Danh sách các hình vẽ Hình 1: Vòng tròn cụm 3 Hình 2: Tổ chức dữ liệu trong Bitcask 4 Hình 3: Cấu trúc 1 entry trong Bitcask 5 Hình 4: Cấu trúc file dữ liệu trong Bitcask 5 Hình 5: Cấu trúc keydir trong Bitcask 6 Hình 6: Tiến trình hợp nhất dữ liệu trong Bitcask 7 Hình 7: Cơ chế tạo bản sao dữ liệu 8 Hình 8: Vector Clock Pruning 17 Hệ cơ sở dữ liệu phân tán Riak MỞ ĐẦU Hệ cơ sở dữ liệu phân tán được xây dựng dựa trên hai công nghệ cơ bản là cơ sở dữ liệu và mạng máy tính. Hệ cơ sở dữ liệu phân tán được mô tả như là tập hợp nhiều cơ sở dữ liệu có liên quan logic đến nhau và được phân bố trên mạng máy tính. Trong cơ sở dữ liệu phân tán các tập tin dữ liệu được lưu trữ độc lập trên các nút mạng máy tính và phải có liên quan đến nhau về mặt logic, và hơn thế nữa còn đòi hỏi chúng phải được truy xuất đến qua một giao diện chung, thống nhất. Riak là một hệ cơ sở dữ liệu phân tán mã nguồn mở, được tạo ra với nhiều tính năng mạnh. Riak là sự lựa chọn tốt cho nhiều ứng dụng hiện đại của công nghệ thông tin ngày nay như các mạng xã hội, hệ thống lưu trữ file phân tán,… Bài viết này giới thiệu tổng quan về mô hình thiết kế hệ thống Riak và phân tích một số ưu nhược điểm của nó, cũng như nêu lên một số hướng ứng dụng có thể sử dụng Riak. Bài viết được chia làm bốn phần chính, dưới đây là tóm tắt nội dung của từng phần: Chương 1: Trình bày tổng quan về Riak. Chương 2: Phân tích ưu nhược điểm của Riak. Chương 3: Một số ứng dụng có thể dùng Riak. Chương 4: Tổng kết. Trang 1 Hệ cơ sở dữ liệu phân tán Riak Chương 1: Tổng quan về Riak Riak là một hệ cơ sở dữ liệu phân tán. Riak tổ chức dữ liệu trong các bucket, các khóa (key) và các giá trị (value). Mỗi bucket là nơi chứa và là không gian khóa cho dữ liệu. Khái niệm bucket tương đương với khái niệm bảng trong cơ sở dữ liệu quan hệ. Các giá trị (hay các đối tượng) được phân biệt bởi khóa, và mỗi cặp (khóa/giá trị) được lưu trong 1 bucket. Riak được thiết kế dựa theo thuyết CAP của Eric Brewer. Thuyết CAP định nghĩa các hệ thống phân tán với 3 tính chất sau: Consistency (tính nhất quán), Availability (tính sẵn sàng), và Partition tolerance (khả năng chịu lỗi). Thuyết này khẳng định rằng chỉ có 2 tính chất được thỏa mãn tại 1 thời điểm bất kỳ. Riak lựa chọn tập trung vào 2 tính chất A và P trong CAP. Lựa chọn này có vẻ như sẽ khiến Riak không đảm bảo tính nhất quán của dữ liệu, tuy nhiên khoảng thời gian xảy ra sự không nhất quán chỉ đo bằng millisecond cũng là đủ tốt cho rất nhiều ứng dụng. Riak là hệ thống có tính sẵn sàng, tính scalability và khả năng chịu lỗi cao. Sau đây chúng ta sẽ cùng tìm hiểu Riak được thiết kế như thế nào để đảm bảo được những mục tiêu vừa được đề cập ở trên. 1.1. Cụm Riak Mỗi cụm Riak là một không gian các số nguyên 160 bit, được mô hình hóa là một vòng tròn được chia thành các partition bằng nhau. Mỗi máy chủ vật lý là một node, mỗi node chứa 1 hoặc nhiều node ảo được gọi là vnode. Mỗi vnode sẽ phụ trách 1 partition trên vòng tròn cụm. Mỗi node trong hệ thống phụ trách 1/(tổng số node) vòng tròn. Số vnode tại mỗi node sẽ được tính là (số partition / số node). Ví dụ, nếu vòng tròn cụm có 32 partition, có 4 node, thì số vnode trên mỗi node là 32/4 = 8. Cấu hình này được thể hiện thông qua hình vẽ dưới đây: Trang 2 Hệ cơ sở dữ liệu phân tán Riak Hình 1: Vòng tròn cụm Khi có node mới được thêm vào hoặc đưa 1 node ra khỏi vòng tròn cụm thì Riak sẽ thực hiện phân bổ lại dữ liệu trên mỗi node một cách tự động. Tất cả các node trong cụm là bình đẳng, không tồn tại khái niệm master node. Mỗi node có đầy đủ khả năng để đáp ứng các request từ client. 1.2. Giao thức Gossip Riak sử dụng giao thức gossip để chia sẻ và thông tin về trạng thái vòng tròn cụm, và các thuộc tính của các bucket trong cụm. Bất cứ khi nào một node thay đổi vai trò của nó trên vòng tròn cụm (như thêm/bớt partition), nó thông báo sự thay đổi này qua giao thức gossip. Mỗi node sẽ định kỳ (mặc định là 60 giây) gửi thông tin trạng thái hiện tại của vòng tròn cụm mà nó biết đến một số node được lựa chọn ngẫu nhiên. Giao thức gossip nhằm phát hiện các node bị mất kết nối với vòng tròn cụm, và tránh cho các request của client được chuyển hướng tới các node hỏng. Giao thức gossip làm tăng tính nhất quán của dữ liệu. Nó phản ánh kịp thời node nào sẽ phụ trách partition nào khi trên vòng tròn cụm có sự thay đổi số node. Trang 3 Hệ cơ sở dữ liệu phân tán Riak 1.3. Backend lưu trữ dữ liệu Dữ liệu trong Riak có dạng key/value, nên Riak cần sử dụng một engine lưu trữ đặc biệt được tối ưu cho việc truy xuất dạng dữ liệu này. Riak sử dụng API để tương tác với hệ thống con lưu trữ dữ liệu. API này cho phép Riak hỗ trợ nhiều loại backend, mà có thể đưa thêm vào hoặc gỡ ra khi cần. Ngoài ra cũng có thể cấu hình sao cho mỗi bucket sử dụng một backend khác nhau, nhằm tối ưu việc lưu trữ đối với kiểu dữ liệu khác nhau. Mặc định Riak dùng Bitcask làm backend cho việc lưu trữ dữ liệu, ngoài ra người dùng có thể chọn các backend khác như InnoStore. Bitcask là một engine lưu dữ liệu, được thiết kế để tối ưu hóa việc thao tác với dữ liệu dạng key/value. Mô hình tổ chức dữ liệu trong Bitcask như sau: Hình 2: Tổ chức dữ liệu trong Bitcask Bitcask lưu dữ liệu trong 1 một thư mục. Tại một thời điểm chỉ có một tiến trình được thực hiện thao tác ghi trong thư mục này. Ở thời điểm bất kỳ, trong thư mục chỉ có một file ở trạng thái tích cực (active), và các thao tác ghi chỉ diễn ra trên file này. Khi kích cỡ file này đạt ngưỡng, nó sẽ được đóng lại, và 1 file tích cực khác được tạo ra. Khi một file bị đóng lại thì nội dung của nó là bất biến, không thể bị thay đổi nữa, tức nó sẽ không bao giờ được mở lại để thực hiện thao tác ghi. Bitcask sử dụng cơ chế append khi ghi vào file tích cực, điều này không yêu cầu phải thực hiện tìm vị trí ghi trên đĩa (disk seeking), khiến thao tác ghi được diễn ra rất nhanh. Mỗi entry có định dạng đơn giản như dưới đây: Trang 4 Hệ cơ sở dữ liệu phân tán Riak Hình 3: Cấu trúc 1 entry trong Bitcask Khi ghi, một entry mới được thêm vào cuối file tích cực. Việc xóa 1 entry chỉ đơn giản là ghi một entry chứa giá trị đặc biệt có khóa trùng với khóa của entry cần xóa. Tiến trình hợp nhất (merge) dữ liệu được đề cập dưới đây sẽ xóa entry này đi. Một file dữ liệu của Bitcask là một dãy tuyến tính các entry như hình sau: Hình 4: Cấu trúc file dữ liệu trong Bitcask Sau khi việc ghi dữ liệu vào file tích cực hoàn thành, một cấu trúc dữ liệu nằm trong bộ nhớ trong có tên là “keydir” được cập nhật. keydir là một bảng băm thực hiện ánh xạ mỗi khóa với một cấu trúc dữ liệu có kích thước cố định mô tả các thông tin về file, vị trí của entry trong file, timestamp. Khi đã biết file id và vị trí của entry trong file, ta có thể dễ dàng đọc được giá trị ứng với khóa. Trang 5 Hệ cơ sở dữ liệu phân tán Riak Hình 5: Cấu trúc keydir trong Bitcask Khi thao tác ghi xảy ra, bảng keydir được cập nhật vị trí của dữ liệu mới nhất. Dữ liệu cũ vẫn tồn tại trên đĩa, nhưng mọi hành động đọc dữ liệu về sau sẽ sử dụng phiên bản mới nhất trong bảng keydir. Tiến trình hợp nhất dữ liệu sẽ xóa những dữ liệu cũ đi. Việc đọc dữ liệu được thực hiện cực kỳ đơn giản, chỉ cần một thao tác nhảy vị trí trong file. Khi đọc dữ liệu, đầu tiên ta tra cứu khóa trong bảng keydir, tìm được file id và vị trí entry trong file, rồi tiến hành nhảy đến vị trí xác định trong file này và đọc dữ liệu ứng với khóa. Cơ chế lưu dữ liệu như trên khiến cho lượng dữ liệu được lưu tăng rất nhanh chóng, do chúng ta chỉ ghi dữ liệu mới mà không động chạm đến dữ liệu cũ. Tiến trình hợp nhất dữ liệu sẽ giải quyết vấn đề này. Tiến trình hợp nhất dữ liệu rà soát trên tất cả các file đang ở trạng thái không tích cực (in-active) và tạo ra một tập các file dữ liệu mới chỉ chứa các phiên bản “sống” hay các phiên bản mới nhất của dữ liệu ứng với các khóa hiện tại. Tiến trình hợp nhất dữ liệu cũng tạo ra một file hint bên cạnh mỗi file dữ liệu mới. File hint không chứa dữ liệu mà chỉ chứa các tham số định vị và đặc tả dữ liệu. File hint cho phép việc tạo ra bảng keydir diễn ra nhanh chóng trong trường hợp ta cần tạo lại bảng này từ 1 danh sách các file dữ liệu có sẵn, việc đọc file hint rõ ràng sẽ nhanh hơn nhiều so với việc đọc file dữ liệu có kích thước lớn. Trang 6 Hệ cơ sở dữ liệu phân tán Riak Hình 6: Tiến trình hợp nhất dữ liệu trong Bitcask Một số ưu điểm của việc sử dụng Bitcask • Độ trễ khi đọc/ghi nhỏ. • Thông lượng lớn, đặc biệt khi cần ghi một luồng dữ liệu của những đối tượng ngẫu nhiên. • Có thể xử lý những tập dữ liệu có kích thước lớn hơn dung lượng của RAM. • Chống chịu lỗi tốt, khả năng phục hồi nhanh và không làm mất mát dữ liệu. Điều này có được nhờ sử dụng các file hint trong quá trình khởi động lại hệ thống bitcask để tạo lại bảng keydir. • Dễ dàng backup và phục hồi dữ liệu. Do các file dữ liệu có nội dung bất biến một khi đã được đóng lại và chuyển sang trạng thái không tích cực, nên việc backup dữ liệu rất đơn giản, chỉ việc copy các file này sang 1 ổ chứa khác. Việc phục hồi dữ liệu cũng đơn giản và nhanh chóng, chỉ cần copy lại các file dữ liệu vào 1 thư mục định sẵn. • Định dạng dữ liệu đơn giản, và cấu trúc code sáng sủa, dễ hiểu. • Chịu được tải truy cập và lượng dữ liệu lớn. 1.4. Hinted Handoff Riak sử dụng kỹ thuật Hinted handoff để bù cho những node bị mất kết nối trên vòng tròn cụm. Các node lân cận của node bị mất kết nối sẽ thực hiện phần việc của node Trang 7 [...]... lưu trữ những đối tượng dữ liệu lớn Trang 24 Hệ cơ sở dữ liệu phân tán Riak Riak không hỗ trợ lưu trữ những file có kích thước lớn (> 100 MB) Thay vào đó, Basho Technologies – cha đẻ của Riak, phát triển một phiên bản thương mại khác có tên là Riak CS (Riak Cloud Storage) nhằm giải quyết vấn đề này Trang 25 Hệ cơ sở dữ liệu phân tán Riak Chương 3: Một số ứng dụng có thể dùng Riak Như chúng tôi đã trình... hay không + Dấu gạch dưới (_) biểu thị mọi giá trị đều phù hợp Trang 20 Hệ cơ sở dữ liệu phân tán Riak Chương 2: Phân tích ưu nhược điểm của Riak Trong chương này chúng ta sẽ cùng phân tích một số ưu nhược điểm của hệ cơ sở dữ liệu phân tán Riak 2.1 Những ưu điểm của Riak Chống chịu lỗi tốt Một trong những chức năng hấp dẫn nhất của Riak là nó có khả năng chống chịu lỗi mạnh mẽ Nếu một node bị mất kết... Map-Reduce trong Riak còn có một ý nghĩa khác, đó là làm tăng tính địa phương hóa cho dữ liệu Khi xử lý một tập dữ liệu lớn, việc đưa code tính toán đến nơi chứa dữ liệu sẽ hiệu quả hơn việc đưa dữ liệu đến nơi chứa code tính toán Trên thực tế, job của Map-Reduce thường có code nhỏ hơn 10 KB, sẽ là hiệu quả hơn khi đưa 10KB code đến Trang 17 Hệ cơ sở dữ liệu phân tán Riak nơi chứa dữ liệu để thực hiện... việc quản lý dữ liệu , đặc biệt là xung quanh việc lưu trữ và xử lý dữ liệu bên trong những môi trường công nghệ thông tin hiện đại, phân tán, chẳng hạn như hệ thống cloud Xây dựng các hệ phân tán có tính tin cậy, ổn định và scalability cao là việc khó, nhưng Riak có thể giúp thực hiện điều này Đội ngũ kỹ sư của Basho Technologies đã thiết kế và xây dựng một hệ cơ sở dữ liệu có tính sẵn sàng cao, có khả... trước, Riak là hệ cơ sở dữ liệu phân tán được thiết kế có tính sẵn sàng, tính scalability và khả năng chịu lỗi cao Bên cạnh đó, Riak còn có rất nhiều ưu điểm khác mà các nhà phát triển ứng dụng có thể tính đến khi đang đi tìm một hệ cơ sở dữ liệu tốt, phù hợp nhu cầu sử dụng Dưới đây chúng tôi nêu ra một số hướng phát triển ứng dụng sẽ phù hợp tốt với Riak: 1 Sử dụng Riak như là 1 Session Store 2 Hệ thống... Và Mozilla Test Pilot đã lựa chọn Riak 8 Các ứng dụng hoạt động trên nền Web Riak hỗ trợ các ứng dụng tương tác với hệ cơ sở dữ liệu thông qua giao diện HTTP thân thiện Cùng với việc các job Map-Reduce có thể được viết bằng Javascipt, cho nên Riak và các ứng dụng hoạt động trên nền Web là sự kết hợp rất tốt Trang 27 Hệ cơ sở dữ liệu phân tán Riak Chương 4: Tổng kết Riak được thiết kế để giải quyết một... Trang 9 Hệ cơ sở dữ liệu phân tán Riak nhiên Riak sẽ thực hiện chia các bản sao về các partition một cách công bằng Khi có node được thêm vào hay bị đưa ra khỏi vòng tròn cụm, sự phân bổ các partition về các node bị thay đổi và có thể khiến cho sự phân bố dữ liệu bị lệch Riak sẽ tự động phân chia lại các partition về các node để đảm bảo cân bằng tải Trong trường hợp số node nhỏ hơn giá trị n_val, dữ liệu. .. lần cập nhật dữ liệu, vector clock này cũng được cập nhật sao cho Riak có thể so sánh được 2 phiên bản khác nhau của đối tượng dữ liệu và có khả năng xác định những điều sau: • Một đối tượng dữ liệu có phải là con cháu trực tiếp của 1 đối tượng dữ liệu khác hay không • Các đối tượng dữ liệu có chung 1 đối tượng dữ liệu cha hay không • Các đối tượng dữ liệu không nằm trên cùng 1 cây phả hệ Sử dụng kiến... Một số nhược điểm của Riak Riak không được thiết kế để thỏa mãn tất cả các ứng dụng cần lưu trữ dữ liệu Trong một số trường hợp, dùng một hệ cơ sở dữ liệu khác sẽ là lựa chọn tốt hơn Chẳng hạn đối với lớp người dùng cần cơ chế lưu trữ dữ liệu tập trung với cấu trúc dữ liệu cố định, không thay đổi, thì Riak sẽ không phù hợp Dưới đây chúng tôi nêu lên một số vấn đề tồn tại trong Riak, cũng có thể coi.. .Hệ cơ sở dữ liệu phân tán Riak này, cho phép hệ thống tiếp tục xử lý công việc như bình thường Điều này có thể được xem như một hình thức tự chữa bệnh 1.5 Cơ chế tạo bản sao dữ liệu Riak điều khiển số bản sao của dữ liệu thông qua việc thiết lập giá trị N (n_val) Giá trị này có thể được tùy chỉnh với mỗi bucket khác nhau Các đối tượng trong Riak kế thừa n_val từ bucket . 7 Hình 7: Cơ chế tạo bản sao dữ liệu 8 Hình 8: Vector Clock Pruning 17 Hệ cơ sở dữ liệu phân tán Riak MỞ ĐẦU Hệ cơ sở dữ liệu phân tán được xây dựng dựa trên hai công nghệ cơ bản là cơ sở dữ liệu. ứng dụng có thể dùng Riak. Chương 4: Tổng kết. Trang 1 Hệ cơ sở dữ liệu phân tán Riak Chương 1: Tổng quan về Riak Riak là một hệ cơ sở dữ liệu phân tán. Riak tổ chức dữ liệu trong các bucket,. tính. Hệ cơ sở dữ liệu phân tán được mô tả như là tập hợp nhiều cơ sở dữ liệu có liên quan logic đến nhau và được phân bố trên mạng máy tính. Trong cơ sở dữ liệu phân tán các tập tin dữ liệu

Ngày đăng: 08/07/2015, 16:05

Từ khóa liên quan

Mục lục

  • MỞ ĐẦU

  • Chương 1: Tổng quan về Riak

    • 1.1. Cụm Riak

    • 1.2. Giao thức Gossip

    • 1.3. Backend lưu trữ dữ liệu

    • 1.4. Hinted Handoff

    • 1.5. Cơ chế tạo bản sao dữ liệu

      • Tiến trình Read Repair

      • 1.6. Xử lý các request

      • 1.7. Giải quyết xung đột

      • 1.8. Map-Reduce

      • 1.9. Link-walking

      • Chương 2: Phân tích ưu nhược điểm của Riak

        • 2.1. Những ưu điểm của Riak

        • 2.2. Một số nhược điểm của Riak

        • Chương 3: Một số ứng dụng có thể dùng Riak

        • Chương 4: Tổng kết

        • Tài liệu tham khảo

Tài liệu cùng người dùng

Tài liệu liên quan