CSDL quan hệ được thiết kế cho những mô hình dữ liệu không quá lớn trong khi các dịch vụ mạng xã hội lại có một lượng dữ liệu cực lớn và cập nhật liên tục do số lượng người dùng quá nhiề
Trang 1ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỜNG DẪN KHOA HỌC:
THẦY TS NGUYỄN GIA TUẤN ANH
TP HỒ CHÍ MINH – 2015
Trang 2LỜI CẢM ƠN
Khóa luận Thạc Sỹ này được thực hiện tại Trường Đại Học Công Nghệ Thông Tin TP
Hồ Chí Minh Để hoàn thành khóa luận này, tôi xin tỏ lòng biết ơn sâu sắc và gửi lời
cảm ơn chân thành đến Thày TS Nguyễn Gia Tuấn Anh, đã tận tình hướng dẫn, giúp
đỡ cho tôi trong suốt quá trình thực hiện khóa luận tốt nghiệp
Tôi xin chân thành cảm ơn quý thày, Cô trong khoa khoa học máy tính và phòng sau đại học của Trường Đại Học Công Nghệ Thông Tin TP Hồ Chí Minh đã tận tình truyền đạt kiến thức, tạo điều kiện thuận lợi về mặt thủ tục cho hoạt động học tập và thực hiện khóa luận của tôi
Tôi cũng xin gửi lời cảm ơn tới các anh chị và các bạn lớp cao học khóa 8 đã giúp tôi rất nhiều trong quá trình học tập cũng như hoàn thành khóa luận
Cuối cùng, tôi xin được bày tỏ lòng biết ơn sâu sắc tới gia đình, bạn bè đã luôn động viên, khích lệ tinh thần để tôi có đủ nghị lực hoàn thành khóa luận thạc sỹ
TP Hồ Chí Minh, tháng 11, năm 2015
Trần Thị Yến Nhi
Trang 3LỜI CAM ĐOAN
Tôi cam đoan các kết quả tìm hiểu đưa ra trong khóa luận này dựa trên các kết quả thu được trong quá trình tìm hiểu của riêng tôi
Nội dung của khóa luận có tham khảo và sử dụng một số thông tin, tài liệu từ các nguồn sách, tạp chí, website được liệt kê trong danh mục các tài liệu tham khảo
TP Hồ Chí Minh, tháng 11, năm 2015
Trần Thị Yến Nhi
Trang 4LỜI MỞ ĐẦU
Với sự phát triển không ngừng nghỉ của ngành công nghệ thông tin, dữ liệu xung quanh chúng ta được tạo ra lớn hơn bao giờ hết Dữ liệu tăng lên rất nhanh, vượt qua giới hạn xử lý của các hệ quản trị cơ sở dữ liệu truyền thống Việc lưu trữ và khai thác lượng dữ liệu khổng lồ này để lọc ra được những dữ liệu hữu dụng quả là một thử thách lớn nhất mà người ta gặp phải trong xã hội hiện đại Các hệ cơ sở dữ liệu quan hệ (RDBM) hiện tại bộc lộ những yếu kém Do đó trong những năm gần đây, càng ngày càng có nhiều loại CSDL NoSQL được nghiên cứu và phát triễn, những CSDL này đặc biệt thích hợp cho các ứng dụng cực lớn và nhỏ, giảm thiểu tối đa các phép tính toán, tác vụ đọc-ghi với khả năng chịu tải, chịu lỗi cao nhưng chỉ đòi hỏi về tài nguyên phần cứng thấp
Trong luận văn này tôi sẽ từng bước tìm hiểu CSDL NoSQL và tập trung vào tìm hiểu sâu hơn về hệ quản trị CSDL MongoDB Từ kết quả tìm hiểu, tiến đến xây dựng ứng dụng mạng xã hội minh họa
Trong luận văn này sẽ từng bước thực hiện các bước theo trình tự sau :
Tìm hiểu CSDL NoSQL, so sánh CSDL NoSQL và CSDL quan hệ truyền thống
Tìm hiểu các loại CSDL NoSQL và đặc trưng giữa các loại CSDL này
Tìm hiểu về hệ quản trị CSDL MongoDB
Phân tích và xây dựng ứng dụng mạng xã hội minh họa
Khóa luận xây dựng một ứng dụng mạng xã hội để minh họa cho những kiến thức đã tìm hiểu được về NoSQL với đại diện MongoDB Trong ứng dụng, sử dụng ngôn ngữ lập trình ASP.Net để xây dựng ứng dụng, nhằm khai thác được những tính năng mạnh mẽ của ngôn ngữ lập trình này Ứng dụng chỉ mang tính minh họa nên chỉ đáp ứng được những tính năng cơ bản nhất của một ứng dụng mạng xã hội
Trang 5MỤC LỤC
Chương 1: TỔNG QUAN 15
1.1 Tính khoa học và tính mới của đề tài - 15
1.2 Lý do chọn đề tài - 16
1.3 Mục tiêu nghiên cứu - 17
1.4 Đối tượng nghiên cứu - 17
1.5 Phạm vi nghiên cứu - 17
1.6 Phương pháp thực hiện: - 17
1.7 Dự kiến kết quả đạt được: - 18
1.8 Dự kiến cấu trúc luận văn sẽ thực hiện: - 18
Chương 2: C S D LI U NOSQL 19
2.1 NoSQL là gì - 19
2.2 Lịch Sử - 20
2.3 Kiến trúc lưu trữ của NoSQL - 20
2.3.1 Sơ lược 20
2.3.2 Một số đặc điểm 22
2.3.3 Kiến trúc lưu trữ 22
2.4 Các thuật ngữ cơ bản - 23
2.4.1 Phi lược đồ Schemaless 23
2.4.2 Lý thuyết C P 24
2.4.3 ase và CID 26
2.4.4 Nhất quán cuối Eventual consistency) 27
2.4.5 Điều khiển đồng thời đa phiên bản MVCC 27
2.4.6 Khả năng mở rộng và hiệu suất 28
Trang 62.5 Đặc điểm của cơ sở dữ liệu NoSQL - 30
2.6 Điểm khác biệt giữa NoSQL và SQL - 32
2.7 u và nhược điểm - 33
2.7.1 u điểm: 33
2.7.2 Nhược điểm: 34
Chương 3: C C LO I CSDL NOSQL 35
3.1 Cơ sở dữ liệu cặp khoá – giá trị Key value store - 35
3.1.1 Giới thiệu 35
3.1.2 Khảo sát cơ sở dữ liệu NoSQL Dynamo 36
3.1.3 Các sản ph m tiêu biểu của cơ sở dữ liệu cặp khoá – giá trị 37
3.2 Cơ sở dữ liệu hướng cột Wide Column Store column Families - 38
3.2.1 Giới thiệu 38
3.2.2 Cấu trúc của cơ sở dữ liệu hướng cột 39
3.2.3 u và Khuyết điểm 41
3.2.4 Các sản ph m tiêu biểu của cơ sở dữ liệu hướng cột 42
3.3 Cơ sở dữ liệu đồ thị Graph Databases - 42
3.3.1 Giới thiệu 42
3.3.2 Các sản ph m tiêu biểu của cơ sở dữ liệu đồ thị 44
3.4 Cơ sở dữ liệu tài liệu Document Store - 44
3.4.1 Giới thiệu 44
3.4.2 u và nhược điểm 46
3.4.3 Các sản ph m tiêu biểu 47
3.5 So sánh các loại cơ sở dữ liệu NoSQL - 47
3.5.1 Khả năng truy vấn 48
Trang 73.5.2 Quản lý đồng thời multiversion concurrency control 48
3.5.3 Phân vùng 49
3.5.4 Nhân rộng và Nhất quán 50
3.6 Lựa chọn hệ quản trị NoSQL thích hợp - 50
Chương 4: H QUẢN TRỊ CSDL MONGODB 53
4.1 Tổng quan - 53
4.1.1 Giới thiệu 53
4.1.2 Lịch sử phát triển MongoDB 53
4.1.3 Đặc điểm của MongoDB 54
4.2 Mô hình dữ liệu - 55
4.2.1 Cơ sở dữ liệu và bộ sưu tập (Collection) 55
4.2.2 Tài liệu (document) 57
4.2.3 Trường (field) và các kiểu dữ liệu 58
4.3 Thiết kế mô hình dữ liệu - 59
4.3.1 Mô hình dữ liệu nhúng ( embedded data model) 60
4.3.2 Mô hình dữ liệu tham chiếu 61
4.3.3 Mô hình quan hệ giữa các tài liệu (document) 63
4.3.3.1 Mối quan hệ một – một (one – to – one) giữa các tài liệu 63
4.3.3.2 Mô hình nhúng một- nhiều giữa các tài liệu 64
4.3.3.3 Mô hình tham chiếu One-to-Many mối quan hệ giữa các văn bản 65
4.4 Chỉ mục ( Index ) - 66
4.4.1 Tổng quan 66
4.4.2 Các loại chỉ mục 67
4.4.3 Thuộc tính của chỉ mục ( index properties) 70
Trang 84.5 Nhân rộng (Replication) - 72
4.5.1 Cấu trúc replica – set 73
4.5.2 Các bước triễn khai 73
4.6 Phân mảnh (Sharding ) - 74
4.6.1 Phân mảnh trong MongoDB 75
4.6.2 Phân tán dữ liệu 76
4.6.3 Phân tán dữ liệu cân bằng 77
4.6.5 Các bước cấu hình 78
4.7 Mô hình truy vấn - 78
CH NG 5: XÂY DỰNG ỨNG DỤNG MINH HO 84
5.1 Tổng quan - 84
5.1.1 Giới thiệu ứng dụng 84
5.1.2 Lý do chọn ứng dụng 84
5.2 Mô tả ứng dụng xây dựng trang mạng xã hội - 85
5.3 Chức năng của ứng dụng - 87
5.4 Mô tả chức năng ứng dụng - 90
5.4.1 Use Case 90
5.4.2 Mô tả Use Case 91
5.5 Thiết kế ứng dụng - 97
5.5.1 Các bộ sưu tập 97
5.5.2 Đánh chỉ mục 97
5.5.3 Nhân rộng 100
5.6 Xây dựng ứng dụng - 101
5.6.1 Giới thiệu ứng dụng 101
Trang 95.6.2 Giao diện của ứng dụng 101
5.6.3 Kiểm nghiệm đánh giá ứng dụng 105
Chương 6: KẾT LUẬN VÀ H ỚNG PHÁT TRIỂN 110
6.1 Một số kết quả đạt được - 110
6.1.1 Về mặt lý thuyết 110
6.1.2 Về mặt ứng dụng 110
6.2 Hướng phát triển - 111
TÀI LIỆU THAM KHẢO 112
Trang 10DANH MỤC CÁC KÝ TỰ, CHỮ VIẾT TẮT
ACID :Atomicity, Consistency, Isolation, Durability
BASE :Basically Available, Soft-state, Eventual consistency
DBMS :Database Management System
NoSQL :Not only SQL
RDBMS :Relational Database Management System
CSDL : Cơ sở dữ liệu
API :Application Programming Interface
Trang 11DANH MỤC CÁC BẢNG
Bảng 2.1: Bảng ví dụ minh họa về cặp khóa/giá trị - 21
ảng 2.2 : Lựa chọn các yếu tố C P thích hợp cho từng tình huống - 25
ảng 2.3: So sánh CID và SE - 27
Bảng 2.4: ảng tóm tắt sự khác biệt giữa NoSQL và SQL - 33
ảng 3.1: Ví dụ về gia đình cột của cơ sở dữ liệu hướng cột - 40
Bảng 3.2: Ví dụ về siêu cột - 41
Bảng 3.3 : Các đại diện của bốn loại CSDL - 47
Bảng 3.4: Bảng so sánh một số đại diện của 4 loại NoSQL - 50
Bảng 5.1: Bảng mô tả chức năng khởi tạo tài khoản - 91
Bảng 5.2: Bảng mô tả chức năng đăng nhập - 91
Bảng 5.3: Bảng mô tả chức năng quản lý thông tin owner - 92
Bảng 5.4: Bảng mô tả chức nănghiển thị thông tin owner - 92
Bảng 5.5: Bảng mô tả chức năngquản lý bài đăng - 93
Bảng 5.6: Bảng mô tả chức năngquản lý album ảnh - 93
Bảng 5.7: Bảng mô tả chức năngquản lý ảnh - 94
Bảng 5.8: Bảng mô tả chức năng quản lý bình luận - 94
Bảng 5.9: Bảng mô tả chức năng quảng lý “Like” - 95
Bảng 5.10: Bảng mô tả chức năng quản lý bạn bè - 95
Bảng 5.11: Bảng mô tả chức năng quản lý TimeLine - 96
Bảng 5.12: Bảng mô tả chức năng quản lý bảo mật - 96
Bảng 5.13: Bảng mô tả chức năng hiện thị danh sách bạn bè của owner - 97
Bảng 5.14: Danh sách các bộ sưu tập - 97
Bảng 5.15: Thông số hệ thống máy thực nghiệm ứng dụng - 105
Trang 12Bảng 5.16: Kết quả đăng ký mới tài khoản thực hiện trên MongoDB - 106
Bảng 5.17: Kết quả đăng ký mới tài khoản thực hiện trên SQL Server 2014 - 106
Bảng 5.18: Kết quả đọc tài khoản từ dữ liệu CSDL MongoDB - 107
Bảng 5.19: Kết quả đọc tài khoản từ dữ liệu CSDL SQL Server - 107
Bảng 5.20: Kết quả thêm bài viết MongoDB - 108
Bảng 5.21: Kết quả thêm bài viết SQL Server 2014 - 108
Bảng 5.22: Kết quả đăng tải album vào hệ thống CSDL MongoDB - 109
Bảng 5.23: Kết quả đăng tải album vào hệ thống CSDL SQL Server 2014 - 109
Trang 13DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 2.1: iểu đồ tăng trưởng dữ liệu 19
Hình 2.2: Sơ đồ thiết kế hệ thống database Master –Slave 21
Hình 2.3: Các thuộc tính của CAP 25
Hình 2.4: Mở rộng quy mô với cơ sở dữ liệu quan hệ 29
Hình 2.5: Công nghệ mở rộng ra ngoài của NoSQL 30
Hình 3.1: Các loại cơ sở dữ liệu NoSQL 35
Hình 3.2: Ví dụ về cấu trúc của cơ sở dữ liệu cặp khoá – giá trị 36
Hình 3.3Column family 40
Hình 3.4 : Cơ sở dữ liệu đồ thị 43
Hình 3.5: Ví dụ minh hoạ cơ sở dữ liệu đồ thị 43
Hình 3.6: Cơ sở dữ liệu hướng tài liệu 45
Hình 3.7: Ví dụ về sự tương đồng giữa key values store và document store 45
Hình 3.8: Quan hệ giữa các loại dữ liệu NoSQL 51
Hình 4.1: Mô hình dữ liệu của MongoDB 55
Hình 4.2: Ví dụ về một collection 55
Hình 4.3 : Ví dụ về sự lưu trữ linh hoạt của collection 56
Hình 4.4: Ví dụ về tài liệu trong MongoDB 57
Hình 4.5: Sự đa dạng trong lưu trữ của tài liệu 57
Hình 4.6: Thêm một tài liệu vào bộ sưu tập 58
Hình 4.7: Minh hoạ hoạt động của MongoDB 58
Hình 4.8: Ví dụ về trường dữ liệu trong MongoDB 58
Hình 4.9: Tương quan giữa các khái niệm của SQL và MongoDB 59
Trang 14Hình 4.10 : Mô tả các thành phần trong mô hình dữ liệu MongoDB 59
Hình 4.11: Minh họa mô hình dữ liệu nhúng 60
Hình 4.12: Minh họa mô hình dữ liệu tham chiếu 61
Hình 4.13: Mô tả chỉ mục đơn 67
Hình 4.14: Mô tả chỉ mục hỗn hợp 68
Hình 4.15: Mô tả chỉ mục đa khóa 69
Hình 4.16 Mô hình replica- set 3 thành phần 72
Hình 4.17 :Secondary thay thếprimary gặp sự cố 73
Hình 4.18: Mô hình replica- set có thành phần Arbiter 73
Hình 4.19: Minh họa mô hình sharding 75
Hình 4.20 : Mô hình một cụm sharded 75
Hình 4.21: Khóa phân mảnh theo phạm vi ảnh hưởng 76
Hình 4.22: Khóa phân mảnh dựa vào bản băm 77
Hình 4.23: Minh họa chia nhỏ trong phân tán dữ liệu cân bằng 77
Hình 4.24: Minh họa cân bằng trong phân tán dữ liệu cân bằng 78
Hình 5.1: Sơ đồ phân rã chức năng của friend 88
Hình 5.2: Sơ đồ phân rã chức năng của owner 89
Hình 5.3: Use case của Owner 90
Hình 5.4 : Usecase của Friends 90
Hình 5.5: Danh sách các bộ sưu tập của ứng dụng 100
Hình 5.6: Mô hình nhân rộng của ứng dụng 100
Hình 5.7: Giao diện đăng ký tài khoản mới 101
Hình 5.8: Giao diện đăng nhập hệ thống 101
Hình 5.9: Giao diện thông báo Timeline 102
Trang 15Hình 5.10: Giao diện quản lý kết bạn 102
Hình 5.11: Giao diện them mới trạng thái 103
Hình 5.12: Giao diện thêm mới album ảnh 103
Hình 5.13: Giao diện hiển thị album ảnh 104
Hình 5.14: Giao diện bình luận về ảnh 104
Hình 5.15: Giao diện bình luận về trạng thái 105
Hình 5.17: Biểu đồ thời gian đáp ứng khi thêm mới tài khoản 106
Hình 5.18: Biểu đồ thời gian đọc tài khoản người dùng từ dữ liệu 107
Hình 5.19: Biểu đồ thời gian thêm bài viết vào trang mạng xã hội 108
Hình 5.20: Biểu đồ thời gian đáp ứng khi thêm album 109
Trang 16Chương 1: TỔNG QUAN
Chúng ta đang sống trong một thời đại mới, thời đại phát triển rực rỡ của CNTT Tác động của CNTT đối với xã hội loài người vô cùng to lớn Sự phát triển và ứng dụng của Internet đã làm thay đổi mô hình và cách thức hoạt động kinh doanh của doanh nghiệp.CNTT đã ở một bước phát triển cao, đó là số hóa tất cả các dữ liệu thông tin, luân chuyển mạnh mẽ và kết nối tất cả chúng ta lại với nhau
Mọi loại thông tin, số liệu âm thanh, hình ảnh có thể được đưa về dạng kỹ thuật
số để bất kỳ máy tính nào cũng có thể lưu trữ, xử lý và chuyển tiếp cho nhiều người Đồng thời cùng với sự phát triển của mạng xã hội, đã cho phép người dùng tự do tạo các nội dung trên mạng xã hội, tốc độ tăng trưởng dữ liệu tràn lan đến chóng mặt do sự phát triển của công nghệ hàng ngày số lượng dữ liệu về hình ảnh, blog, cập nhật mạng
xã hội hàng ngày, tài liệu điện tử, tập tin nhạc và video được phát triển với một tốc độ nhanh chóng Dẫn đến dữ liệu tăng lên rất nhanh, vượt qua giới hạn xử lý của các hệ quản trị cơ sở dữ liệu truyền thống Việc lưu trữ và khai thác lượng dữ liệu khổng lồ này để lọc ra được những dữ liệu hữu dụng quả là một thử thách lớn nhất mà nhân loại gặp phải trong xã hội hiện đại
1.1 Tính khoa học và tính mới của đề tài
Các hệ cơ sở dữ liệu quan hệ (RDBM) hiện tại bộc lộ những yếu kém trong những tác
vụ như đánh chỉ mục một lượng lớn dữ liệu, phân trang, hoặc phân phối luồng dữ liệu media (phim, ảnh, nhạc ) CSDL quan hệ được thiết kế cho những mô hình dữ liệu không quá lớn trong khi các dịch vụ mạng xã hội lại có một lượng dữ liệu cực lớn và cập nhật liên tục do số lượng người dùng quá nhiều
CSDL NoSQL đặc biệt thích hợp cho các ứng dụng cực lớn (dịch vụ tìm kiếm, mạng xã hội ,… và nhỏ,giảm thiểu tối đa các phép tính toán, tác vụ đọc-ghi liên quan kết hợp với xử lý theo lô batch processing đảm bảo được yêu cầu xử lý dữ liệu của các dịch vụ mạng xã hội Hệ CSDL này có thể lưu trữ, xử lý từ lượng rất nhỏ đến hàng petabytes dữ liệu với khả năng chịu tải, chịu lỗi cao nhưng chỉ đòi hỏi về tài nguyên phần cứng thấp
Trang 17Có rất nhiều hệ quản trị cơ sở dữ liệu NoSQL, tính đến thời điểm này có khoản
150 loại cơ sở dữ liệu NoSQL Tuy cùng mang những đặc điểm chung của NoSQL nhưng mỗi CSDL NoSQL cũng có những đặc điểm riêng và vì thế thường được dùng cho những dự án khác nhau đây trong phạm vi khóa luận, để tìm hiểu sâu hơn về các cơ sở dữ liệu hiện đại NoSQL, tôi xin tìm hiểu chi tiết hệ quản trị cơ sở dữ liệu đặc trưng là MongoD
MongoDB là 1 hệ thống CSDL mã nguồn mở được phát triển và hỗ trợ bởi 10gen, là CSDL NoSQL hàng đầu được hàng triệu người sử dụng Hiện nay MongoDB đang được sử dụng tại một số công ty lớn như: MTV Networks, Craigslist, Foursquare… MongoD là một cơ sở dữ liệu đang có tốc độ phát triển tốt và được sử dụng cho rất nhiều dự án công nghệ hiện nay Với ưu điểm là một hệ cơ sở dữ liệu mã nguồn mở, nên tiềm năng ứng dụng phát triển của MongoDB là rất lớn
MongoD thường được sử dụng cho các ứng dụng tầm trung và lớn, thường là các trang mạng xã hội Để mô phỏng các ứng dụng cơ sở dữ liệu NoSQL và hệ quản trị MongoDB Tôi tiến hành xây dựng một trang mạng xã hội được viết trên ngôn ngữ lập trình ASP.NET kết hợp cùng hệ quản trị cơ sở dữ liệu MongoDB Trang mạng xã hội được xây dựng thực hiện các chức năng cơ bản như: Tạo tài khoản, đăng nhập, kết bạn, cập nhật trạng thái, hình ảnh, bình luận về ảnh, bình luận về trạng thái, theo dõi bạn
bè, đăng tải thông tin trên trang chủ, thông báo khi có bình luận, tùy chỉnh bảo mật trạng thái, hình ảnh
1.2 Lý do chọn đề tài
Do những nhu cầu của thời đại, nên việc tìm hiểu và xây dựng các ứng dụng sử dụng
NoSQL là hết sức cần thiết, tôi quyết định chọn đề tài khóa luận “Tìm hiểu NoSQL –
MongoDB và xây dựng ứng dụng mạng xã hội” Đây là một đề tài rất hợp với su thế, sự
phát triển của công nghệ thông tin Khóa luận đóng một vai trò quan trọng trong việc cung cấp một cái nhìn mới về một cơ sở dữ liệu mang tính thời thượng, giúp phát triển các ứng dụng có lượng dữ liệu tầm trung hay cao, đặc biệt đối với các trang mạng xã hội
Trang 181.3 Mục tiêu nghiên cứu
Hiểu được các đặc điểm của NoSQL và sự khác biệt giữa NoSQL và SQL Nắm được kiến trúc lưu trữ của NoSQL, các loại cơ sở dữ liệu NoSQL, ưu và khuyết điểm của NoSQL Từ những đặc điểm riêng của các hệ quản trị NoSQL, từ đó có thể sử dụng các hệ quản trị NoSQL phù hợp với từng ứng dụng thích hợp Tìm hiểu MongoD và
so sánh với các hệ quản trị cơ sở dữ liệu khác Cũng như tìm hiểu các đặc trưng, cách thiết kế lược đồ, chỉ mục, sao chép và cách truy vấn trên hệ quản trị MongoD Từ những kiến thức trên, tiến hành xây dựng trang mạng xã hội minh họa với các tính năng cơ bản như: Tạo tài khoản, đăng nhập, kết bạn, đăng tải trạng thái, hình ảnh, bình luận thông báo khi có bình luận, tùy chỉnh bảo mật trạng thái, hình ảnh ằng ngôn ngữ lập trình SP.NET kết hợp với hệ quản trị cơ sở dữ liệu MongoD
1.4 Đối tượng nghiên cứu
Tìm hiểu tổng quan về cơ sở dữ liệu NoSQL, kiểm nghiệm và so sánh, đánh giá NoSQL với mô hình cơ sở dữ liệu quan hệ truyền thống (SQL Server) Tìm hiểu hệ quản trị MongoDB và so sánh với các hệ quản trị cơ sở dữ liệu NoSQL khác, từng bước tiến tới việc xây dựng một ứng dụng mạng xã hội minh họa dựa trên hệ quản trị
cơ sở dữ liệu NoSQL –MongoDB
1.5 Phạm vi nghiên cứu
Tìm hiểu về NoSQL và hệ quản trị cơ sở dữ liệu MongoD đồng thời tiến hành xây dựng ứng dụng mạng xã hội bằng để minh họa bằng MongoDB và ASP.NET
1.6 Phương pháp thực hiện:
- Tìm hiểu cơ sở dữ liệu NoSQL, các hệ quản trị cơ sở dữ liệu của NoSQL
- Tìm hiểu hệ quản trị cơ sở dữ liệu MongoDB, so sánh với các hệ quản trị cơ sở
dữ liệu NoSQL khác
- Phân tích, thiết kế trang mạng xã hội minh họa
- Xây dựng trang mạng xã hội thực hiện các chức năng cơ bản như: Tạo tài khoản, đăng nhập, kết bạn, cập nhật trạng thái, hình ảnh, bình luận về ảnh, bình luận về trạng thái, theo dõi bạn bè, đăng tải thông tin trên trang chủ
- Kiểm định, thí nghiệm trang mạng xã hội
Trang 19- Đánh giá trang mạng xã hội, cho chạy thử và lấy ý kiến chuyên gia
1.7 Dự kiến kết quả đạt được:
Hiểu tổng quan về cơ sở dữ liệu NoSQL, kiểm nghiệm và so sánh, đánh giá NoSQL với mô hình cơ sở dữ liệu quan hệ truyền thống(SQL Server) Hiểu hệ quản trị MongoDB, trang mạng xã hội từng bước tiến tới việc xây dựng một ứng dụng mạng xã hội minh họa dựa trên hệ quản trị cơ sở dữ liệu NoSQL –MongoDB
1.8 Dự kiến cấu trúc luận văn sẽ thực hiện:
- Chương 1 : Tổng quan
- Chương 2: Cơ sở dữ liệu NoSQL Trình bày khái niệm cơ bản về khái niệm,
mục đích, cấu trúc, thành phần của cơ sở dữ liệu NoSQL Các loại hệ quản trị cơ
sở dữ liệu, kiến trúc và Kỹ thuật CAP
- Chương 3: Các loại cơ sở dữ liệu NoSQL
- Chương 4: Hệ quản trị cơ sở dữ liệu MongoDB
- Chương 5: Phân tích và xây dựng trang mạng xã hội Kết quả thu được là
trang mạng xã hội thực hiện các chức năng cơ bản như: Tạo tài khoản, đăng nhập, kết bạn, cập nhật trạng thái, hình ảnh, bình luận về ảnh, bình luận về trạng thái , theo dõi bạn bè, đăng tải thông tin trên trang chủ
- Chương 6:Kết luận và hướng phát triển
Trang 20Chương 2: CƠ SỞ DỮ LIỆU NOSQL
2.1 NoSQL à g
NoSQL – Not Only SQL( không chỉ SQL , một thế hệ cơ sở dữ liệu mới không sử dùng mô hình dữ liệu quan hệ để quản lý dữ liệu NoSQL cólược đồ tự do schema-free Được thiết kế cho các mô hình lưu trữ dữ liệu phân tán với lượng dữ liệu khổng
lồ lên đến hàng petabytes Theo Eric Evans “trọng điểm của NoSQL là giải quyết các vấn đề mà RD MS không thể giải quyết được” 21 NoSQL là một thế hệ CSDL mới với các đặc điểm nổi bật như: không ràng buộc Non relation , phân tán Distribute),mã nguồn mở open source , có khả năng mở rộng theo chiều ngang Horizontal scalable , lược đồ tự do free schema , PI đơn giản Có thể lưu trữ xử lý dữ liệu từ một lượng rất nhỏ cho đến hàng petabytes trong một hệ thống chịu tải, chịu lỗi cao và đáp ứng thời gian thực [1][2][17]
NoSQL bao gồm hàng loạt các công nghệ CSDL khác nhau đã được phát triển để đáp ứng với nhu cầu gia tăng khối lượng dữ liệu, tần số truy cập và hiệu xuất xử lý, cùng với khả năng lưu trữ tiết kiệm Cơ sở dữ liệu quan hệ không được thiết kế để đáp ứng những thách thức về quy mô lưu trữ và khả năng xử lý nhanh nh n của các ứng dụng hiện đại này.[17]
Hình 2.1: iểu đồ tăng trưởng dữ liệu
Chú thích : Nguồn nghiên cứu UNECE
Trang 212.2 Lịch S
NoSQL đã có rất nhiều động lực thúc đ y sự phát triển, nhưng thật ra NoSQL không phải là một điều mới m hoàn toàn Thuật ngữ NoSQL đã được sử dụng bởi Carlo Strozzi trong năm 1998 như là tên của tập tin dựa trên cơ sở dữ liệu mà ông đang làm
Đó là tên gọi chung cho các cơ sở dữ liệu quan hệ nguồn mở nhỏ( lightweight open source relational database nhưng không sử dụng SQL cho truy vấn Đây là một cơ sở
dữ liệu quan hệ mà không có một giao diện SQL Như vậy nó không thực sự là một phần của phong trào NoSQL của chúng ta ngày nay.[12][1][3]
Thuật ngữ này lại nổi lên vào năm 2009 khi Eric Evans nhân viên của Rackspace, được u thác dự án Cassandra, giới thiệu lại thuật ngữ NoSQL khi Johan Oskarsson 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 Eric Evans đã sử dụng “NoSQL” để đặt tên cho các đột biến hiện nay trong cơ sở dữ liệu phi quan hệ, thuật ngữ NoSQL thường được sử dụng với ý nghĩa là "không chỉ SQL"
để mô tả sự gia tăng của các dự án và sản ph m mới.[12]
2.3 Kiến tr c ƣu trữ của NoSQL
2.3.1 Sơ ƣợc
Các cơ sở dữ liệu quan hệ hiện tại đã bộc lộ những yếu kém trong việc đánh chỉ mục một lượng lớn dữ liệu, phân trang hoặc phân phối luồng dữ liệu media (phim, ảnh, nhạc Cơ sở dữ liệu quan hệ được thiết kế cho những mô hình dữ liệu nhỏ thường xuyên đọc viết trong khi các dịch vụ mạng xã hội Social Network Services lại có một lượng dữ liệu cực lớn và cập nhật liên tục do số lượng người dùng quá nhiều ở một thời điểm Thiết kế phân tán của NoSQL giảm thiểu tối đa các phép tính toán và nhập xuất liên quan, kết hợp với xử lý hàng loạt đủ để đảm bảo được yêu cầu xử lý dữ liệu của các mạng dịch vụ dữ liệu cộng đồng Facebook, Amazon là những ví dụ điển hình
về mạng xã hội[7][8] Về cơ bản, các thiết kế của NoSQL lựa chọn mô hình lưu trữ các tập dữ liệu theo cặp khoá - giá trị Bảng 2.1 ví dụ cặp khóa giá trị
Trang 22ảng 2.1: ảng ví dụ minh họa về cặp khóa giá trị
hệ thống xử lý lượng lớn dữ liệu, thông thường người ta sẽ tách biệt cơ sở dữ liệu ra làm hai hoặc nhiều cơ sở dữ liệu như sơ đồ dưới đây:
Hình 2.2: Sơ đồ thiết kế hệ thống database Master –Slave
Ghi chú: Nguồn alexwilliams.ca
Một cơ sở dữ liệu (CSDL) phụ thuộc slave database đảm bảo vào ra liên tục, khi đạt tới ngưỡng thời gian hoặc dung lượng nhất định, CSDL phụ thuộc sẽ được gộp lại merge vào CSDL chủ(Master Database) có thiết kế tối ưu cho tác vụ đọc (read operation Mô hình đó cho phép tăng cường hiệu suất I/O - một trong những nguyên nhân chính khiến hiệu suất trở nên kém.[7][27]
Trang 232.3.2 Một số đặc điểm
- Tính mềm dẻo của dữ iệu
Cơ sở dữ liệu NoSQL cho phép bạn tự do thêm các trường JSON, mà không cần phải xác định những thay đổi Định dạng của dữ liệu được đưa vào có thể được thay đổi bất
cứ lúc nào, mà không làm gián đoạn ứng dụng
Quản lý các lược đồ liên tục phát triển và siêu dữ liệu cho dữ liệu bán cấu trúc
và không cấu trúc, được tạo ra bởi nhiều nguồn khác nhau, là một vấn đề phức tạp Các giải pháp về dữ liệu lớn của NoSQL là một bước tiến đầu tiên trong việc xử lý dữ liệu thay đổi theo kích thước và độ lớn
2.3.3 Kiến tr c ƣu trữ
Cơ sở dữ liệu hướng cột Column Oriented database được xây dựng bằng các kiểu dữ liệu của cơ sở dữ liệu phi quan hệ non-relational database) Nó trở nên nổi tiếng là nhờ các kỹ sư của Google, facebbok, LinkedIn, mà ta có thể xem là nó là một cuộc cách mạng NoSQL.Tạo ra một sự nghi ngờ về vấn đề gom cụm không tốn kém phần cứng mà vẫn có thể nắm giữ một lượng lớn thông tin NoSQL trở nên thực tế và hiệu quả với những cơ sở dữ liệu thời gian, có 3 chức năng chính mà nó hiện rõ: dữ liệu được lưu trữ trong tập tin mạng hệ thống, nó có thể mở rộng cho nhiều máy, tập tin của
nó có thể rất lớn và được lưu trữ trong nhiều nút, chạy trên các máy tính riêng biệt Dữ liệu được lưu trữ theo cấu trúc cung cấp nhiều tiện ích hơn cấu trúc dữ liệu quan hệ truyền thống Lược đồ lưu trữ cần tính đến những hiệu quả của việc lưu trữ số lượng
Trang 24lớn của dữ liệu được chia nhỏ Cung cấp cho việc thay đổi lược đồ mà không thay đổi bất kỳ cấu trúc nào bên dưới.[16][17]
- Làm việc với Column-Oriented Database Google‟s igtable và pache H ase,
một phần của Hadoop là hai phần của dữ liệu hướng đối tượng, nó là Hypertable và Cloudata, cách mỗi data lưu trữ rất đa dạng nhưng nó cũng có những nền tảng chung Những nhà phát triển hiện tại đã ăn sâu vào các hệ thống với những ràng buộc dữ liệu, được dạy trong trường học, dùng trong công việc, thường xuyên bàn luận và viết về nó, nền tảng về quan hệ dữ liệu RD MS được hình dung như một thực thể và ràng buộc dữ liệu trở nên không thể tách rời trong dữ liệu, do đó giải thích (column-oriented databases) từ những luận điểm của RDBMS Mọi người sẽ
cảm thấy dễ chịu như đang làm một RDBMS vậy [11][16]
- S dụng tab e và co oumn trong cơ sở dữ liệu quan hệ.Trong RDBMS, thuộc
tính được lưu trữ trong các bảng và cột, các cột định nghĩa ở trước và dữ liệu được
lưu trữ trong tất cả các cột cho tất cả các yếu tố hoặc hàng trong bảng [17]
2.4 Các thuật ngữ cơ bản
2.4.1 Phi ƣợc đồ Schema ess
Là một trong những lý do chính để chọn dùng cơ sở dữ liệu NoSQL Sự không tương thích giữa các mô hình quan hệ và cấu trúc bộ nhớ của dữ liệu đã đạt đỉnh điểm Các nhà phát triển đã chuyển hướng sang một hệ quản trị cơ sở dữ liệu hoàn toàn mới, bởi
vì cơ sở dữ liệu quan hệ không đủ linh hoạt.[11]
NoSQL cho phép lưu trữ bất kỳ dữ liệu nào Mặc dù cơ sở dữ liệu quan hệ có thể có chứa dữ liệu phi cấu trúc,nó vẫn không thể đáp ứng được nhu cầu Việc tối ưu hóa truy vấn thất bại khi sự tăng trưởng dữ liệu vượt mọi dự báo của các nhà phát triển Trong NoSQL, các nhà phát triển có thể biến các cơ sở dữ liệu thành một nơi để đổ dữ liệu
Dễ dàng sử dụng, điều này đã trở thành một giải pháp thay thế cho các cơ sở dữ liệu quan hệ, chiếm được cảm tình của người dùng và do đó nó là rất dễ dàng để có được
sự chấp nhận của các doanh nghiệp Các ứng dụng hỗ trợ NoSQL được phát triển nhanh hơn, không trở ngại với lưu lượng người dùng ngày càng nhiều hơn và hỗ trợ thực hiện các module mới hiệu quả hơn so với mô hình quan hệ Tại bất kỳ thời điểm
Trang 25nào một module ứng dụng có thể được mở rộng bằng cách giới thiệu các kiểu dữ liệu
tự do Phát triển, thậm chí có thể cung cấp cho người sử dụng kiểm soát nhiều hơn dữ liệu của họ bằng cách giới thiệu các tùy chỉnh Phi lược đồ được NoSQL hỗ trợ vào các phút cuối cùng trước khi giới thiệu rộng khắp Nhưng điều này dẫn đến các lỗ hổng bảo mật trong việc kiểm soát truy cập của mô hình quan hệ đã bị bỏ qua NoSQL thiếu một
cơ chế bảo mật nghiêm ngặc Điều mà cơ sở dữ liệu đã làm rất tốt 7 8 [11]
Cấu trúc phi lược đồ vẫn có một lược đồ ngầm Cần phải có một số giả định về cấu trúc của dữ liệu sẽ được tạo ra, chẳng hạn như tên của các lĩnh vực Bất kỳ dữ liệu
mà không phù hợp với sơ đồ ngầm này sẽ không được thao tác đúng cách, dẫn đến sai sót Định nghĩa một lớp xác định các trường một cách hợp lý có thể sử dụng để chỉnh sửa nó Đây là một cách hiệu quả trong lược đồ.[8]
2.4.2 L thuyết CAP
Lý thuyết C P được giới thiệu bởi Tiến sĩ rewer đại học California vào năm 2000, trong bài phát biểu "addressing the trade-os in distributed systems và sau đó đã được công bố chính thức bởi Gilbert và Lynch[3] Theo lý thuyết C P trong một hệ thống lưu trữ dữ liệu phân tán chỉ có thể thoả mãn hai trong 3 thuộc tính sau :
- T nh s n c Availability ) trong mọi trường hợp khách hàng luôn luôn có thể đọc
và ghi dữ liệu trong cùng một khoảng thời gian
- Nhất quán Consistency )
- Khả năng chịu i ph n v ng( Partition tolerance ) Một cơ sở dữ liệu có khả năng
chịu lỗi phân vùng thoải mái đối với các vấn đề kết nối tạm thời và cho phép phân vùng các nút được tách ra
Một hệ thống có khả năng chịu lỗi phân vùng chỉ có thể cung cấp nhất quán mạnh
mẽ với việc cắt giảm tính sẵn có của nó, bởi vì nó có để đảm bảo rằng mỗi tác vụ viết, chỉ kết thúc nếu dữ liệu được nhân rộng đến tất cả các nút cần thiết, có thể không phải lúc nào cũng có một môi trường phân tán do lỗi kết nối hay các lỗi phần cứng
Trang 26Hình 2.3: Các thuộc tính của C P
Phân loại trên CAP
Các hệ thống rất lớn sẽ phân vùng P tại một điểm nào đó Vì vậy việc xem xét chọn C
và A rất cần thiết Thông thường các hệ quản trị cơ sở dữ liệu truyền thống ưu tiên thuộc tính C hơn là A và P, tuy nhiên phần lớn các ứng dụng Web chọn A CAP phân loại các cơ sở dữ liệu NoSQL thành các cặp cơ bản: CA, AP và CP Với mỗi cặp có
những ưu điểm và nhược điểm nhất định Tương ứng với mỗi cặp sẽ có một số hệ thống được phát triển trên đó[7] Bảng 2.2 các tình huống lựa chọn các yếu tố CAP
ảng 2.2 : Lựa chọn các yếu tố C P thích hợp cho từng tình huống
Trang 27- Các hệ thống CA (Consistent, Available Systems): Thiếu thuộc tính P, nên gặp vấn
đề về phân vùng (Partition) và việc tạo các bản sao (Replication)
- Một số hệ thống CA: Traditional RDBMSs like Postgres, MySQL, Aster Data ,
Greenplum, Vertica (column-oriented)
- Các hệ thống CP (Consistent, Partition-Tolerant Systems : Đảm bảo được tính nhất quán cũng như khả năng chịu lỗi phân vùng Tuy nhiên việc thiếu thuộc tính A sẽ
dễ dàng gặp vấn đề về tính sẵn có của hệ thống Một số hệ thống CP: igTable,
Hypertable, H ase kiểu cơ sở dữ liệu hướng cột MongoD , Terrastore cơ sở dữ liệu hướng tài liệu Redis, Scalaris, MemcacheD , erkeley D cơ sở dữ liệu cặp khoá – giá trị
- Các hệ thống AP (Available, Partition-Tolerant Systems : Đảm bảo được tính sẵn
dùng và khả năng chịu lỗi phân vùng Tuy nhiên tính nhất quán sẽ chịu một độ trễ
nhất định “eventually consistency” Một số hệ thống AP: Dynamo, Voldemort,
Tokyo Cabinet, K I kiểu cơ sở dữ liệu cặp khoá – giá trị Cassandra, CouchD , SimpleD , Riak cơ sở dữ liệu hướng tài liệu
2.4.3 Base và ACID
ACID là viết tắt của cụm từ Atomicity (nguyên tử), Consitency (nhất quán), Isolation (Cô lập), và Durability (Lâu bền).Trong cơ sở dữ liệu NoSQL, các nguyên tắc của các
mô hình ACID là quá mức cần thiết, trên thực tế nó đã cản trở hoạt động của các cơ sở
dữ liệu Xây dựng một CSDL với các đặt tính của CID là vô cùng khó khăn Đó là lý
do mà Consistency và Isolation bị thu hồi 3 6 7 8 Thay vào đó, NoSQL dựa vào một mô hình nh nhàng hơn, thích hợp hơn, và kết quả là chúng ta có phương pháp tiếp cận mới SE gồm ba nguyên tắc:
- Tính sẵn có cơ bản( Basic Availability)
- Trạng thái mềm( Soft State )
- Tính nhất quán cuối ( Eventual Consistency)
Tóm lại các thuộc tính ase như sau: một ứng dụng làm việc cơ bản tất cả thời gian (basically available), không phải là nhất quán tất cả các thời gian (soft-state nhưng sẽ đạt được trạng thái cuối nhất quán eventual consistency 3 Hệ thống SE cơ bản
Trang 28đáp ứng được tính sẵn có và nhất quán cuối Mô hình này rất linh hoạt được cung cấp bởi NoSQL và là cách tiếp cận tương tự để quản lý và dữ liệu phi cấu trúc Các mô hình BASE không thích hợp cho mọi tình huống, nhưng nó chắc chắn là một lựa chọn linh hoạt thay thế cho các mô hình CID khi cơ sở dữ liệu không cần phải tuân thủ nghiêm ngặt như mô hình quan hệ Bảng 2.3 so sánh sự khác nhau giữa ACID và BASE
ảng 2.3: So sánh CID và SE
- Nhất quán mạnh - Nhất quán yếu
- Cô lập - Tính sẵn có đầu tiên
- Tập trung vào “commit” - Đơn giản
- Tính sẵn có yếu - Nhanh chóng
- Giải pháp khó áp dụng - Giải pháp dễ áp dụng
2.4.4 Nhất quán cuối Eventual consistency)
Theo lý thuyết C P cơ sở dữ liệu phân tán có thể là mạnh về tính nhất quán hoặc tính sẵn có.Do đó, hầu hết các cơ sở dữ liệu NoSQL chỉ có thể cung cấp tính nhất quán cuối Tính nhất quán cuối là Trong một trạng thái ổn định, hệ thống sẽ dần dần trả về kết quả tác vụ ghi cuối cùng 3 , không đảm bảo rằng các tiến trình có thể thấy cùng một phiên bản của các tập dữ liệu Ngay cả những tiến trình ghi các giá trị có thể có được thực hiện trên một phiên bản cũ trong cửa sổ không nhất quán Hành vi này thường được gây ra bởi sự sao chép của các dữ liệu trên các nút dữ liệu khác nhau[6][7][11]
2.4.5 Điều hiển đồng thời đa phi n bản MVCC
Kiểm soát đồng thời đa phiên bản Multiversion Concurrency Control) MVCC là một
phương pháp hiệu quả để cho nhiều tiến trình truy cập vào cùng một dữ liệu, một cách song song mà không làm phát sinh lỗi dữ liệu và khả năng deadlocks Đây là một thay
Trang 29thế cho các phương pháp tiếp cận dựa vào khóa, nơi mọi quá trình đầu tiên đã yêu cầu một khóa duy nhất trên một mục dữ liệu, trước khi nó có thể được đọc hoặc cập nhật
MVCC được sử dụng ở một số cơ sở dữ liệu quan hệ và nhất là trong cơ sở dữ liệu phân tán Thay vì để cho mỗi quá trình truy cập các dữ liệu dành riêng trong một khoản thời gian nhất định, MVCC các tiến trình có thể đọc dữ liệu song song, thậm chí nếu một tiến trình cập nhật dữ liệu Để duy trì tính nhất quán, mỗi mục dữ liệu có một
số loại thời gian tạm hoặc sửa đổi Nếu một tiến trình đọc một mục dữ liệu, nó không chỉ nhận được giá trị của mục dữ liệu, tiến trình này cũng tiến hành rà soát mục lưu trữ sửa đổi của dữ liệu Nếu việc sửa đổi thực tế tại các cơ sở dữ liệu là như nhau, thì giá trị mới được viết và sửa đổi tại các mục dữ liệu được tăng lên Nhưng nếu việc sửa đổi trong cơ sở dữ liệu là không giống như các phiên bản đọc bởi tiến trình viết, sau đó phải có một tiến trình cập nhật các mục dữ liệu trong lúc đó
2.4.6 Khả năng mở rộng và hiệu suất
Các dữ liệu được lưu trữ trong một CSDL quan hệ với một cấu trúc cứng nhắc bởi cách
bố trí của các bảng, các mối quan hệ được thiết kế trước giữa các bảng và các kiểu dữ liệu của các cột Nếu cần thiết phải mở rộng quy mô một CSDLquan hệ, có thể chạy nó trên máy chủ mạnh mẽ hơn và chuyên biệt,các tổ chức thường mua các máy chủ tùy chỉnh, để thực hiện mở rộng cơ sở dữ liệu quan hệ của họ Tuy nhiên, quy mô vượt quá giới hạn nhất định, các cơ sở dữ liệu phải được phân phối trên nhiều máy chủ Ngoài
ra, CSDL quan hệ không được thiết kế để hoạt động với các phân vùng dữ liệu, vì vậy phân phối chức năng của họ là rất t nhạt Theo như phát biểu của Jon Travis, kỹ sư tại SpringSource “Dữ liệu ngày càng trở nên vô cùng to lớn, điều này làm chúng ta tìm kiếm các công nghệ khác” 18 Để đối phó với sự gia tăng sử dụng đồng thời và số lượng dữ liệu (Big Data), các ứng dụng và cơ sở dữ liệu cơ bản của họ cần phải có quy
mô sử dụng một trong hai lựa chọn: mở rộng qui mô scale up hoặc mở rộng phạm vi (scale out ) Mở rộng qui mô hàm ý một phương pháp tập trung liên quan đến máy chủ với công suất lớn hơn Nhân rộng ra ngụ ý một cách tiếp cận phân phối đó thúc đ y nhiều tiêu chu n, vật lý hoặc máy chủ ảo
Trang 30Mở rộng quy mô là sự lựa chọn tự nhiên trong các ứng dụng với mô hình quan hệ.Sự lựa chọn này bị ảnh hưởng về cơ bản tập trung, chia s tất cả mọi thứ kiến trúc của cơ sở dữ liệu quan hệ Những đặc điểm của một cơ sở dữ liệu quan hệ làm cho việc
mở rộng ít khả thi hơn Để mở rộng quy mô các quản trị cơ sở dữ liệu phải thực sự c n thận về cách tạo và tổ chức các lược đồ và cấu trúc, tất cả những đặc điểm riêng liên quan đến một cơ sở dữ liệu quan hệ và các kết quả cuối cùng trong việc duy trì và triển khai theo cấp số nhân phức tạp hơn và ít có khả năng khôi phục lại Các RDBMS quy
mô đến thời điểm nhất định phải bổ sung thêm các máy chủ cơ sở dữ liệu phức tạp và gây ra một sự gia tăng mạnh chi phí hệ thống và giảm hiệu suất ứng dụng
Hình 2.4: Mở rộng quy mô với cơ sở dữ liệu quan hệ
Chú thích :Nguồn [35]
Cơ sở dữ liệu NoSQL đã được hình thành với mục tiêu đạt được phân tán, mở rộng
cơ sở dữ liệu.Sử dụng một cụm máy chủ tiêu chu n, vật lý hay ảo để lưu trữ dữ liệu và các hoạt động cơ sở dữ liệu hỗ trợ Để mở rộng, các máy chủ được thêm vào các cụm
dữ liệu và các hoạt động cơ sở dữ liệu được lan truyền trên khắp các cụm lớn hơn NoSQL sử dụng một cách tiếp cận dễ dàng hơn và cho các tuyến mở rộng cơ sở dữ Với sự gia tăng của người sử dụng, NoSQL chỉ cần thêm các máy chủ cơ sở dữ liệu mới vào các cụm khi đạt đến một ngưỡng nhất định Nó thường là một phần của cơ chế
cơ sở dữ liệu và do đó trừu tượng đi từ lớp ứng dụng Ứng dụng tiếp tục phục vụ người
sử dụng mà không gặp bất kỳ trở ngại hoặc thời gian chết Các ứng dụng luôn luôn nhìn thấy một hệ thống duy nhất (phân phối) không có vấn đề về số lượng vòng lặp
Trang 31Mở rộng theo cách tiếp cận phân phối là ít tốn kém giữa hai lựa chọn thay thế Các máy chủ để hỗ trợ nhân rộng với yêu cầu khả năng chịu lỗi rất phức tạp trong thiết kế
và thường được tùy chỉnh được thực hiện để phục vụ kinh doanh cá thể Cơ sở dữ liệu NoSQL là thường là mã nguồn mở và chỉ chi một ít cho phí bảo trì, chạy liên tục ở thiết lập phân tán và tương đối r tiền Một cơ sở dữ liệu NoSQL tự động phân tán dữ liệu trên máy chủ, mà không yêu cầu ứng dụng tham gia và ảnh hưởng đến việc thiết kế các dữ liệu hoặc quá trình.Các máy chủ có thể được thêm vào hoặc lấy ra từ các lớp dữ liệu trên đường đi mà không gây gián đoạn dịch vụ
Hình 2.5: Công nghệ mở rộng ra ngoài của NoSQL
Chú thích :Nguồn [35]
Cơ sở dữ liệu NoSQL cũng hỗ trợ sao chép dữ liệu để đảm bảo tính sẵn sàng cao và
hỗ trợ khắc phục sự cố và sharding để tạo điều kiện ghi với quy mô lớn Đối với một số
cơ sở dữ liệu NoSQL ví dụ MongoD các sharding có thể được lập trình để cân bằng tải chỉ bắt đầu di chuyển dữ liệu khi một ngưỡng xác định trước được đáp ứng Điều này thúc đ y giám sát và làm cho quá trình dễ dàng hơn Couchbase tuyên bố "Một hệ thống cơ sở dữ liệu NoSQL được quản lý đúng cách nên không bao giờ được thực hiện offline, vì lý do nào, hỗ trợ các hoạt động liên tục 24x365 của các ứng dụng"
2.5 Đặc điểm của cơ sở dữ iệu NoSQL
Hầu hết các CSDL NoSQL điều có chung một số đặc điểm nổi bật Tất nhiên, NoSQL
là một khái niệm rất rộng và có rất nhiều hệ quản trị CSDL khác nhau, nhưng chúng
Trang 32điều có nhiều hoặc ít hơn các đặc điểm này Tuy nhiên, có thể nói CSDL NoSQL có thể mang các đặc điểm như sau:
- M h nh dữ iệu phi quan hệ Non-relational): Bao gồm các mô hình dữ liệu
khác nhaunhưng nhìn chungcác mô hình này không có mối quan hệ ràng buộc lẫn nhau Có thể có những cấu trúc dữ liệu phức tạp hơn, nhưng nó không cứng nhắc như mô hình dữ liệu quan hệ Non-relational là khái niệm không sử dụng các ràng buộc dữ liệu cho nhất quán dữ liệu ở NoSQL database
- Lưu trữ ph n tán Distributed storage ): Hệ thống CSDL NoSQL được phân tán
sang nhiều máy tính khác nhau, để cung cấp dữ liệu cho người dùng Mỗi phần dữ liệu sau đó sẽ được nhân rộng trên một số lượng nhất định máy dự phòng với tính sẵn sàng đáp ứng cao Mô hình lưu trữ phân tán các tập tin hoặc dữ liệu ra nhiều máy tính khác nhau trong mạng LAN hoặc Internet dưới sự kiểm soát của phần mềm quản lý
- Nhất quán cuối( Eventual consistency): Tính nhất quán của dữ liệu không cần
phải đảm bảo ngay tức khắc sau mỗi tác vụ ghi Một hệ thống phân tán chấp nhận những ảnh hưởng theo phương thức lan truyền và sau một khoảng thời gian (không phải ngay tức khắc , thay đổi sẽ đi đến mọi điểm trong hệ thống, tức là cuối cùng (eventually) dữ liệu trên hệ thống sẽ trở lại trạng thái nhất quán
- Khả năng mở rộng chiều dọc ( Vertical scalable): Khi dữ liệu lớn về
lượng, phương pháp tăng cường khả năng lưu trữ và xử lý bằng việc cải tiến phần mềm và cải thiện phần cứng trên một máy tính đơn l được gọi là khả năng mở rộng chiều dọc
- Khả năng mở rộng chiều ngang ( Horizontal scalable): Khi dữ liệu lớn về lượng,
phương pháp tăng cường khả năng lưu trữ và xử lý là dùng nhiều máy tính phân tán Phân tán dữ liệu được hỗ trợ bởi phần mềm tức cơ sở dữ liệu Trong khi giá thành phần cứng ngày càng giảm, tốc độ xử lý, bộ nhớ ngày càng tăng thì mở rộng chiều ngang là một lựa chọn đúng đắn Hàng trăm máy tính nhỏ được gộp lại tạo thành một hệ thống tính toán mạnh hơn nhiều so với vi xử lý RISC truyền thống đơn l Mô hình này tiếp tục được hỗ trợ bởi các công nghệ kết nối Myrinet và
Trang 33InfiniBand Từ đó chúng ta có thể 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 hơn Do những đòi hỏi về tốc độ xử lý I O cao, lượng cực lớn dữ liệu Mở rộng theo chiều ngang sẽ thúc đ y các công nghệ lưu trữ mới phát triển giống như object storage devices OSD
- Phi cấu tr c SchemaFree ) : Không cần thiết kế các bảng, các cấu trúc như của
SQL Thay vào đó chỉ cần lưu trữ các giá trị mới vào CSDL, không cần phải xác định cấu trúc trước
- Không hỗ trợ SQL
- Dữ liệu lớn Big Data)
- Dùng SE thay thế cho CID
- Triển hai inh hoạt Deployment Flexibility ): Việc bổ sung loại bỏ các node,
hệ thống sẽ tự động nhận biết để lưu trữ mà không cần phải can thiệp bằng tay Hệ thống cũng không đòi hỏi cấu hình phần cứng mạnh, đồng nhất.[7][8][11]
2.6 Điểm hác biệt giữa NoSQL và SQL
CSDL NoSQL giảm thiểu tối đa các phép tính toán, tác vụ đọc - ghi liên quan kết hợp với xử lý theo lô batch processing đảm bảo được yêu cầu xử lý dữ liệu của các dịch
vụ mạng xã hội Hệ CSDL này có thể lưu trữ, xử lý từ lượng rất nhỏ đến hàng petabytes dữ liệu với khả năngchịu tải, chịu lỗi cao nhưng chỉ đòi hỏi về tài nguyên phần cứng thấp
NoSQL thiết kế đơn giản, nh , gọn hơn so với RDBMs Ngoài bộ nhớ đệm, dung lượng thấp Các NoSQL dạng này đặc biệt thích hợp cho thiết bị cầm tay, nơi mà bộ nhớ và tốc độ xử lý hạn chế hơn so với máy tính thông thường Khi khối lượng dữ liệu cần lưu trữ và lượng dữ liệu vào/ra cực lớn, RD M đòi hỏi khắt khe và cao về phần cứng, chi phí thiết lập,chi phí vận hành đắt thì các mô hình lưu trữ phân tán trong NoSQL trở nên vượt trội Thiết kế đặc biệt tối ưu về hiệu suất các tác vụ đọc-ghi, ít đòi hỏi về phần cứng mạnh và đồng nhất, dễ dàng thêm bớt các node không ảnh hưởng tới toàn hệ thống Cùng khảo sát bảng tóm tắt sự khác biệt NoSQL và SQL trong bảng 2.4
Trang 34ảng 2.4: ảng tóm tắt sự khác biệt giữa NoSQL và SQL
Các hệ CSDL
điển hình
Microsoft SQL Server, MySQL, Postgre, Oracle Database
MongoDB, Cassandra, Hbase, Neo4j
Mô hình dữ liệu Cấu trúc lưu trữ xây dựng trước khi lưu trữ dữ liệu
Không cần xây dựng sẵn cấu trúc lưu trữ, việc cần làm là tiến hành lưu trữ dữ liệu vào
Khả năng mở
rộng
Chỉ có thể mở rộng theo chiều dọc
Có thể mở rộng theo chiều dọc, chiều ngang đồng thời hỗ trợ công nghệ điện toán đám mây
Mã nguồn Cả đống và mở Chỉ có mã nguồn mở
H trợ Hỗ trợ tốt cho khách hàng Hỗ trợ trong một số trường với với một
mức độ nhất định
Thao tác với dữ
liệu Ngôn ngữ truy vấn SQL Thông qua các PI hướng đối tượng
Tính nhất quán Tính nhất quán cao
Một số sản ph m cung cấp tính nhất quán mạnh(MongoDB), một số cung cấp nhất quán cuối (Cassandra)
2.7 Ƣu và nhƣợc điểm
2.7.1 Ƣu điểm:
- Đáp ứng được sự tăng trưởng của dữ liệu lớn ig Data
- Truy xuất dữ liệu lớn với tốc độ cao
- Dữ liệu đa dạng, có cấu trúc, bán cấu trúc hoặc phi cấu trúc
- Dữ liệu phức tạp, được lưu trữ và quản lý tại các trung tâm lưu trữ khác
- Cần ít tài nguyên và phần cứng của máy chủ để triển khai
Trang 35 MongoDB và Redis là những lựa chọn tốt cho việc lưu trữ các dữ liệu thống kê
ít được đọc mà lại được viết thường xuyên
Hadoop, một CSDL dạng tự do, phân tán làm tốt công việc lưu trữ các dữ liệu lớn như các con số thống kê thời tiết hoặc công việc phân tích nghiệp vụ
Memcache, một CSDL nhất thời chóng tàn, tuyệt vời trong lưu trữ các phiên làm việc web, các khóa, và các con số thống kê ngắn hạn
Cassandra và Riak các lưu trữ dư thừa, tự động tạo bó cluster) làm tốt trong các môi trường với các ứng dụng có tính sẵn sàng cao, khi thời gian sống tối đa là mang tính sống còn
- NoSQL được các hãng lớn sử dụng: Các công ty như mazon, C, Facebook và Google dựa vào các CSDL NoSQL
- NoSQL phù hợp với công nghệ đám mây: NoSQL và đám mây là một sự trùng khớp tự nhiên, chúng có khả năng tận dụng được việc cung cấp mềm d o của đám mây
- Các CSDL NoSQL hầu hết sử dụng bộ nhớ qua ổ đĩa như là vị trí ghi đầu tiên - vì thế ngăn ngừa được sự thực thi không ổn định của I/O
2.7.2 Nhƣợc điểm:
- Hỗ trợ không đồng đều cho các doanh nghiệp
- Sự tin tưởng chưa cao đối với nhiều doanh nghiệp
- Những hạn chế về hiểu biết nghiệp vụ: Các CSDL NoSQL không có nhiều sự liên
hệ tới các công cụ I thường được sử dụng, trong khi những yêu cầu và phân tích hiện đại đơn giản nhất thì cũng liên quan khác nhiều tới sự tinh thông về lập trình
- Tính mới m của NoSQL có nghĩa là không có nhiều lập trình viên và người quản trị mà biết công nghệ này
- Những vấn đề về tính tương thích: Mỗi CSDL NoSQL có các giao diện lập trình ứng dụng API riêng của mình, các giao diện truy vấn độc nhất vô nhị, và những sự riêng biệt
- Khó khăn trong việc lưu trữ các dữ liệu mang nội dung nghiệp vụ phức tạp
Trang 36Chương 3: CÁC LOẠI CSDL NOSQL
Tính đến thời điểm này có đến 150 loại CSDL NoSQL chia thành 13 mô hình lưu trữ
dữ liệu khác nhau, trong đó có 4 loại CSDL NoSQL thông dụng như: CSDL hướng cột (Wide Column Store/ColumnFamilies), CSDL cặp khoá – giá trị Key –Value Store/Tuple Store),CSDL đồ thị Graph Database ), CSDL hướng tài liệu Document Store )[1] Trong mỗi loại mô hình có các hệ quản trị CSDL đặc trưng như:
Hình 3.1: Các loại cơ sở dữ liệu NoSQL
Ghi chú: Trích nguồn [38]
Trong chương này, tôi sẽ trình bày 4 loại cơ sở dữ liệu đặc trưng của NoSQL: CSDL hướng cột, CSDLcặp khoá – gía trị, CSDLđồ thị, CSDLhướng tài liệu Cùng với các ưu và khuyết điểm của mỗi loại, cuối cùng là cách chọn một hệ quản trị cơ sở dữ liệu NoSQL phù hợp với mục đích sử dụng
3.1 Cơ sở dữ iệu cặp hoá – giá trị Key value store)
3.1.1 Giới thiệu
Cơ sở dữ liệu cặp khoá – giá trị tương tự như kiểu lược đồ hay từ điển, trong đó dữ liệu được xác định bằng một khoá duy nhất Giá trị (value) là một mảng byte chưa được
Trang 37biên dịchvà được lưu dưới dạng BLOB (Binary large object), nó hoàn toàn không thểnhìn thấy trong hệ thống Khoá (key) là cách duy nhất lấy được giá trị đã lưu trữ.Các giá trị hoàn toàn tách biệt và không phụ thuộc vào nhau, quan hệ của chúng được quản lý bởi các ứng dụng logic Do cấu trúc dữ liệu rất đơn giản nêncơ sở dữ liệu cặp khoá – giá trị hoàn toàn không có lược đồ Giá trị mới có thể được thêm vào trong lúc hệ thống đang chạy mà không gây ra bất cứ xung đột dữ liệu nào và không ảnh hưởng đến hệ thống Việc sưu tập các cặp khoá –giá trị có thể thêm một số cấu trúc dữ liệu vào mô hình dữ liệu Cơ sở dữ liệu cặp khoá – giá trị hữu ích cho các xử lý đơn giản, chỉ phụ thuộc vào thuộc tính khoá [27]
Hình 3.2: Ví dụ về cấu trúc của cơ sở dữ liệu cặp khoá – giá trị
Một cơ sở dữ liệu cặp khoá – giá trị có hiệu suất rất tốt bởi vì mô hình truy cập dữ liệu được chú trọng rất nhiều vào việc tối ưu hóa, bất kể có bao nhiêu máy dùng để lưu trữ dữ liệu và dữ liệu có độ lớn như thế nào thì mô hình này vẫn đáp ứng được yêu cầu
3.1.2Khảo sát cơ sở dữ iệu NoSQL Dynamo
Khảo sát cơ sở dữ liệu NoSQL Dynamo để có cái nhìn tổng quan cho cơ sở dữ liệu cặp khóa- giá trị.Dynamo là một hệ cơ sở dữ liệu khoá – giá trị phân tán, được giới thiệu bởi mazon và được dùng trong các dịch vụ của hãng này Dynamo cung cấp PI truy vấn đơn giản, cho phép người dùng có thể tìm lại giá trị cho khoá và đặt chúng vào cặp khoá – giá trị để lưu trữ, kích thước hệ thống phải nhỏ hơn một megabyte
Hệ thống được thiết kế để làm việc trong một mạng lưới các nút, được xây dựng
từ phần cứng và giả lập rằng tại mỗi nút và mỗi kết nối mạng có thể lỗi bất cứ lúc nào
Nguyễn Văn , 28 16/10/2001 Đại Học CNTT
16789273
167297311
167829919
Trang 38Mạng lưới các nút phải được tăng cường với những nút mới, và các nút cũ có thể bị thay thế.Khối lượng công việc được phân bổ t lệ thuận với khả năng của các nút Mỗi nút trong hệ thống sẽ có trách nhiệm như nhau, nên sẽ không có các nút chuyên dụng cho việc định tuyến, thay thế hay thiết lập
Để có thể tránh được tác hại từ các sự cố ảnh hưởng đến một số dữ liệu trung tâm,mỗi cặp khoá –giá trị sẽ được nhân rộng và lưu trữ phân tán trong các trung tâm dữ liệu toàn cầu Dynamo có thể hiệu chỉnh để đáp ứng giữa tính sẵn sàng, nhất quán, chi phí và hiệu năng để phù hợp với các loại hình dịch vụ khác nhau Cũng giống như một
số cơ sở dữ liệu phân tán, Dynamo dùng MVCC để đảm bảo tính nhất quán cuối Để đáp ứng được tất cả yêu cầu này, Dynamo phải kết hợp các công nghệ hiện có từ cơ sở
dữ liệu phân tán, mạng peer to peer và hệ thống mạng phân tán.[7][13][27]
Dynamo có 2 chức năng PI để truy vấn dữ liệu:
- Get key : Trả về một đối tượng có giá trị tương ứng với khoá hoặc một danh sách các đối tượng context và giá trị tương ứng của chúng Các đối tượng context có thể lưu trữ các metadata như giá trị
- Put key, context,value : Lưu dữ liệu được đính kèm theo khoá
Ƣu điểm
- Một lợi ích lớn nhất cho hầu hết các giải pháp NoSQL là có thể mở rộng theo chiều ngang (horizontal scalable)
- Lack- Schema: cho phép thay đổi dữ liệu khi cần, linh hoạt hơn
- Hỗ trợ nhất quán cuối Eventual Consistency , tính năng trong ứng dụng không cần
hỗ trợ đầy đủ CID
Khuyết điểm
Truy vấn đơn giản dùng các khoá trong cơ sở dữ liệu cặp khoá – giá trị thì rất dễ dàng,
vì nó đã được lập chỉ mục Tuy nhiên các truy vấn phức tạp hơn, gây rất nhiều khó khăn cần phải có sự hỗ trợ mã hoá từ các nhà phát triển ứng dụng
3.1.3 Các sản ph m ti u biểu của cơ sở dữ iệu cặp hoá – giá trị
- DynamoDB
Trang 39- Azure Table Storage
- Oracle NOSQL Database
3.2 Cơ sở dữ iệu hướng cột Wide Column Store/column Families)
3.2.1 Giới thiệu
Cơ sở dữ iệu hướng cột Column Families Store hay Column Oriented Store) hệ cơ
sở dữ liệu cho phép truy xuất ngẫu nhiên, tức thời, với khả năng lưu trữ một lượng lớn
dữ liệu có cấu trúc Dữ liệu tồn tại dưới dạng bảng với hàng t bảng ghi và mỗi bảng ghi có thể chứa hàng triệu cột dữ liệu Cơ sở dữ liệu hướng cột được biết đến nhiều nhất thông qua triển khai igtable của Google với dự án “ Distributed storage system for managing structured data that is designed to scale to a very large size” igtable được sử dụng trong hơn 60 dự án của Google đòi hỏi cơ sở dữ liệu có hiệu suất cao và
độ trễ thấp
Hệ thống được triễn khai từ vài trăm cho đến hàng nghìn thiết bị, dẫn đến khả năng lưu trữ lên đến hàng petabyte nhưng vẫn đảm bảo hiệu suất cao Mô hình dữ liệu thưa thớt, phân tán, ánh xạ đa chiều bền vững Trong mô hình dữ liệu này một số lượng các cặp giá trị có thể được lưu trữ tuỳ ý trong các dòng, vì giá trị không được định nghĩa trong hệ thống, mối quan hệ giữa các bộ dữ liệu và kiểu dữ liệu chỉ là các chuỗi
và không được hỗ trợ Tương tự như với cơ sở dữ liệu cặp khoá – giá trị, các tính năng
bổ sung chỉ được thực hiện trong các ứng dụng logic
Do định dạng của các bảng, hàng, cột nên nhìn chung cơ sở dữ liệu hướng cột có nhiều điểm tương đồng với cơ sở dữ liệu quan hệ, nếu nhìn từ bên ngoài, nhưng thật sự
có nhiều khác biệt lớn từ bên trong Điểm khác biệt chính nằm ở việc xử lý giá trị
“null”.Khi xem xét nhiều trường hợp khác nhau của thuộc tính, cơ sở dữ liệu quan hệ
sẽ lưu trữ giá trị “null” trong mỗi cột một tập dữ liệu không có giá trị Ngược lại, cơ sở
Trang 40dữ liệu hướng cột chỉ chứa một cặp giá trị trong mỗi dòng, nếu bộ dữ liệu cần nó Đây
là “sparse” theo Google, nó làm cho cơ sở dữ liệu hướng cột rất hiệu quả trong việc quản lý số lượng lớn dữ liệu với các thuộc tính khác nhau và được lưu trữ thành các cụm lớn
Ngoài ra, một trong những khác biệt đó chính khác là việc lưu trữ dữ liệu theo dòng trong cơ sở dữ liệu quan hệ) so với việc lưu trữ dữ liệu theo cột (trong column family databases Nhưng sự khác biệt lớn là ở chính khái niệm của nó Chúng ta không thể áp dụng cùng một giải pháp mà chúng ta sử dụng trong cơ sở dữ liệu quan
hệ vào trong cơ sở dữ liệu hướng cột Đó là bởi vì cơ sở dữ liệu cột (column family database) phi quan hệ.[17][22][27]
3.2.2 Cấu tr c của cơ sở dữ iệu hướng cột
- Columns & Column Families
Các thông tin được trình bày dưới đây là dựa theo cơ sở dữ liệu NoSQL Cassandra, và thuật ngữ có thể khác đôi chút giữa các phần khác nhau của phần mềm Tuy nhiên khái niệm chung là như nhau bất kể là hệ quản trị cơ sở dữ liệu hướng cột nào Một cột (column) là đơn vị cơ bản trong một hệ quản trị cơ sở dữ liệu hướng cột, một cột bao gồm một cặp khoá và giá trị
í dụ: Một cột có thể có giá trị “Tên” là khoá và giá trị là một chuỗi đại diện cho tên
người nào đó
Khóa Giá trị
Tên Nhi Trần Trong hầu hết các hệ thống, sẽ có thành phần thứ ba của dữ liệu để hỗ trợ cho cột
dữ liệu: một dấu thời gian sẽ được dùng để lưu lại thời gian khi thêm, xoá, sửa dữ liệu
và thời gian lưu lại sẽ là mốc thời gian gần nhất Chúng ta có thể bỏ qua dấu thời gian
để đơn giản hoá Không giống như với cơ sở dữ liệu quan hệ truyền thống, một cột trong cơ sở dữ liệu cơ sở dữ liệu hướng cột không được xác định trước, mà nó sẽ được tạo ra khi bạn thêm dữ liệu vào hệ thống