NoSQL cung cấp cơ chế mô hình hoá, lưu trữ và truy xuất dữ liệu theo cáchthức khác so với sử dụng các bảng trong Cơ sở dữ liệu quan hệ.. NoSQL bao gồm rất nhiều công nghệ cơ sở dữ liệu k
Trang 1NGÂN HÀNG NHÀ NƯỚC VIỆT NAM BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NGÂN HÀNG THÀNH PHỐ HỒ CHÍ MINH
-THUYẾT MINH
ĐỀ TÀI: TÌM HIỂU VỀ CSDL NoSQL TÌM HIỂU VÀ CÀI ĐẶT CASSANDRA CHO VÍ DỤ MINH HỌA THIẾT KẾ CSDL VÀ THỰC HIỆN CÁC THAO TÁC
NHÓM THỰC HIỆN: NHÓM 02
HỌC PHẦN: PHÂN TÍCH DỮ DIỆU LỚN
Trang 3MỤC LỤC
I Tìm hiểu cơ sở dữ liệu NoSQL 1
1 Khái niệm 1
2 Vì sao nên sử dụng cơ sở dữ liệu NoSQL 2
3 Các loại cơ sở dữ liệu NoSQL 2
4 Ví dụ về hoạt động của NoSQL 4
Xác thực với MongoDB Atlas 4
Tạo một cụm trong MongoDB 4
Truy vấn cơ sở dữ liệu 5
Data Explorer 6
5 Ưu điểm và nhược điểm của NoSQL 6
II Cài đặt CASSANDRA 7
1 CÁCH CÀI ĐẶT MÁY ẢO VMWARE 7
Trang 41 Tạo Keyspace: 41
2 Tạo và chỉnh sửa bảng: 42
2.1 Tạo bảng: 42
2.2 Xem cấu trúc bảng: 42
2.3 Chỉnh sửa bảng: 42
3 Truy vấn dữ liệu: 43
4 Chèn và cập nhật dữ liệu trong bảng: 43
4.1 Chèn dữ liệu sử dụng cú pháp sau: 43
4.2 Cập nhật dữ liệu: 44
5 Xóa dữ liệu: 44
Trang 5I Tìm hiểu cơ sở dữ liệu NoSQL
1 Khái niệm
NoSQL là một khái niệm chỉ về một lớp các hệ cơ sở dữ liệu không sử dụng môhình quan hệ (RDBMS) RDBMS vốn tồn tại khá nhiều nhược điểm như cóhiệu năng không tốt nếu kết nối dữ liệu nhiều bảng lại hay khi dữ liệu trong mộtbảng là rất lớn
NoSQL ra đời năm 1998 bởi Carlo Strozzi khi ông lập mới một hệ cơ sở dữ liệuquan hệ mã nguồn mở nhanh và nhẹ không liên quan đến SQL Vào năm 2009,Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL khi JohanOskarsson của Last.fm muốn tổ chức một hội thảo về cơ sở dữ liệu nguồn mởphân tán Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ CSDL mới:phân tán (distributed) + không ràng buộc (non-relational)
NoSQL cung cấp cơ chế mô hình hoá, lưu trữ và truy xuất dữ liệu theo cáchthức khác so với sử dụng các bảng trong Cơ sở dữ liệu quan hệ
NoSQL bao gồm rất nhiều công nghệ cơ sở dữ liệu khác nhau được phát triển
để đáp ứng các yêu cầu được đưa ra trong việc xây dựng các ứng dụng hiện đại:
- Các nhà phát triển đang làm việc với các ứng dụng tạo ra khối lượng lớn cácloại dữ liệu mới, thay đổi nhanh chóng - dữ liệu có cấu trúc, bán cấu trúc,không cấu trúc và đa hình
- Lâu rồi là chu kỳ phát triển thác nước mười hai đến mười tám tháng Bâygiờ các nhóm nhỏ làm việc trong các lần chạy nước rút nhanh, lặp lại nhanhchóng và đẩy mã mỗi tuần hoặc hai, một số thậm chí nhiều lần mỗi ngày
Trang 6Cơ sở dữ liệu quan hệ không được thiết kế để đối phó với các thách thức thayđổi quy mô rất nhanh trong các ứng dụng hiện đại, chúng cũng không được xâydựng để tận dụng khả năng lưu trữ và xử lý dữ liệu hiện có.
2 Vì sao nên sử dụng cơ sở dữ liệu NoSQL
Cơ sở dữ liệu NoSQL là lựa chọn cực kỳ thích hợp cho nhiều ứng dụng hiệnđại, ví dụ như di động, web và trò chơi đòi hỏi phải sử dụng cơ sở dữ liệu cực
kỳ thiết thực, linh hoạt, có khả năng thay đổi quy mô và hiệu năng cao để đemđến cho người dùng trải nghiệm tuyệt vời
- Linh hoạt: Cơ sở dữ liệu NoSQL thường cung cấp các sơ đồ linh hoạt giúpcông đoạn phát triển nhanh hơn và có khả năng lặp lại cao hơn Mô hình dữliệu linh hoạt biến cơ sở dữ liệu NoSQL thành lựa chọn lý tưởng cho dữ liệukhông được tổ chức thành cấu trúc hoặc có cấu trúc chưa hoàn chỉnh
- Khả năng thay đổi quy mô: Cơ sở dữ liệu NoSQL thường được thiết kế đểtăng quy mô bằng cách sử dụng các cụm phần cứng được phân phối thay vìtăng quy mô bằng cách bổ sung máy chủ mạnh và tốn kém Một số nhà cungcấp dịch vụ đám mây xử lý các hoạt động này một cách không công khaidưới dạng dịch vụ được quản lý đầy đủ
- Hiệu năng cao: Cơ sở dữ liệu NoSQL được tối ưu hóa theo các mô hình dữliệu cụ thể và các mẫu truy cập giúp tăng hiệu năng cao hơn so với việc cốgắng đạt được mức độ chức năng tương tự bằng cơ sở dữ liệu quan hệ
- Cực kỳ thiết thực: Cơ sở dữ liệu NoSQL cung cấp các API và kiểu dữ liệucực kỳ thiết thực được xây dựng riêng cho từng mô hình dữ liệu tương ứng
3 Các loại cơ sở dữ liệu NoSQL
- Khóa–giá trị: Cơ sở dữ liệu khóa–giá trị có khả năng phân mảnh cao và chophép thay đổi quy mô theo chiều ngang ở các quy mô lớn mà các loại hình
cơ sở dữ liệu khác không thể làm được Mô hình dữ liệu khóa–giá trị đượcdùng cho trò chơi, công nghệ quảng cáo và đặc biệt thích hợp cho IoT.Amazon DynamoDB được thiết kế để có độ trễ ổn định chỉ vài mili giây chokhối lượng công việc thuộc quy mô bất kỳ Hiệu năng ổn định này là lý do
Trang 7Cơ sở dữ
20
Trang 8chính để di chuyển tính năng Stories của Snapchat (kể cả khối lượng côngviệc ghi lưu trữ lớn nhất của Snapchat) sang DynamoDB.
- Tài liệu: Trong mã ứng dụng, dữ liệu thường được biểu diễn dưới dạng mộtđối tượng hoặc văn bản dạng JSON vì đây là mô hình dữ liệu hiệu quả vàtrực quan cho các nhà phát triển Cơ sở dữ liệu văn bản giúp nhà phát triển
dễ dàng lưu trữ và truy vấn dữ liệu trong một cơ sở dữ liệu bằng cách sửdụng cùng một định dạng mô hình văn bản họ sử dụng trong mã ứng dụngcủa mình Tính chất linh hoạt, bán cấu trúc và phân cấp của các văn bản và
cơ sở dữ liệu văn bản cho phép chúng phát triển phù hợp với yêu cầu củaứng dụng Mô hình văn bản phát huy hiệu quả với danh mục, hồ sơ ngườidùng và hệ thống quản lý nội dung, nơi từng văn bản là duy nhất và pháttriển theo thời gian và MongoDB là các cơ sở dữ liệu văn bản phổ biếncung cấp các API mạnh mẽ và trực quan để phát triển linh hoạt và lặplại.Amazon DocumentDB (với khả năng tương thích MongoDB)
- Đồ thị: Mục đích của cơ sở dữ liệu đồ thị là giúp việc dựng và chạy ứngdụng hoạt động với các bộ dữ liệu có khả năng kết nối cao trở nên dễ dàng
Cơ sở dữ liệu đồ thị thường được sử dụng cho các đồ thị tri thức, mạng xãhội, công cụ đề xuất và phát hiện lừa đảo Amazon Neptune là dịch vụ cơ sở
dữ liệu đồ thị được quản lý đầy đủ Neptune hỗ trợ cả mô hình Đồ thị thuô ‰ctính lẫn Framework mô tả tài nguyên (RDF), cung cấp cho người dùng lựachọn hai API đồ thị: TinkerPop và RDF/SPARQL Các cơ sở dữ liệu đồ thịphổ biến gồm có Neo4j và Giraph
- Trong bộ nhớ: Ứng dụng trò chơi và công nghệ quảng cáo đã sử dụng loại
Cơ sở dữ liệu này trong nhiều trường hợp như bảng xếp hạng, kho lưu trữphiên và phân tích thời gian thực yêu cầu thời gian phản hồi đạt mức microgiây và lưu lượng có thể đạt mức đỉnh điểm vào bất kỳ thời điểm nào.Amazon MemoryDB for Redis là một dịch vụ cơ sở dữ liệu trong bộ nhớ,bền, tương thích với Redis có chức năng đảm bảo độ trễ của thao tác đọctính bằng micro giây, độ trễ của thao tác ghi chưa đến mười mili giây và độbền trên nhiều vùng sẵn sàng MemoryDB được xây dựng với mục đích đem
Preparing Vocabulary FOR UNIT 6
10
Trang 9lại độ bền và hiệu suất cực nhanh để bạn có thể sử dụng làm cơ sở dữ liệuchính cho các ứng dụng vi dịch vụ, hiện đại Amazon ElastiCache là dịch vụ
bộ nhớ đệm trong bộ nhớ được quản lý hoàn toàn, tương thích với cả Redis
và Memcached để phục vụ khối lượng công việc có độ trễ thấp, thông lượngcao Các khách hàng yêu cầu khả năng phản hồi theo thời gian thực cho ứngdụng của mình như Tinder phụ thuộc vào những kho lưu trữ dữ liệu trong bộnhớ hơn là lưu trữ dữ liệu trên đĩa Amazon DynamoDB Accelerator (DAX)
là ví dụ khác về kho dữ liệu được xây dựng chuyên dụng DAX giúpDynamoDB đọc nhanh hơn rất nhiều
- Tìm kiếm: Nhiều ứng dụng xuất nhật ký để giúp nhà phát triển khắc phục sự
cố Dịch vụ OpenSearch của Amazon được xây dựng nhằm mục đích cungcấp hình ảnh trực quan và phân tích gần như trong thời gian thực về các dữliệu do máy tạo bằng cách lập chỉ mục, tập hợp và tìm kiếm trong các nhật
ký và chỉ số bán cấu trúc Dịch vụ OpenSearch của Amazon cũng là công cụtìm kiếm mạnh mẽ, có hiệu suất cao cho các trường hợp sử dụng tìm kiếmtoàn bộ văn bản Expedia đang sử dụng trên 150 miền Dịch vụ OpenSearchcủa Amazon, 30 TB dữ liệu và 30 tỷ văn bản cho nhiều chức năng đóng vaitrò quan trọng, từ theo dõi và khắc phục sự cố trong khâu vận hành đến tối
ưu hóa quá trình theo dấu và định giá chồng ứng dụng được phân phối
4 Ví dụ về hoạt động của NoSQL
NoSQL có nhiều loại, tuy nhiên DB – Engines đánh giá là phổ biến nhất thếgiới
Trang 10Cụm là một vị trí để lưu trữ dữ liệu ở MongoDB Cách tạo khá đơn giản, cóthể sử dụng cách thủ công hoặc dùng ngôn ngữ lập trình để tạo một cụm Khi
đã tạo thành công, dữ liệu sẽ bắt đầu được lưu trữ
Truy vấn cơ sở dữ liệu
Truy vấn bằng Atlas Data Explorer:
Bước 1: Điều hướng đến Data Explorer xuất hiện bảng điều khiển.
Bước 2: Click vào sample – mflix ở bên trái trong bảng điều khiển sẽ hiển thị
các bộ sưu tập của cơ sở dữ liệu
Bước 3: Chọn bộ sưu tập movies, lúc này ở bên phải bảng sẽ hiển thị 20 kết
quả tìm thấy đầu tiên
Bước 4: Truy vấn bộ phim “Pride and Prejudice” bằng cách nhập {title:
“Pride and Prejudice”} vào thanh Filter và nhấn Apply Kết quả là bạn đãtruy vấn thành công cơ sở dữ liệu NoSQL
Trang 11Data Explorer
Có thể thực hiện nhiều tác vụ trong MongoDB và Atlas bằng Data Explorernhư thêm, chỉnh sửa và xóa tài liệu Ngoài ra còn có thể mở chế độMongoDB Charts để trực quan hóa dữ liệu của mình
5 Ưu điểm và nhược điểm của NoSQL
Trang 12- Sử dụng kiến trúc quy mô phân tán theo vị trí địa lý thay vì kiến trúcnguyên khối tốn kém.
- Không cần máy chỉ hiệu năng cao chuyên dụng
- Không giới hạn lưu trữ dữ liệu và người dùng hệ thống (High Scalability)
- NoSQL chấp nhận lưu trữ dữ liệu trùng lặp nên khi một node (commoditymachine) nào đó bị chết cũng sẽ không ảnh hưởng tới toàn bộ hệ thống(High Availability - HA), khả năng tái tạo dễ dàng
- Mô hình hóa, truy vấn và deploy linh hoạt, việc bổ sung thêm/loại bỏ cácnode, hệ thống sẽ tự động nhận biết để lưu trữ mà không cần phải can thiệpthủ công
- Thiết kế phân tán nên NoSQL giảm thiểu tối đa được các phép tính toán,I/O liên quan kết hợp với batch processing đảm bảo đủ xử lý các yêu cầu dữliệu
- Có thể đảm nhận vai trò như một nguồn dữ liệu chính cho các ứng dụngtrực tuyến
Nhược điểm:
- NoSQL chấp nhận tính nhất quán yếu do vậy cập nhật mới không đảm bảorằng các truy xuất sau đó sẽ thấy ngay được sự thay đổi Sau một khoảngthời gian lan truyền (không xác định) thì tính nhất quán cuối cùng của dữliệu mới sẽ được đảm bảo
- Không có quy tắc chuẩn hóa và lược đồ cụ thể nên trách nhiệm sẽ đượcchuyển từ CSDL sang các nhà phát triển ứng dụng
- Khả năng truy vấn hạn chế, không hoạt động tốt với dữ liệu quan hệ
- Khi khối lượng dữ liệu tăng lên, rất khó để duy trì các giá trị duy nhất
- Hạn chế kỹ năng chuyên môn mở một mức nào đó đối với người sử dụng,các nhà phát triển mới
- Khó khăn khi thay đổi hệ thống trong quá trình làm việc
II Cài đặt CASSANDRA
1 CÁCH CÀI ĐẶT MÁY ẢO VMWARE
Trang 13Đầu tiên truy cập vào đường link để tải phần mềm cài đặt máy ảo VMware:https://rg.link/mKIZBVn
Giải nén file ra với pass là: #ainhi205
Trang 14Hình 1 Chạy file được giải nén ra
Hình 2 Bấm Next
Bấm next
Trang 15Hình 3.Đồng ý các điều khoản của VMware
Trang 16Hai cái này dành cho chuyên gia, chúng ta là những người dùng cơ bản nên là khôngcần tích.
Trang 18Chọn Finish đẻ hoàn tất việc cài đặt VMware.
Khởi động phầm mềm bằng cách double chuột vào icon ngoài desktop hoặc gõ từ khóaVMware trên thanh tìm kiếm để khởi động phầm mềm
Trang 19Cần nhập key để bắt đầu sử dụng phầm mềm.
KEY: ZF3R0-FHED2-M80TY-8QYGC-NPKYF
Trang 20Sau khi tải xong ta bắt đầu cài vào máy ảo
Click vào “ Create a new Virtual Machine” để khởi tạo 1 máy ảo mới.
Chọn “custom” để có thể set up cấu hình
Trang 21Next
Trang 22Chọn Browse sau đó chọn đường dẫn thư mục lúc nảy đã tải hệ điều hành ubuntu20.04 về.
Click file mới tải về
Next
Trang 23Đặt tên
Trang 24Chọn số nhân và số luồng CPU cho máy ảo
Chỉnh theo nhu cầu
Mình hay để 2-2
Chọn số ram cấp phát cho máy ảo
Mình hay để 4096mb
Trang 25Next
Trang 26Next
Trang 27Cấp phát bộ nhớ cho máy ảo
Chọn size theo nhu cầu nhưng tốt nhất là > 10GB
Trang 28Next
Trang 29Finish
Trang 30Máy ảo bắt đầu khởi tạo
Enter để thiết lập hệ điều hành
Trang 31Chờ đợi là hạnh phúc, chờ nó hiện màn hình như vầy và nổi nhạc là được
Trang 32Install
Chọn ngôn ngữ bạn muốn sữ dụng ở đây mình dùng Enghlis ( US ) cho dễ dùng Vì nókhông có tiếng Việt
Trang 35Chọn khu vực quốc gia để thiết lập thời gian
Trang 37Đợi cho nó cài đặt xong
Sau khi hoàn tất quá trình cài đặt hệ thống sẽ yêu cầu khởi động lại máy ảo
Trang 38Đăng nhập vào máy của bạn
Sau khi khởi động lại ta sẽ vào được máy ảoTiếp theo chúng ta sẽ cài đặt cassandra vào máy ảo
Trang 392 CÀI ĐẶT CASSANDRA TRÊN MÁY ẢO VMWARE
Bước 1: Cài đặt Java trên Ubuntu
Quá trình cài đặt Apache Cassandra bắt đầu bằng việc kiểm tra xem Java đã được càiđặt chưa Cụ thể hơn, OpenJDK là thứ cần thiết để hoạt động liền mạch với ApacheCassandra Việc cài đặt một phiên bản khác có nhiều khả năng gây ra lỗi trong quátrình cấu hình
Để kiểm tra xem Java đã được cài đặt hay chưa, hãy chạy lệnh:
Trang 40Để cài đặt OpenJDK, hãy thực hiện lệnh apt sau.
$ sudo apt-get update
Trang 41Tiếp theo là câu lệnh:
$ sudo apt install openjdk-8-jdk
Trang 42Nhập “ Y “ đề đồng ý cài đặt.
Một lần nữa, xác nhận rằng Java đã được cài đặt bằng cách chạy lệnh
Sau khi cài xong ta sẽ kiểm tra lại
Kiểm tra phiên bản Java trong Ubuntu
Bước 2: Cài đặt Apache Cassandra trong Ubuntu
Trang 43Với Java đã được cài đặt, chúng ta sẽ tiến hành cài đặt Apache Cassandra Đầu tiên,hãy cài đặt gói apt-transport-https để cho phép truy cập các kho thông qua giao thứchttps.
$ sudo apt install apt-transport-https
Tiếp theo, nhập khóa GPG bằng lệnh wget sau như được hiển thị
$ wget q O https://www.apache.org/dist/cassandra/KEYS | sudo aptkey add
-Sau đó, thêm kho lưu trữ của Apache Cassandra vào tệp danh sách nguồn của hệ thốngnhư được hiển thị
$ sudo sh -c 'echo "deb http://www.apache.org/dist/cassandra/debian 311x main">/etc/apt/sources.list.d/cassandra.list'
Trước khi cài đặt Apache Cassandra, bạn cần cập nhật danh sách gói trước
$ sudo apt update
Sau đó cài đặt cơ sở dữ liệu NoSQL bằng lệnh:
$ sudo apt install cassandra
Trang 44$ sudo systemctl status cassandra
Kết quả bên dưới xác nhận rằng Cassandra đang hoạt động như mong đợi
Kiểm tra Trạng thái Apache Cassandra
Ngoài ra, bạn có thể xác minh số liệu thống kê của nút bằng cách chạy lệnh
$ sudo nodetool status
Kiểm tra trạng thái nodetool
Để đăng nhập vào Cassandra trên thiết bị đầu cuối, sử dụng lệnh:
$ cqlsh
Trang 45III Thao tác với cơ sở dữ liệu và các ví dụ minh họa:
1 Tạo Keyspace:
Trước khi tạo Keyspace bạn phải đăng nhập vào Cassandra, cách đăng nhập các bạn có
thể xem bài viết tạo user và cấp quyền nhé.
Cú
pháp:
cassandra@cqlsh> CREATE KEYSPACE keyspace_name WITH replication ={'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;hoặc
cassandra@cqlsh> CREATE KEYSPACE keyspace_name WITH replication = { 'class': 'NetworkTopologyStrategy'[, '<data center>' : <integer>, '<data center>' : <integer>] }; AND durable_writes = true;
Trong đó keyspace_name là tên Keyspace muốn tạo
Trang 462.3 Chỉnh sửa bảng:
Ví dụ thêm class vào bảng manager đã tạo sử dụng cú pháp:
root@cqlsh:keyspace_test> ALTER TABLE manager ADD address text;
3 Truy vấn dữ liệu:
Để truy vấn dữ liệu sử dụng lệnh SELECT
SELECT * FROM manager;
Trang 485 Xóa dữ liệu:
cqlsh:keyspace1> DELETE FROM manager WHERE en=001;
Trang 5010