Tải bản đầy đủ (.pdf) (115 trang)

TÌM HIỂU NOSQL – MONGODB và xây DỰNG ỨNG DỤNG MINH họa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (13.56 MB, 115 trang )

ĐẠI HỌC QUỐC GIA TP HCM
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN


TRẦN THỊ YẾN NHI

TÌM HIỂU NOSQL – MONGODB VÀ XÂY
DỰNG ỨNG DỤNG MINH HỌA
KHÓA LUẬN CAO HỌC
NGÀNH: KHOA HỌC MÁY TÍNH
Mã số: 60 48 01 01
NGƯỜI HƯỜNG DẪN KHOA HỌC:
THẦY TS. NGUYỄN GIA TUẤN ANH

TP HỒ CHÍ MINH – 2015


LỜ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

1


LỜ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

2


LỜ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.

3


MỤ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
4


2.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
5


3.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
6


4.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
7


5.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

8



DANH 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


9


DANH 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

10


Bả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

11


DANH 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
12


Hì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
13


Hì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

14


Chƣơ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.

15


Có 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.

16



1.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 .
17


-

Đá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


18


Chƣơ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 schemafree . Đượ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
19


2.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ị.


20


ảng 2.1: ảng ví dụ minh họa về cặp khóa giá trị
Khóa (Key)
User_id
User_Age
User_Name
User_Title
User_Sex

Giá trị (Value)
1201065
16
John
New student
Female

Các hệ thống phân tán, việc lưu trữ chấp nhận trùng lặp dữ liệu. Một yêu cầu truy
vấn dữ liệu có thể gửi tới nhiều máy cùng lúc, khi một máy nào nó gặp sự cố cũng
không ảnh hưởng nhiều tới toàn bộ hệ thống. Để đảm bảo tính thời gian thực trong các
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]

21


2.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.
-

Big Data

Kích thước của dữ liệu ngày càng tăng và các nguồn tạo dữ liệu ngày càng trở nên đa
dạng. Do đó các thách thức về dữ liệu lớn đặt ra các vấn đề:
 Hiệu quả lưu trữ và truy cập vào một lượng lớn dữ liệu là khó khăn. Nhu cầu bổ
sung khả năng chịu lỗi và sao lưu làm cho mọi thứ thậm chí còn phức tạp hơn.
 Thao tác với dữ liệu lớn liên quan đến tiến trình đang chạy song song. Sự hồi
phục bất kỳ thất bại trong một quá trình thao tác dữ liệu và cung cấp kết quả
trong một thời gian ngắn hợp lý của thời gian là phức tạp.
 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

22


lớ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
23


nà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 .

24


×