2. Kiến trúc Cassandra
2.8.2 Truy vấn đọc
Đối với truy vấn đọc, có hai loại truy vấn đọc mà điều phối có thể gửi tới một bản
sao; một truy vấn đọc trực tiếp và một truy vấn sửa đọc nền. Số lượng bản sao được liên hệ bởi một truy vấn đọc trực tiêp được xác định bởi mức độ nhất quán được đưa ra bởi
Client. Truy vấn sửa đọcnền được gửi tới bất cứ bản sao bổ sung nào mà không nhận truy
vấn trực tiếp. Truy vấn sửa đọc đảm bảo rằng hàng được truy vấn được thực hiện nhất
quánở tất cả các bản ghi.
Do đó, trước tiên nút điều phối lên hệ với các bản sao được chỉ định bởi mức độ
nhất quán. Nút điều phối sẽ gửi những truy vấn tới bản sao mà đang phản hồi nhanh
chóng nhất. Những nút được liên hệ sẽ phản hồi với dữ liệu đã truy vấn; nếu nhiều nút được liên hệ, thì các hàngở mỗi bản sao được so sánh trong bộ nhớ để xem liệu chúng có nhất quán. Nếu chúng không nhất quán, thì bản sao có dữ liệu gần dây nhất (dựa vào khoảng thời gian) sẽ được nút điều phối sử dụng để chuyển tiếp kết quả về cho Client.
Để đảm bảo rằng tất cả các bản sao đều có phiên bản gần đây nhất của dữ liệu đọc thường xuyên, thì nút điều phối cũng liên hệ và so sánh dữ liệu ở các bản sao mà không
được truy vấn đọc trực tiếp xem có nhất quán và không bị lỗi thời. Nếu bị lỗi thời thì sẽ được cập nhật những giá trị được ghi gần đây nhất. Tến trình nàyđuợc gọi là sửa đọc. Sửa đọc có thể được cấu hìnhđối với mỗi họ cột ( sử dụng read_repair_chance), và được cho
phép mặc định.
Ví dụ, trong một cụm với số lượng bản sao là 3, và mức độ nhất quán là QUORUM, 2 trong 3 bản sao được liên hệ để thực hiện yêu cầu đọc trực tiếp. Giả định
rằng các bản sao được liên hệ có những phiên bản của các hàng khác nhau, thì bản sao có
nhất quán so với hai bản sao trước, và nếu cần thiết, bản sao gần đây nhất sẽ sinh ra một
lệnh ghi để cập nhật những phiên bản lỗi thời.