Là một hệ cơ sở dữ liệu phân tán mã nguồn mở Dữ liệu được chứa trong các bucket, các khóa và các giá trị Thiết kế dựa theo thuyết CAP của Eric Brewer - Consistency - Availability -
Trang 2 Tổng quan về Riak
Một số ưu nhược điểm
Một số hướng ứng dụng
Trang 3 Là một hệ cơ sở dữ liệu phân tán mã nguồn mở
Dữ liệu được chứa trong các bucket, các khóa và các giá trị
Thiết kế dựa theo thuyết CAP của Eric Brewer
- Consistency
- Availability
- Partition tolerance
3/21
Trang 4Vòng tròn cụm
Mỗi máy chủ vật lý là một node, mỗi node chứa 1 hoặc nhiều node ảo (vnode)
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
Trang 5Giao thức Gossip
Chia sẻ thông tin giữa các node về trạng thái vòng tròn
cụm:
- Vai trò của mỗi node.
- Các thuộc tính của các bucket.
Mỗi node định kỳ gửi thông tin mà nó biết đến một số node được lựa chọn ngẫu nhiên
Chức năng:
- Phát hiện các node bị mất kết nối với vòng tròn cụm.
- Làm tăng tính nhất quán của dữ liệu 5/21
Trang 6Tạo bản sao
Bảo đảm cho dữ liệu không bị mất nếu có node bị mất kết
nối.
Có thể tùy chỉnh cho từng bucket.
Tiến trình Read Repair: sửa lỗi dữ liệu không nhất quán.
Hinted handoff: bù trừ cho node bị mất kết nối.
Trang 7Backend lưu dữ liệu
Engine lưu trữ đặc biệt được tối ưu cho việc truy xuất dữ liệu dạng key/value
Hỗ trợ nhiều loại backend, có thể đưa thêm vào hoặc gỡ ra
Mỗi bucket có thể dùng một backend khác nhau
Mặc định dùng Bitcask
7/21
Trang 8Backend lưu dữ liệu - Bitcask
File entry
Thư
mục
File
Trang 9Backend lưu dữ liệu - Bitcask
Keydir
- Nằm trọn vẹn trong bộ nhớ trong
-> Thao tác đọc dữ liệu nhanh
9/21
Trang 10Backend lưu dữ liệu - Bitcask
Tiến trình hợp nhất dữ liệu
Trang 11- Cho phép thiết lập 1 giá trị W cho mỗi cập nhật.
- Mỗi cập nhật được đánh dấu bằng 1 vector clock.
11/21
Trang 12Giải quyết xung đột
Hai cách giải quyết các xung đột trong việc cập nhật các đối tượng dữ liệu:
- Cho lần cập nhật gần nhất giành chiến thắng
- Trả về cho client tất cả các phiên bản của object
Trang 13Giải quyết xung đột – Vector clock
Phương pháp so sánh các phiên bản của đối tượng
Ví dụ:
[{client1,3,tstamp},{client2,1,tstamp},{client3,2,tstamp}]
Vector Clock Pruning :
13/21
Trang 14Giải quyết xung đột - Sibling
Sibling được tạo ra khi Riak không thể xác định
được phiên bản đúng của đối tượng dữ liệu.
Ba trường hợp sẽ tạo ra sibling:
- Các thao tác ghi xảy ra đồng thời.
- Sử dụng giá trị vector clock sai.
- Thao tác ghi không dùng vector clock.
Trang 15 Xử lý dữ liệu theo thời gian thực và xử lý song song
Tăng tính địa phương hóa cho dữ liệu
Trang 16 Link
liệu
- Cho phép thực hiện những truy vấn lần theo các mối quan
hệ từ một đối tượng đến các đối tượng khác
- Đọc và cập nhật link thông qua HTTP Link header
Link: </riak/list/1> ; riaktag= "previous" , </riak/list/3> ; riaktag= "next"
theo các link của đối tượng đó để tìm những đối tượng phù hợp
Trang 17Một số ưu nhược điểm của Riak
- Map-Reduce linh hoạt
- Cung cấp nhiều giao diện lập trình
Trang 18Một số ưu nhược điểm của Riak
Nhược điểm
-Thắt nút cổ chai tại Reduce phase
- Vấn đề với backend Bitcask
+ Bảng keydir phải được chứa toàn bộ trong bộ nhớ trong
- Không hỡ trợ những đối tượng dữ liệu lớn (>100MB)
18/21
Trang 19Một số hướng ứng dụng
Các ứng dụng hoạt động trên nền Web
Ứng dụng thu thập thông tin người dùng
-Mozilla Test Pilot,…
Lưu dữ liệu người dùng cho mạng xã hội và các trò chơi trực tuyến
- Yammer,…
Xây dựng các ứng dụng Mobile đáng tin cậy và scalability
19/21
Trang 20Một số hướng ứng dụng
Caching Layer
Hệ thống lưu trữ file đám mây hoặc kho lưu trữ dữ liệu
đa phương tiện
Lưu dữ liệu người dùng cho mạng xã hội và các trò chơi trực tuyến
Các hệ thống thương mại điện tử phân tán