1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo đồ án tìm hiểu về nosql cassandra

28 1 0

Đ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

Định dạng
Số trang 28
Dung lượng 198,68 KB

Nội dung

MỤC LỤC MỞ ĐẦU Chúng ta sống thời đại Web 2.0 bùng nổ, mạng dịch vụ liệu cho phép người chia sẻ hàng tỷ nội dung Web Khối lượng xử lý liệu lớn nhanh chóng vượt qua giới hạn phần cứng cần để giải Tuy hệ sở liệu quan hệ (RDBMS) sử dụng để giải lượng liệu tỏ có nhiều mối nguy hại cho xử lý Hầu hết liệu lưu trữ phân tán nhiều máy chủ khác Các RDBMS xử lý tốt nhiệm vụ lưu trữ liệu tập trung, tính tập trung lại tạo khó khăn cho hệ thống muốn mở rộng Việc người sử dụng thường xuyên tìm cách phi chuẩn hố liệu (bằng cách giảm số join cần thiết bảng) vơ hình chung phá vỡ thiết kế sở liệu (CSDL) ban đầu Hơn nữa, giao dịch phân tán RDBMS thường dễ sinh tượng nút cổ chai, việc xử lý chúng gặp tương đối nhiều khó khăn RDBMS khơng có hỗ trợ trực tiếp cho tình Rất nhiều giải pháp đưa ra, NoSQL giải pháp NoSQL hệ sở liệu mới, giảm thiểu tối đa phép tính toán, tác vụ đọc-ghi liên quan kết hợp với xử lý theo lô đảm bảo yêu cầu xử lý liệu khối lượng lớn lớn Hệ CSDL lưu trữ, xử lý từ lượng nhỏ đến hàng petabytes liệu với khả chịu tải tốt, khả chịu lỗi cao lại khơng địi hỏi tài nguyên phần cứng cao Hiện nay, có khoảng 150 hệ sở liệu phân tán NoSQL (2) tiếp tục tăng Một số hệ quản trị sở liệu đại diện cho NoSQL gồm có: Cassandra, MongoDB, SimpleDB, BigTable, CouchDB… Để tìm hiểu rõ NoSQL, nhóm xin trình bày hệ sở liệu phân tán bật, bắt đầu Facebook tiếp tục phát triển Apache ngày – Cassandra CHƯƠNG I – Thuật ngữ NOSQL NoSQL gì? a) Thuật ngữ NoSQL sử dụng thuật ngữ chung cho tất sở liệu không tuân theo quy tắc sở liệu quan hệ (RDBMS) phổ biến thường liên quan đến việc xử lý thao tác với lượng lớn liệu NoSQL sản phẩm hay cơng nghệ nhất, đại diện cho lớp sản phẩm liên quan đến việc lưu trữ xử lý liệu không theo quy tắc RDBMS b) Lịch sử đời NoSQL Tại lại sử dụng NoSQL? Cơ sở liệu NoSQL không Ngay từ máy tính đời, từ có lưu trữ xử lý liệu máy tính sở liệu NoSQL manh nha Nhưng liệu chưa thực lớn, đòi hỏi xử lý liệu chưa thật nhiều hệ sở liệu quan hệ thể mạnh NoSQL chưa thực quan tâm Việc NoSQL thừa nhận gần phát triển ạt ứng dụng Internet thời đại Web 2.0, dẫn đến việc gia tăng nhanh kích thước liệu ngày yêu cầu cao khả truy xuất liệu Với việc gia tăng nhanh kích thước liệu nên hầu hết liệu lưu trữ phân tán nhiều máy chủ khác hạn chế thiết bị lưu trữ Các RDBMS xử lý tốt nhiệm vụ lưu trữ liệu tập trung, tính tập trung lại tạo khó khăn cho hệ thống muốn mở rộng Việc người sử dụng thường xuyên tìm cách phi chuẩn hoá liệu (bằng cách giảm số join cần thiết bảng) vơ hình chung phá vỡ thiết kế sở liệu (CSDL) ban đầu Hơn nữa, giao dịch phân tán RDBMS thường dễ sinh tượng thắt nút cổ chai, việc xử lý chúng gặp tương đối nhiều khó khăn RDBMS khơng có hỗ trợ trực tiếp cho tình Đa số hệ sở liệu NoSQL hình thành giới việc xử lý song song tránh tượng Vì vậy, hệ sở liệu NoSQL lên giải pháp sáng giá đáp ứng tình Khởi đầu từ tập đồn cổ phần Inktomi với cơng cụ tìm kiếm HotBot, sở liệu NoSQL bắt đầu hình thành nhiều chất lượng Đỉnh cao việc phát triển NoSQL việc Google thức sử dụng NoSQL BigTable vào cơng cụ tìm kiếm tiếng Vào năm 2009, Eric Evans, nhân viên Rackspace giới thiệu lại thuật ngữ NoSQL hội thảo sở liệu nguồn mở phân tán Thuật ngữ NoSQL đánh dấu bước phát triển hệ database mới: distributed (phân tán) + non-relational (không ràng buộc) c) Định nghĩa Thế hệ hệ sở liệu hệ sở liệu non-relational (không ràng buộc), distributed (phân tán), open source, horizontal scalable (khả mở rộng theo chiều ngang) lưu trữ, xử lý từ lượng nhỏ hàng petabytes liệu hệ thống có độ chịu tải, lỗi cao với đòi hỏi tài nguyên phần cứng thấp Một số đặc điểm nhận dạng cho hệ database bao gồm: schema-free, hỗ trợ mở rộng (dọc/ngang) dễ dàng, API đơn giản, eventual consistency (nhất quán cuối) và/hoặc transactions hạn chế thành phần liệu đơn lẻ, không giới hạn không gian liệu, Cơ sở liệu NoSQL đặc biệt phổ dụng thời kỳ Web 2.0 (1) bùng nổ, nơi mạng dịch vụ liệu cộng đồng cho phép người dùng tạo hàng tỷ nội dung web Do đó, liệu lớn nhanh vượt qua giới hạn phần cứng cần phải giải toán phân tán Số lượng hệ sở liệu theo NoSQL ngày nhiều Hiện có tất 150 hệ sở liệu NoSQL (2) Một số hệ sở liệu tiêu biểu như: MongoDB, CouchDB, BigTable, Cassandra… d) Một số thuật ngữ liên quan • Non-relational: relational - ràng buộc - thuật ngữ sử dụng đến mối quan hệ bảng sở liệu quan hệ (RDBMs) sử dụng mơ hình khóa gồm loại khóa: khóa khóa phụ (primary key + foreign key) để ràng buộc liệu nhằm thể tính quán liệu từ bảng khác Non-relational khái niệm không sử dụng ràng buộc liệu cho qn liệu NoSQL database • Distributed storage: mơ hình lưu trữ phân tán file liệu nhiều máy tính khác mạng LAN Internet kiểm sốt phần mềm • Eventual consistency (nhất quán cuối): tính quán liệu không cần phải đảm bảo tức khắc sau phép write Một hệ thống phân tán chấp nhận ảnh hưởng theo phương thức lan truyền sau khoảng thời gian (không phải tức khắc), thay đổi đến điểm hệ thống, tức cuối (eventually) liệu hệ thống trở lại trạng thái quán • Vertical scalable (khả mở rộng chiều dọc): Khi liệu lớn lượng, phương pháp tăng cường khả lưu trữ xử lý việc cải tiến phần mềm cải thiện phần cứng máy tính đơn lẻ gọi khả mở rộng chiều dọc Ví dụ việc tăng cường CPUs, cải thiện đĩa cứng, nhớ máy tính, cho DBMs nằm phạm trù Khả mở rộng chiều dọc cịn có thuật ngữ khác scale up • Horizontal scalable (khả mở rộng chiều ngang): Khi liệu lớn lượng, phương pháp tăng cường khả lưu trữ xử lý dùng nhiều máy tính phân tán Phân tán liệu hỗ trợ phần mềm tức sở liệu Trong giá thành phần cứng ngày giảm, tốc độ xử lý, nhớ ngày tăng horizontal scalable lựa chọn đắn Hàng trăm máy tính nhỏ chập lại tạo thành hệ thống tính tốn mạnh nhiều so với vi xử lý RISC truyền thống đơn lẻ Mô hình tiếp tục hỗ trợ cơng nghệ kết nối Myrinet InfiniBand Từ quản lý, bảo trì từ xa, xây dựng batch procession (xử lý đồng loạt tập lệnh) tốt Do đòi hỏi tốc độ xử lý I/O cao, lượng cực lớn liệu, scale horizontally thúc đẩy công nghệ lưu trữ phát triển giống object storage devices (OSD) • Deployment Flexibility (Triển khai linh hoạt): việc bổ sung thêm/loại bỏ node, hệ thống tự động nhận biết để lưu trữ mà không cần phải can thiệp tay Hệ thống khơng địi hỏi cấu hình phần cứng mạnh, đồng • Durability (Lưu trữ tốt): liệu tồn nhớ máy tính đồng thời lưu trữ lại đĩa cứng Phân loại NoSQL Tính có 150 sở liệu NoSQL (http://nosql-database.org/) Dựa theo đặc điểm thuộc tính số loại sở liệu NoSQL, chia chúng làm loại Thực chất việc chia chúng làm loại mang tính tương đối, dựa đặc điểm khác biệt tổng thể, chúng mang tính chất giống a) Dạng Column Families Stores Google’ BigTable khởi xướng mơ hình mà liệu lưu trữ định hướng cột Điều trái ngược với định hướng dòng RDBMs Lưu trữ theo cách định hướng cột cho phép liệu lưu trữ cách hiệu Phương pháp tránh lãng phí khơng gian lưu trữ lưu trữ giá trị null cách không lưu trữ cột giá trị cột khơng tồn (bằng null) Mỗi đơn vị liệu coi tập hợp cặp khố – giá trị, đơn vị xác định định danh chính, giống khố chính, có xu hướng gọi row-key Các đơn vị xếp dẫn dựa row-key Dưới ví dụ row-key: Thơng tin cá nhân cho sau: first_name: John last_name: Doe zip_code: 10001 gender: male Thông tin cá nhân khác: first_name: Jane zip_code: 94303 Row-key người thứ người thứ Dữ liệu lưu xếp theo thứ tự, có nghĩa liệu có row-key lưu trước liệu có row-key Hai liệu lưu liên tiếp Chỉ có cặp khoá – giá trị hợp lệ lưu trữ Một column-family ‘name’ với hàng first_name last_name Một column-family khác ‘location’ với zip_code Column-family ‘profile’ với hàng gender Trong lưu trữ hướng cột Bigtable, liệu lưu sở column-family Column-family định nghĩa cấu hình lúc bắt đầu chạy Bản thân cột khơng cần định nghĩa trình bày Ngồi ra, cột có khả lưu trữ loại liệu liệu tồn mảng bytes Một lưu trữ gồm loại: name, location profile Mỗi loại cặp khoágiá trị với giá trị hợp lệ lưu trữ Column-family ‘name’ với giá trị : For row-key: first_name: John last_name: Doe For row-key: first_name: Jane Column-family ‘location’ với giá trị : For row-key: zip_code: 10001 For row-key: zip_code: 94303 Column-family ‘profile’ với giá trị : For row-key: gender: male Trên thực tế, column-family phân tách cho hàng định Tất liệu liên quan đến row-key lưu trữ với Column-family hoạt động khố cho cột chứa row-key khoá cho liệu Dữ liệu lưu trữ theo trình tự liên tiếp Một liệu điền vào node, chia làm nhiều node Các liệu xếp dẫn không node mà khắp node, cung cấp tập hợp liệu lớn liên tục có trình tự Dữ liệu tồn chịu lỗi cách tạo liệu trì Hầu hết mơ hình tận dụng hệ thống tập tin có phân phối để lưu liệu vào không gian lưu trữ Hệ thống cho phép liệu lưu trữ cụm máy Cấu trúc xếp có dẫn làm cho việc tìm kiếm liệu hiệu Truy cập liệu ngẫu nhiên, thời đồng thời tìm kiếm đơn giản việc tìm kiếm node chuỗi chứa liệu Dữ liệu chèn vào cuối danh sách Cập nhật liệu thường thêm phiên đè lên liệu có Điều có nghĩa vài phiên trì thời điểm Đặc điểm phiên cấu hình Một số sở liệu NoSQL tiêu biểu cho dạng này: Hadoop/Hbase, Cassandra, Hypertable, Cloudata,… b) Dạng Key-Values Stores Một bảng băm hay danh sách liên kết cấu trúc liệu đơn giản chứa tập hợp cặp khố – giá trị (key-values) Cấu trúc liệu phổ biến chúng cung cấp khơng gian lưu trữ cách hiệu quả, độ phức tạp trung bình O(1) thuật tốn truy cập liệu Khoá cặp keyvalues giá trị dễ dàng tìm kiếm để truy cập liệu Cặp key-values có nhiều kiểu: số giữ liệu nhớ RAM số cung cấp khả để trì liệu disk Cặp key-values phân phối tổ chức cụm nút Một kiểu lưu trữ key-values khác sử dụng phổ biến lưu trữ nhớ cache Một nhớ cache cung cấp ảnh chụp nhớ liệu sử dụng nhiều ứng dụng Mục đích nhớ cache giảm thao tác đọc-ghi trực tiếp sở liệu lưu trữ “cứng” ổ đĩa Bộ nhớ đệm cache chiến lược phổ biến sử dụng cấp phần mềm máy tính để tăng hiệu suất Hệ điều hành, sở liệu, thành phần trung gian ứng dụng sử dụng nhớ đệm Một số sở liệu NoSQL tiêu biểu cho dạng này: DynamoDB, Redis, FoundationDB, BerkeleyDB, Voldermort,… c) Dạng Document Stores Document Stores (hay Document Databases) hệ thống quản lý văn Các nhà phát triển bắt đầu với NoSQL thường nhầm lẫn sở liệu văn với hệ thống quản lý nội dung Các giá trị Document Stores bao gồm cấu trúc key-values lỏng lẻo, điển hình JSON (JavaScript Object Notatin) khơng có tài liệu hay bảng tính (mặc dù chúng lưu trữ) Document Stores xử lý toàn ghi lúc tránh việc cắt nhỏ ghi thành giá trị key-values cấu thành nên Ở mức độ cao hơn, cho phép đặt ghi có chung đặc điểm vào liệu Document Stores cho phép lập mục cho ghi sở khơng đích danh khố mà tất mục bên Một số sở liệu NoSQL tiêu biểu cho dạng này: MongoDB, CouchDB, Couchbase,… d) Dạng Graph Databases Các dạng liệt kê phía dạng sở liệu NoSQL có Số lại sở liệu dạng biểu đồ sở liệu lưu trữ dạng XML Chúng coi sở liệu NoSQL Một số sở liệu NoSQL thuộc dạng tiêu biểu như: Neo4j FlockDB CHƯƠNG II – Kiến trúc NoSQL Sơ lược Các RDBMs bộc lộ yếu việc đánh mục lượng lớn liệu, phân trang, phân phối luồng liệu media (phim, ảnh, nhạc, ) Cơ sở liệu quan hệ thiết kế cho mơ hình liệu nhỏ thường xun đọc viết Social Network Services lại có lượng liệu cực lớn cập nhật liên tục số lượng người dùng nhiều thời điểm Thiết kế Distributed NoSQL giảm thiểu tối đa phép tính tốn, I/O liên quan kết hợp với batch processing đủ đảm bảo yêu cầu xử lý liệu mạng dịch vụ liệu cộng đồng Facebook, Amazon ví dụ điển hình Về bản, thiết kế NoSQL lựa chọn mơ hình lưu trữ tập liệu theo cặp giá trị key-value Khái niệm node sử dụng quản lý liệu phân tán Với hệ thống phân tán, việc lưu trữ có chấp nhận trùng lặp liệu Một yêu cầu truy vấn tới data gửi tới nhiều máy lúc, máy bị chết khơng ảnh hưởng nhiều tới tồn hệ thống Để đảm bảo tính thời gian thực hệ thống xử lý lượng lớn, thông thường người ta tách biệt sở liệu làm nhiều sở liệu Một sở liệu nhỏ đảm bảo vào liên tục, đạt tới ngưỡng thời gian dung lượng, sở liệu nhỏ gộp (merge) vào sở liệu lớn có thiết kế tối ưu cho phép đọc (read operation) Mơ hình cho phép tăng cường hiệu suất I/O - nguyên nhân khiến performance trở nên tốt so với SQL truyền thống Kiến trúc lưu trữ NoSQL a) NoSQL Column Families Trước tiên, sở liệu dạng Column Families thường áp đặt lược đồ (schema) đơn giản trước dễ dàng tạo thêm cột Trong NoSQL Column Families điển hình, người dùng thường có giới hạn trước column-family thường khơng phải cột Một column-family tập hợp cột nhỏ hơn, thường cột nhỏ có quan hệ logic với Chúng lưu trữ vật lý Trong NoSQL Column Families, column-family giống cột hệ thống RDBMS Chúng định nghĩa trước liệu lưu trữ thường thay đổi trình cập nhật Điểm khác biệt chúng khai báo cột bên hệ thống RDBMS phải khai báo loại liệu lưu trữ (INT, VARCHAR, TEXT,…), cịn NoSQL Column Families khơng có giới hạn Hơn nữa, NoSQL Column Families khơng lưu trữ giá trị null, cịn bên hệ thống RDBMS có Trong lưu trữ vật lý, liệu không lưu trữ theo “bảng” mà lưu thành nhiều column-family bảng Cơ sở liệu thiết kế thích ứng với quy mơ liệu cực lớn (hàng triệu cột * hàng tỉ hàng) Do kích thước nên bảng nằm nhiều máy chủ khác nhau, xác định row-key Ví dụ: Một bảng với số liệu sau: Table ‘people’ { } “row_key_1” : { “name” : { }, “location” : { }, “preferences” : { } }, “row_key_2” : { “name” : { }, “location” : { }, “preferences” : { } }, “row_key_3” : { “name” : { }, “location” : { }, “preferences” : { } } 10 c) NoSQL với Python Python ngơn ngữ lập trình mạnh mềm dẻo Ta hồn tồn sử dụng Python việc truy vấn đến sở liệu NoSQL thư viện mà sở liệu hỗ trợ Ví dụ với NoSQL Apache Cassandra, sử dụng thư viện Pycassa để thực truy vấn Thư viện cung cấp trực tiếp trang http://github.com/pycassa/pycassa Sau tải cài đặt vào thư viện Python, ta dễ dàng sử dụng thư viện cách: import pycassa Một số câu lệnh truy vấn khác, như: • Tạo kết nối đến sở liệu connection = pycassa.connect(‘database’) • Sử dụng column-families ‘people’ column_family = pycassa.ColumnFamily(connection, ‘post’) • Lấy liệu column_family.get() Cịn nhiều truy vấn khác nữa, đọc thêm tài liệu địa d) NoSQL với PHP PHP ngôn ngữ sử dụng nhiều thiết kế phát triển ứng dụng Web Ngồi việc tương thích tốt với sở liệu quan hệ RDBMS, PHP nhiều sở liệu NoSQL hỗ trợ, ví dụ Apache Cassandra Giống Python, Apache Cassandra hỗ trợ PHP với thư viện có tên phpcassa Thư viện phân phối dạng mã nguồn mở địa http://github.com/hoan/phpcassa Với phpcassa, việc truy vấn lấy toàn liệu sở liệu trình bày đây: 14 phpcassa_examle.php Ưu, nhược điểm NoSQL a) Ưu điểm NoSQL • Dễ dàng mở rộng quy mô liệu: Với dạng RDBMS, cần tăng quy mô liệu cần phải nâng cấp máy chủ - máy chủ có dung lượng khả xử lý cao Việc đòi hỏi chi phí lớn Trong với NoSQL, nâng cấp cần mở rộng thêm hàng ngang, tức thêm máy chủ (có tốc độ xử lý dung lượng dạng trung bình, có giá thành rẻ nhiều) vào hệ thống lưu trữ • Giải tốt sở liệu có kích thước truy cập lớn: Trong “cuộc cách mạng công nghiệp liệu” (O’Reilly), lực RDBMS gia tăng nhiều, việc xử lý giao dịch, truy vấn dần trở thành gánh nặng với RDBMS truyền thống NoSQL hồn tồn xử lý “khối liệu khổng lồ” này, vượt xa hồn tồn RDBMS truyền thống • Khơng thực cần DBAs (Database Administrators): Những hệ thống RDBMS lớn muốn trì cần hỗ trợ lớn từ DBAs chuyên nghiệp, giàu kinh nghiệm đào tạo kỹ lưỡng Những người có quan hệ mật thiết với việc thiết kế, lắp đặt điều chỉnh hệ thống RDBMS cách liên tục NoSQL thiết kế từ lên để giảm nhu cầu quản lý: tự động sửa chữa, phân phối liệu Hơn nữa, mơ hình liệu đơn giản nên theo lý thuyết, nhu cầu quản lý NoSQL thấp Tất nhiên cần người đóng vai trị tương-tự-như-DBAs, họ khơng cần q ưu việt 15 • Có hiệu kinh tế cao: Cơ sở liệu NoSQL thường sử dụng cụm máy chủ đại trà giá rẻ để quản lý lưu trữ liệu, RDBMS có xu hướng dựa máy chủ hệ thống lưu trữ độc quyền đắt tiền Kết chi phí cho gigabyte giao dịch/giây cho NoSQL thấp chi phí cho RDBMS nhiều lần , cho phép bạn lưu trữ xử lý liệu với mức giá thấp nhiều • Mơ hình liệu linh hoạt: Do khơng có cấu trúc (hoặc ít) nên việc thay đổi cấu trúc sở liệu NoSQL trở nên dễ dàng so với RDBMS nhiều Việc thay đổi cấu trúc liệu RDBMS đòi hỏi trình tính tốn cẩn thận, xảy khả hệ thống phải “chết” khoảng thời gian ngắn hiệu sử dụng hệ thống giảm đôi chút Tất nhiên thay đổi NoSQL cần địi hỏi chút tính tốn để tránh xảy tác dụng phụ không mong muốn tránh việc vi phạm tính tồn vẹn liệu b) Nhược điểm NoSQL Tuy có nhiều ưu điểm ưu việt, khơng khơng có thách thức riêng NoSQL • Khả tin cậy: RDBMS có lịch sử lâu dài thành công Những người ủng hộ NoSQL cho “tuổi thọ” cao RDBMS nguyên nhân dẫn đến lạc hậu Nhưng với đa số doanh nghiệp người sử dụng điều giúp họ yên tâm ổn định đa dạng chức Trong lựa chọn NoSQL đưa phiên bước đầu, số tính quan trọng chưa thực • Sự hỗ trợ bên phía nhà sản xuất: Đa số RDBMS có hỗ trợ từ nhà sản xuất cho doanh nghiệp xảy cố với hệ thống họ Trong hầu hết sở liệu NoSQL dạng mã nguồn mở Mặc dù số có hậu thuẫn cơng ty đơn vị hầu hết có quy mơ nhỏ thành lập có hỗ trợ nguồn lực (chủ yếu kinh phí) từ tổ chức lớn Oracle, IBM hay Microsoft… • Tính tương thích: Hầu hết NoSQL đời hoàn cảnh ứng dụng Web 2.0 đời (mạng xã hội, mạng kết nối, mạng chia sẻ…) Do tính NoSQL phát triển với xu hướng đáp ứng nhu cầu ứng dụng Việc tổng hợp, phân tích liệu để nâng cao khả hiệu cạnh tranh lĩnh vực kinh doanh thực chưa quan tâm nhiều NoSQL, hệ thống RDBMS hoàn tồn làm điều Trong khoảng thời gian gần đây, số tổ chức HIVE PIG cố phát triển ứng dụng phân tích 16 tổng hợp hệ thống NoSQL để tăng tính cạnh tranh cho hệ thống NoSQL • Quản trị: Một mục tiêu thiết kế NoSQL cung cấp giải pháp khơng địi hỏi quản trị, thực tế cịn khoảng cách xa thực điều NoSQL ngày địi hỏi nhiều kỹ để cài đặt nhiều nỗ lực để trì hệ thống • Chun mơn người quản lý: Có nhiều người có đầy đủ khả việc quản lý hệ thống RDBMS RDBMS đời lâu sử dụng thường xuyên Trong đó, người phát triển NoSQL trạng thái “đang tìm hiểu”, “đang nghiên cứu” Tất nhiên tình trạng dần giải theo thời gian, bây giờ, vị trí nhà tuyển dụng, việc tìm chuyên gia NoSQL thực khó khăn nhiều với so với việc tìm chuyên gia RDBMS 17 CHƯƠNG III – Apache Cassandra Apache Cassandra mã nguồn mở, phân tán, khơng tập trung hóa, khả mở rộng cao, tính sẵn sàng cao, chịu lỗi, tính quán, sở liệu hướng cột dựa sở thiết kế phân tán Dynamo Amazon mô hình liệu Bigtable Google Được tạo Facebook, sử dụng phổ biến số sites Web Đặc điểm Cassandra - - Tính phân tán khơng tập trung hố: Cassandra có khả chạy nhiều máy xuất trước mặt người dùng thể thống nhất, gọi cluster Một cluster bao gồm nhiều nút Tất nút hoạt động nhau, làm việc nhau, khơng có máy chủ đặc biệt điều phối hoạt động với mơ hình chủ/tớ MySQL, Bigtable nhiều hệ sở liệu khác Ưu điểm đặc điểm đơn giản mơ hình chủ tớ giúp tránh việc hệ thống ngừng hoạt động Các node giống nên việc thao tác trì lưu trữ dễ dàng so với mơ hình chủ/tớ Việc cài đặt nhiều nút khơng khác nhiều so với thiết lập nút Nói ngắn gọn, Cassandra phân phối không tập trung, khơng có điểm lỗi hỗ trợ sẵn sàng cao Khả mở rộng mềm dẻo Khả mở rộng đề cập đến tính mở rộng theo chiều ngang - thêm nhiều máy chứa tất phần liệu để khơng có máy phải chịu toàn gánh nặng yêu cầu phục vụ Nhưng sau phần mềm thân phải có chế nội để giữ liệu đồng với nút khác cluster Cluster mở rộng quy mơ giảm quy mô xuống cách liền mạch Để làm điều này, cụm phải có khả chấp nhận nút bắt đầu tham gia cách nhận số tất liệu bắt đầu phục vụ yêu cầu người sử dụng mà khơng có gián đoạn lớn cấu hình lại tồn cluster Người dùng khơng cần phải khởi động lại q trình, khơng cần thay đổi truy vấn ứng dụng, tự cân lại liệu Chỉ cần thêm máy - Cassandra tìm thấy làm hoạt động Mở rộng quy mơ xuống, tất nhiên, có nghĩa loại bỏ số khả xử lý cluster Người dùng phải làm điều di 18 - - - chuyển phần ứng dụng sang tảng khác, ứng dụng bị giảm số lượng người dùng cần phải bắt đầu bán bớt phần cứng.Chúng ta hy vọng điều khơng xảy Nhưng có, người dùng khơng cần phải phá vỡ tồn hệ thống để có quy mơ nhỏ lại Tính sẵn sàng cao khả chịu lỗi Tính sẵn sàng hệ thống đánh giá dựa khả đáp ứng yêu cầu hệ thống Một hệ thống đánh giá có tính sẵn sàng cao, thường phải bao gồm nhiều máy tính nối mạng,và phần mềm mà họ chạy phải có khả điều hành cluster có vài chế nhận diện lỗi node thông qua yêu cầu tới phần khác hệ thống Cassandra có tính sẵn sàng cao Người dùng thay nút lỗi cluster mà không gây thời gian chết, chép liệu đến nhiều trung tâm liệu cung cấp cải thiện hiệu giảm thời gian dừng trung tâm liệu phải đối mặt với thảm họa hỏa hoạn lũ lụt Tính quán cuối Tính quán có nghĩa thao tác đọc ln trả giá trị ghi Tuy nhiên, việc mở rộng quy mô lưu trữ liệu nghĩa phải đánh đổi tính quán, tính sẵn sàng khả chịu lỗi ( lựa chọn đặc điểm này) Và Cassandra ưu tiên tính sẵn sàng tính qn Vì thế, Cassandra có đặc điểm “tùy chỉnh tính qn”, tức cho phép người dùng điều chỉnh mức độ quán theo yêu cầu, cân nhắc với mức độ sẵn sàng Mức độ quán thiết lập mà client phải thao tác cho phép định bao nhiên cluster phải nhận biết thao tác ghi hay đáp ứng lại thao tác đọc để xem thành công Hướng cột Cassandra quan hệ, thể cấu trúc liệu hashtable đa chiều rải rác Rải rác nghĩa với dòng bất kỳ, người dùng có nhiều cột, dịng khơng cần phải có tất cột giống sở liệu quan hệ Mỗi dịng có khóa riêng làm cho liệu truy cập Cassandra lưu trữ liệu bảng băm đa chiều nên người dùng không cần phải định trước cấu trúc liệu nên nào, ghi cần trường gì… Điều có lợi người dùng vừa bắt đầu phát triển ứng dụng, 19 - - việc thêm vào loại bỏ chức thường xuyên Tuy nhiên, điều khơng có nghĩa người dùng hồn tồn khơng phải suy nghĩ cấu trúc liệu Thay thiết kế mơ hình liệu ban đầu sau thiết kế truy vấn xung quanh mơ hệ sở liệu quan hệ, người dùng tự nghĩ truy vấn trước, sau cung cấp liệu để trả lời truy vấn Schema – Free (không bị ràng buộc lược đồ) Cassandra yêu cầu người dùng định nghĩa container gọi keyspace chứa column family Keyspace thực chất namespace logic để giữ column family thuộc tính cầu hình cụ thể Ngồi ra, bảng liệu rải rác cần đưa liệu vào đó, sử dụng cột mong muốn, khơng cần phải định nghĩa trước cột Thay mơ hình hóa liệu cơng cụ mơ hình hóa đắt tiền, viết câu truy vấn Hiệu cao Cassandra thiết kế nhằm mục đích tận dụng ưu điểm máy đa xử lý/ đa lõi, để chạy nhiều nhiều máy nhiều trung tâm liệu với khối lượng liệu khổng lồ Cassandra hoạt động tốt chí tải công việc cao Thao tác ghi Cassandra thực nhanh chóng Khi người dùng thêm nhiều server, người dùng trì tất đặc tính mong muốn Cassandra mà khơng phải hy sinh hiệu hoạt động Kiến trúc a) Kết nối nút (giao thức Gossip) Gossip giao thức truyền thơng ngang hàng, nút định kỳ trao đổi thông tin trạng thái thân nút khác mà chúng biết Trong Cassandra, trình Gossip chạy giây nút trao đổi thơng báo trạng thái tối đa với nút khác cluster Các nút thông tin trao đổi thân nút khác mà họ biết, đó, tất nút nhanh chóng tìm hiểu tất nút khác cụm (cluster) Một Gossip có phiên liên kết với nó, q trình trao đổi tin đồn, với nút cụ thể thông tin cũ bị ghi đè trạng thái cập nhật b) Các thành viên cụm nút hạt giống Khi nút bắt đầu, nhìn vào tập tin cấu hình để xác định tên cụm Cassandra chứa nút gọi hạt giống để liên hệ, có thơng tin nút khác cluster Điểm liên lạc cụm cấu hình file cassandra.yaml cho nút 20 Để ngăn chặn đứt đoạn truyền thông tin đồn (gossip), tất nút cluster phải có danh sách nút hạt giống liệt kê tập tin cấu hình Điều quan trọng nút khởi động Theo mặc định, nút nhớ nút khác, có giao tiếp kể khởi động lại c) Trạng thái dò thất bại phục hồi Dị thất bại thơng qua trạng thái tin đồn (gossip), từ nút xác định xem nút khác hệ thống online hay offline Thơng tin dị thất bại sử dụng Cassandra để tránh định tuyến yêu cầu từ máy khách đến nút truy cập Node thất bại nhiều nguyên nhân khác thất bại phần cứng, mạng… Để thức thay đổi nút thành viên cluster, quản trị viên sử dụng tiện ích nodetool để thêm loại bỏ nút cụm Cassandra Tốt thường xuyên chạy nodetool sửa chữa tất nút để đảm bảo chúng toàn vẹn liệu, chạy repair sau hồi phục nút offline thời gian dài d) Phân vùng liệu Cassandra Khi khởi động cụm Cassandra, người dùng phải chọn cách thức liệu chia nút cluster Điều thực cách chọn phân vùng cho cluster Trong Cassandra, tổng số liệu quản lý cụm đại diện không gian vòng tròn Vòng tròn chia tương ứng với phạm vi số lượng nút, nút chịu trách nhiệm cho nhiều vùng toàn liệu Trước nút tham gia vịng, phải gán thẻ Thẻ xác định vị trí nút vịng trịn phạm vi liệu chịu trách nhiệm Các cột liệu phân chia qua nút dựa khóa hàng Để xác định nút dòng sống, vòng tròn quay theo chiều kim đồng hồ định vị nút với giá trị thẻ lớn giá trị khóa hàng Mỗi nút có trách nhiệm khu vực xác định vòng tròn thân nút chịu trách nhiệm khu vực liền kề nó.Với nút xếp theo thứ tự thẻ bài, nút cuối coi tiền thân nút 21 e) Nhân Cassandra Nhân trình lưu trữ liệu nhiều nút để đảm bảo độ tin cậy khả chịu lỗi Khi người dùng tạo keyspace (khơng gian khóa) Cassandra, người dùng phải có sách định vị trí sao: số lượng cách phân phối nút cluster Chiến lược nhân dựa cấu hình cụm để giúp xác định vị trí vật lý nút khoảng cách chúng Tổng số cluster thường gọi nhân tố nhân Một nhân tố nhân có nghĩa có hàng Một nhân tố nhân có nghĩa có hai cho hàng Tất quan trọng nhau, khơng có coi chính, phụ cách đọc ghi xử lý request Như quy luật chung, nhân tố nhân không vượt số lượng nút cluster Tuy nhiên, để tăng nhân tố nhân bản, sau thêm số lượng mong muốn nút sau Khi nhân tố nhân vượt số lượng nút, lệnh ghi bị từ chối, lệnh đọc phục vụ miễn đáp ứng mức độ quán (consistency level) Chiến lược xác định vị trí nhân : - SimpleStrategy cách mặc định tạo keyspace cách sử dụng Cassandra CLI SimpleStrategy đặt nút xác định partitioner(cách phân vùng) Bản bổ sung đặt nút vòng theo chiều kim đồng hồ mà khơng xem xét vị trí nút vị trí trung tâm liệu - NetworkTopologyStrategy chiến lược nhân ưa thích người dùng có thơng tin cách thức nút nhóm lại trung tâm liệu, 22 người dùng có (hoặc kế hoạch có) cluster triển khai nhiều trung tâm liệu Chiến lược cho phép xác định có người dùng muốn trung tâm liệu f) Snitches Snitch thành phần cấu hình cụm Cassandra sử dụng để xácđịnh nút nhóm lại với cấu trúc liên kết mạng tổng thể (rack nhóm trung tâm liệu) Cassandra sử dụng thông tin để định tuyến yêu cầu từ nút cách hiệu Snitch khơng ảnh hưởng đến u cầu ứng dụng khách hàng Cassandra (Nó khơng kiểm sốt client kết nối đến nút nào) Snitches cấu hình cho cụm Cassandra file cấu hình cassandra.yaml Tất nút cluster nên sử dụng cấu hình snitch Khi gán thẻ bài, gán chúng luân phiên (so le) cho Rack, ví dụ: rack1, rack2, rack3, rack1, rack2, rack3 Mơ hình liệu Cassandra Trong Cassandra, keyspace nơi chứa tất liệu ứng dụng, tương tự với sở liệu hay lược đồ sở liệu quan hệ Bên keyspace nhiều đối tượng column family tương tự bảng Các column family chứa cột tập cột xác định row key ứng dụng cung cấp Mỗi dòng column family khơng thiết phải có cột Cassandra không áp đặt quan hệ column family cách mà sở liệu quan hệ thực với bảng: khơng có khóa ngoại Cassandra, việc join column family truy vấn khơng hỗ trợ Mỗi column family có tập cột tự chứa dự định để truy nhập để thỏa mãn truy vấn từ ứng dụng a) Keyspaces Trong Cassandra, keyspace nơi chưa liệu cho ứng dụng, giống lược đồ sở liệu quan hệ keyspace dùng để nhóm column family lại với Thường cluster có column family cho ứng dụng Việc nhân điều khiển sở keyspace, liệu có u cầu nhân khác nên đặt keyspace khác Keyspace không thiết kế để sử dụng lớp đồ quan trọng mơ hình liệu, mà cách để điều khiển việc nhân liệu cho tập column family 23 b) Column-Families Trong Cassandra, người dùng định nghĩa column family Các column family (và nên) định nghĩa metadata cột, cột thực tạo thành dòng xác định ứng dụng Mỗi dịng có số lượng cột khác Mặc dù column family linh hoạt, thực column family khơng hồn tồn khơng có lược đồ Mỗi column family nên thiết kế để chứa kiểu liệu Có kiểu mẫu thiết kế column family phổ biến Cassandra: column family động tĩnh Một column family tĩnh sử dụng tập tương đối cố định tên cột cột giống với sở liệu quan hệ Ví dụ, column family lưu trữ liệu người dùng có cột tên người dùng, địa chỉ, email, số điện thoại… Mặc d ù dòng có tập cột, chúng khơng bắt buộc phải có giá trị xác định cho tất cột Column family tĩnh thường có metadata đĩnh nghĩa trước cho cột Một column family động tận dụng ưu điểm khả Cassandra để dùng tên cột mà ứng dụng cung cấp để lưu trữ liệu Một column family động cho phép tính tốn trước tập kết lưu chúng dòng đơn để truy vấn liệu hiệu Mỗi dòng snapshot liệu thỏa mãn truy vấn cụ thể c) Columns Cột đơn vị liệu nhỏ Cassandra Nó gồm có tên, giá trị, nhãn thời gian Một cột phải có tên, tên nhãn tĩnh (như “tên”, hay “email”) đặt tự động cột tạo ứng dụng Cột đánh mục theo tên Tuy nhiên, mọt hạn chế mục cột chúng không hỗ trợ truy vấn yêu cầu truy nhập đến liệu có thứ tự, liệu chuỗi thời gian Trong trường hợp này, mục thứ cấp cột nhãn thời gian khơng đủ người dùng diều khiển thứ tự xếp cột với mục thứ cấp Với trường hợp thứ tự xếp quan trọng, việc trì thủ cơng column family mục cách khác để tra cứu cột liệu xếp theo thứ tự Một cột không thiết phải có giá trị Đơi tất thông tin ứng dụng cần để thỏa mãn truy vấn lưu trữ tên cột Ví dụ, người dùng sử dụng column family nhìn cụ thể hóa dể truy vấn dịng từ column family khác, tất người dùng cần lưu trữ khóa dịng mà người dùng tìm kiếm, giá trị trống 24 Cassandra sử dụng cột nhãn thời gian để xác định cập nhật gần cột Nhãn thời gian cung cấp ứng dụng Nhãn thời gian gần đạt dược yêu cầu liệu, nhiều phiên cập nhật cột dịng lúc cập nhập cập nhật tồn Cài đặt Cassandra Cài đặt hệ điều hành Ubuntu 13.04 : Yêu cầu hệ thống : Cài đặt Java 7, tốt Oracle/Sun JVM Cassandra chạy tốt với OpenJDK IBM JVM Cassandra không chạy JRockit Cách cài đặt : • Download phiên Cassandra trang chủ http://cassandra.apache.org/download/ • Giải nén gói tải • Cài đặt thư mục data_file_directories, commitlog_directory saved_caches_directory • Khởi động Cassandra câu lệnh 'bin/cassandra -f' command line Demo Cassandra 25 NHẬN XÉT CỦA THẦY HƯỚNG DẪN: ……………………………………….………………… ……………………………………….………………… ……………………………………….………………… ……………………………………….………………… ……………………………………….………………… ……………………………………….………………… ……………………………………….………………… ……………………………………… …………………………………………………………… …… …………………………………………………………… …….… ……………………………………………………… ………………………………………………………… ………………………………………………………… ………………………………………………………… ………………………………………………………… …………………………………………………………… 26 TÀI LIỆU THAM KHẢO • • • • • • • Cuốn Professtional NoSQL, Shashank Tiwarri Cuốn Cassandra – The Definitive Guide, Eben Hewitt Trang web: http://nosql-database.org/ Trang web: http://cassandra.apache.org/ Trang web: http://mongodb.org/ Tài liệu pycassa, phpcassa trang http://github.com/ Một số nguồn internet khác 27 28

Ngày đăng: 30/10/2023, 16:00

w