Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.52 MB, 50 trang )
chỉ quan tâm đến dữ liệu của 6 tháng trước, những điều này nên là nhân tố trong thiết kế
mô hình dữ liệu cho Cassandra.
3.9.2 Phi chuẩn hóa để tối ưu
Trong thế giới quan hệ, mô hình dữ liệu thường được thiết kế với mục tiêu chuẩn
hóa dữ liệu để giảm thiểu tối đa dư thừa. Việc chuẩn hóa thường liên quan đến việc tạo ra
các bảng có cấu trúc chặt chẽ, nhở hơn và sau đó định nghĩa quan hệ giữa chúng. Trong
quá trình truy vấn, các bảng liên quan được kết nối với nhau để thỏa mãn yêu cầu.
Cassandra không có mối quan hệ khóa ngoại giống như cơ sở dữ liệu quan hệ,
nghĩa là bạn không thể kết nối nhiều column family với nhau để đáp ứng mọt yêu cầu truy
vấn cụ thể. Cassandra thực hiện tót nhất khi dữ liệu cần thỏa mãn một truy vấn nào đó
được đặt ở cùng một column family. Cố gắng thiết kế mô hình dữ liệu để một hoặc một
vài dòng trong một column family được dùng để trả lời mỗi truy vấn. Điều này hy sinh
không gian đĩa (một trong những tài nguyên rẻ nhất cho một server) để giảm số lượng tìm
kiếm trên đĩa và lưu lượng mạng.
3.9.3 Lập kế hoạch cho việc ghi trùng lặp
Trong một column family, mỗi dòng được xác định bởi khóa dòng của nó, một
chuỗi có độ dài gần như không giới hạn. Khóa này không có dạng cụ thể, nó phải là duy
nhất trong một column family. Không giống khóa chính trong cơ sở dữ liệu quan hệ,
Cassandra không bắt buộc tính duy nhất. Việc thêm vào một khóa dòng bị trùng sẽ upsert
(kết hợp của insert và update) các cột trong câu lệnh insert chứ không trả về lỗi vi phạm.
3.9.4 Sử dụng các khóa dòng tự nhiên hoặc thay thế
Một vấn đề cần xem xét là sử dụng các khóa tự nhiên hay thay thế cho một column
family. Một khóa thay thế là khóa được sinh ra (như UUID) xác định duy nhất một dòng,
nhưng không có quan hệ với dữ liệu thực tế trong dòng đó.
Với một số column family, dữ liệu có thể chứa các giá trị được đảm bảo là duy
nhất và thường không được cập nhật sau khi dòng được tạo ra. Ví dụ, username trong
column family user. Đây được gọi là khóa tự nhiên. Các khóa tự nhiên khiến cho dữ liệu
dễ đọc hơn, và loại bỏ nhu cầu các chỉ mục bổ sung hoặc phi chuẩn hóa. Tuy nhiên, trừ
khi ứng dụng của bạn đảm bảo tính duy nhất, thì vẫn có nguy cơ viết đè lên cột dữ liệu.
Và các dùng khóa tự nhiên không cho phép cập nhật khóa dòng một cách dễ dàng. Ví dụ,
nếu khóa dòng của bạn là một địa chỉ email và người dùng muốn thay đổi địa chỉ email
của mình, bạn có thể phải tạo ra một dòng mới với địa chỉ email mới và sao chép tất cả
các cột đang có từ dòng cũ sang dòng mới.
48
3.9.5 Các kiểu UUID cho tên cột
Kiểu UUID comparator (id duy nhất) được sử dụng để tránh xung đột trong tên cột. Ví
dụ, nếu bạn muốn xác định một cột (như blog entry hay tweet) theo nhãn thời gian của nó,
nhiều client viết cùng một khóa dòng đồng thời có thể gây ra xung đột về nhãn thời gian,
nguy cơ ghi đè dữ liệu không có ý định bị ghi đè. Sử dụng UUIDType để thể hiện một
kiểu UUID (dựa trên thời gian) có thể tránh những xung đột như vậy.
49
KẾT LUẬN
Trong tiểu luận này nhóm em đã trình bày khái quát về hệ cơ sở dữ liệu phân tán
Cassandra. Cassandra, hệ thống phân phối và quản lý cơ sở dữ liệu, vốn được phát triển bởi
Facebook, công bố mã nguồn mở vào tháng 07/2008 và chính thức gia nhập vào “đại gia
đình” Apache. Và trong cuối tháng 02/2010, Cassandra đã trở thành Apache Top-Level
Project (TLP). Mặc dù vẫn còn khá mới mẻ với cộng đồng người sử dụng, nhưng công nghệ
của Cassandra đã được ứng dụng rộng rãi trong những công ty và tổ chức có quy mô như
Cisco, Twitter và Digg.
Cassandra đã mở đầu cho một thế hệ database kế tiếp là một thế hệ cơ sở dữ liệu
non-relational (không quan hệ), distributed (phân tán), mã nguồn mở, horizontal scalable
(khả năng mở rộng theo chiều ngang) có thể lưu trữ, xử lý từ một lượng rất nhỏ cho tới
hàng petabytes dữ liệu trong hệ thống có độ chịu tải, lỗi cao với những đòi hỏi về tài
nguyên phần cứng thấp.
Tiểu luận đã giới thiệu về hệ cơ sở dữ liệu phân tán Cassandra, kiến trúc và mô hình
dữ liệu trong Cassandra. Đây là một tiểu luận khá mới, phần lớn là tham khảo từ tài liệu
nước ngoài, không thể tránh khỏi những thiếu xót. Chúng em mong thầy cô và các bạn góp
ý để kiến thức của chúng em ngày càng hoàn thiện hơn.
Xin chân thành cảm ơn.
TÀI LIỆU THAM KHẢO
1. Apache Cassandra™ Documentation (http://www.datastax.com/docsource/pdf/cassandra10.pdf )
2. Cassandra: The Definitive Guide – Eben Hewitt
3. Cassandra 2.0 Tutorial V1.0 Sébastien Jourdain, Fatiha Zeghir 2005/06/01
4. Cassandra – An Introduction Mikio L. Braun Leo Jugel TU Berlin, twimpact
LinuxTag Berlin, 13. May 2011
50