HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Đề tài:
“TÌM HIỂU CÔNG NGHỆ ĐIỆN TOÁN ĐÁM MÂY
VÀ CÁCH THU THẬP LƯU TRỮ DỮ LIỆU GIÁM
SÁT”
Giảng viên hướng dẫn : PGS.TS
Sinh viên thực hiện
:
Lớp
: D07CN4
Khóa
: 2007-2011
Hệ
: CHÍNH QUY
Hà Nội, tháng 11/2011
LỜI CẢM ƠN
Trước tiên em xin gửi lời cảm sâu sắc tới các thầy cô giáo trong khoa Công nghệ thông tin, Học
Viện Công Nghệ Bưu Chính Viễn Thông đã tận tình giảng dạy, truyền đạt cho em những kiến
thức, kinh nghiệm quý báu trong suốt năm năm qua. Xin chân thành cám ơn thầy PGS.TS.Từ
Minh Phương – trưởng Khoa Công nghệ thông tin, thầy TS. Phạm Thế Quế - nguyên là phó khoa
Công nghệ thông tin, thầy PGS.TS Trần Đình Quế - phó khoa Công nghệ thông tin, thầy TSKH
Nguyễn Minh Hải – trưởng bộ môn Hệ thống thông tin, thầy TS. Hoàng Xuân Dậu – trưởng bộ
môn Khoa học máy tính, thầy TS. Nguyễn Duy Phương – trưởng bộ môn Công nghệ phần mềm,
cô Đặng Ngọc Phương tại Văn phòng Khoa, và nhiều thầy cô khác.
Đặc biệt em xin gửi lời cảm ơn tới thầy PGS.TS Đỗ Trung Tuấn, giảng dạy tại trường Đại Học
Khoa Học Tự Nhiên, đã tận tình giúp đỡ, trực tiếp hướng dẫn, chỉ bảo em trong suốt quá trình
thực hiện đồ án tốt nghiệp.
Nhân dịp này, xin cảm ơn các bạn sinh viên khóa D2007 – CNTT đã đóng góp nhiều ý kiến quý
báu về chuyên môn để tôi thực hiện đồ án này !
MỤC LỤC
MỞ ĐẦU..........................................................................................................................................1
Phần cuối là kết luận và các tài liệu tham khảo................................................................................1
DANH MỤC HÌNH VẼ..................................................................................................................2
KÍ HIỆU CÁC CỤM TỪ VIẾT TẮT VÀ THUẬT NGỮ................................................................3
CHƯƠNG 1. HỆ THỐNG DỮ LIỆU TRÊN ĐÁM MÂY..............................................................5
1. Hoàn cảnh ra đời của công nghệ Điện toán đám mây...............................................5
1.2. Hệ thống dữ liệu phân tán trên đám mây................................................................6
1.2.1 Xử lí phân tán......................................................................................................6
1.2.2 Cơ sở dữ liệu phân tán.........................................................................................6
1.2.3 Nhân bản dữ liệu trên đám mây...........................................................................7
1.2.4 Quản lý giao dịch...............................................................................................11
1.3 Tổ chức dữ liệu trên đám mây..............................................................................15
1.3.1 Tổng quan về MongoDB...................................................................................15
1.3.2 Đơn vị lưu trữ cơ bản nhất – document..............................................................16
1.3.3 Collections.........................................................................................................17
1.3.4 Lưu trữ tệp tin....................................................................................................17
1.3.5 Cách cài đặt MongoDB......................................................................................18
1.3.6 Các thao tác dữ liệu trong MongoDB................................................................19
1.3.7 Nhân bản dữ liệu................................................................................................22
1.3.8 Phương pháp Sharding.......................................................................................29
1.4 Xử lí dữ liệu trên đám mây với Map – Reduce.....................................................37
1.4.1 Đặt vấn đề..........................................................................................................37
1.4.2 Giới thiệu Map – Reduce...................................................................................37
1.4.3 Thực thi Map – Reduce trong hệ thống phân tán...............................................40
1.4.4 Một số bài toán trong thực tế sử dụng Map – Reduce........................................41
1.5 Kết luận................................................................................................................42
CHƯƠNG 2.XÂY DỰNG HỆ THỐNG LƯU TRỮ ẢNH TRÊN ĐÁM MÂY............................43
2.1 Hệ thống camera giám sát.....................................................................................43
2.1.1 Ưu điểm của IP camera......................................................................................44
2.1.2 Phần mềm điều khiển IP camera........................................................................44
2.2. Xây dựng hệ thống lưu trữ ảnh trên đám mây......................................................46
2.2.1 Công cụ sử dụng................................................................................................46
2.2.2 Xác định các thuộc tính của file ảnh..................................................................46
2.2.3 Xử lý truy vấn....................................................................................................47
2.2.4 Tổ chức dữ liệu trên các server lưu trữ trên đám mây........................................48
2.3.1 Một số giao diện................................................................................................49
Hình 2.11 là kết quả tìm kiếm ở dạng các đường liên kết, ta bấm vào các đường liên kết
để xem ảnh tương ứng với thời gian và địa điểm........................................................51
2.3.2 Một số đoạn mã chương trình............................................................................51
2.4 Kết luận................................................................................................................55
KẾT LUẬN....................................................................................................................................56
TÀI LIỆU THAM KHẢO..............................................................................................................57
Đồ án tốt nghiệp
MỞ ĐẦU
Ngày nay hệ thống camera giám sát đã trở nên rất thông dụng, có thể được lắp đặt để
giám sát hoạt động của mọi nơi như: nhà máy, văn phòng, cơ quan xí nghiệp, khách sạn,
cửa hàng, nhà riêng… Người quản lý không cần phải đi đến tận nơi quan sát hoặc có thể ở
bất cứ đâu, bất cứ lúc nào mà vẫn theo dõi được công việc diễn ra. Hệ thống gồm có một
hoặc nhiều camera, tự động ghi hình khu vực cần quan sát. Tín hiệu bằng hình ảnh được
truyền từ các camera về trung tâm, tại trung tâm có người theo dõi, để nắm được và xử lý
các vấn đề có thể xảy ra tại hiện trường.
Những hệ thống hoạt động liên tục 24/7, khi không có người quan sát tại trung tâm, ta nên
đặt một chế độ đặc biệt cho camera, ví dụ: chụp lại hình ảnh khi phát hiện chuyển động,
việc đặt chế độ này nhờ vào phần mềm điều khiển. Hình ảnh đó sẽ được lưu vào ổ chứa
dữ liệu tại trung tâm để làm tư liệu. Chẳng hạn như có kẻ gian đột nhập vào khu vực có
camera, ảnh sẽ được chụp lại để làm bằng chứng. Những dữ liệu hình ảnh như thế cần
được lưu trữ sao cho tìm kiếm, tra cứu dễ dàng và chúng phải tồn tại lâu dài.
Trong đồ án này, em trình bày ứng dụng của công nghệ điện toán đám mây vào việc lưu
trữ và xử lí dữ liệu hình ảnh được ghi lại bởi hệ thống camera giám sát. Đồ án gồm có các
phần sau:
Chương 1: Hệ thống dữ liệu trên đám mây.
1. Hoàn cảnh ra đời của công nghệ Điện toán đám mây.
2. Hệ thống dữ liệu phân tán trên đám mây.
3. Phương pháp tổ chức dữ liệu trên đám mây.
4. Phương pháp xử lí dữ liệu trên đám mây.
Chương 2: Xây dựng hệ thống lưu trữ ảnh trên đám mây.
1. Hệ thống camera giám sát.
2. Xây dựng hệ thống lưu trữ ảnh trên đám mây.
3. Xây dựng chương trình phía người dùng.
Phần cuối là kết luận và các tài liệu tham khảo
Nguyễn Minh Hải – D07CN4
Trang 1
Đồ án tốt nghiệp
DANH MỤC HÌNH VẼ
Hình 1.1 Ví dụ về sơ đồ phân bố của các sites trong hệ cơ sở dữ liệu phân tán..............................7
Hình 1.2 Mô hình Master – Slave...................................................................................................9
Hình 1.3 Mô hình nhiều master – một slave.................................................................................10
Hình 1.4: Mô hình nhân bản theo cụm..........................................................................................11
Hình 1.5: Sơ đồ các trạng thái của giao dịch.................................................................................13
Hình 1.6: Lịch biểu........................................................................................................................14
Hình 1.7: Lịch biểu tuần tự............................................................................................................14
Hình 1.8: Mô hình CSDL hướng tài liệu.......................................................................................16
Hình 1.9: CSDL quan hệ thông thường.........................................................................................16
Hình 1.10: Các thành phần bộ cài.................................................................................................18
Hình 1.11: Khởi động MongoDB Server......................................................................................19
Hình 1.12: Khởi động MongoDB Client.......................................................................................19
Hình 1.13: Lưu tệp tin trong MongoDB........................................................................................21
Hình 1.14:Truy vấn tệp tin............................................................................................................22
Hình 1.15: Nhân bản theo mô hình Single Master – Single Slave................................................22
Hình 1.16 : Thiết lập Master..........................................................................................................23
Hình 1.17: Thiết lập Slave.............................................................................................................24
Hình 1.18: Multi Master – Single Slave........................................................................................24
Hình 1.19: Mô hình Primary – Secondary......................................................................................26
Hình 1.20: Khi primary bị lỗi, secondary tự động biến thành primary.........................................26
Hình 1.21: Primary mới truyền dữ liệu sang primary ban đầu (trở thành secondary mới)............27
Hình 1.22: Nhiều secondary nhận dữ liệu từ một primary, (priority là độ ưu tiên trở thành
primary)..........................................................................................................................................28
Hình 1.23: Khi primary bị lỗi........................................................................................................28
Hình 1.24: primary mới đã được tạo ra.........................................................................................29
Hình 1.25: Minh họa Sharding......................................................................................................30
Hình 1.26: Các thành phần hệ thống sharding dữ liệu..................................................................31
Hình 1.27: Kết hợp nhân bản theo cụm với Sharding...................................................................37
Nguyễn Minh Hải – D07CN4
Trang 2
Đồ án tốt nghiệp
Hình 1.28: Sơ đồ hoạt động của Map – Reduce............................................................................38
Hình 1.29: Sơ đồ hệ thống phân tán đơn giản...............................................................................41
Hình 2.1: Sơ đồ hệ thống camera giám sát....................................................................................43
Hình 2.2: Phần mềm WebcamXP..................................................................................................44
Hinh 2.3: Chức năng tự động chụp hình.......................................................................................45
Hình 2.4: MongoDB trong PHP....................................................................................................46
Hình 2.5: Xử lí truy vấn................................................................................................................47
Hình 2.6: Thiết kế sơ đồ các server trên đám mây........................................................................48
Hình 2.7: Giao diện web................................................................................................................50
Hình 2.8: Đăng nhập......................................................................................................................50
Hình 2.9: Form tải ảnh lên.............................................................................................................51
Hình 2.10: Tìm kiếm ảnh theo thời gian chụp...............................................................................51
Hình 2.11: Kết quả tìm kiếm.........................................................................................................51
KÍ HIỆU CÁC CỤM TỪ VIẾT TẮT VÀ THUẬT NGỮ
Từ viết tắt hoặc thuật ngữ
Ý nghĩa
CSDL
Cơ sở dữ liệu
HQT
Hệ quản trị
Nguyễn Minh Hải – D07CN4
Trang 3
Đồ án tốt nghiệp
DBMS: database management system
DDBMS: Distribute Database
Hệ quản trị cơ sở dữ liệu
Hệ quản trị cơ sở dữ liệu phân tán
Management Sytem
DDBS:Distribute Database Sytem
SQL: Structure query language
PHP: Hypertext Preprocessor
CMOS:Complementary Metal-OxideSemiconductor.
Hệ thống dữ liệu phân tán
Ngôn ngữ truy vấn có cấu trúc
Ngôn ngữ lập trình PHP
Một loại công nghệ dùng để chế tạo vi
mạch tích hợp.
Master
Máy chứa dữ liệu cần nhân bản
Slave
Máy nhận dữ liệu nhân bản
Map - Reduce
Thuật toán Map – Reduce
Replica Data
Nhân bản dữ liệu
Replica Set
Sharding Data
Nguyễn Minh Hải – D07CN4
Nhân bản theo cụm
Phân tán dữ liệu
Trang 4
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
CHƯƠNG 1. HỆ THỐNG DỮ LIỆU TRÊN ĐÁM MÂY
1. Hoàn cảnh ra đời của công nghệ Điện toán đám mây
Tổ chức lưu trữ, bảo vệ thông tin dữ liệu là rất quan trọng đối với các các cá nhân, tổ
chức. Nhất là ngày nay, các tổ chức như công ty, doanh nghiệp có quy mô xuyên quốc gia,
dữ liệu về khách hàng, nhân viên, kinh doanh… sẽ rất khổng lồ, và cần phải có một nơi
lưu trữ an toàn tin cậy, có thể truy nhập mọi lúc, mọi nơi. Để thực hiện việc lưu trữ đó,
các tổ chức đã phải đầu tư mua phần cứng máy tính,ổ lưu trữ, phần mềm, thuê cơ sở hạ
tầng mạng internet, thuê các chuyên gia tin học để phát triển, lắp đặt, bảo trì hệ thống,
ngoài ra còn phải mua mới các thiết bị phần cứng khi nó bị cũ đi. Chi phí cho việc duy trì
sự hoạt động của hệ thống máy tính như thế là rất lớn.
Từ bài toán điển hình như vậy, chúng ra thấy được rằng nếu có một nơi cung cấp dịch vụ
lưu trữ dữ liệu an toàn thì các tổ chức sẽ không còn phải quan tâm đến cơ sở hạ tầng cho
công nghệ nữa, chỉ tập trung vào công việc chuyên môn, chắc chắn sẽ có hiệu quả hơn.
Đó là một trong những lí do quan trọng nhất thúc đẩy sự ra đời của công nghệ Điện toán
đám mây.
Công nghệ này là bước phát triển tiếp theo của mạng internet. Thuật ngữ “đám mây” ý
nói đến phần cơ sở hạ tầng của công nghệ gồm có: máy chủ, các kho lưu trữ dữ liệu,
các phần mềm điều hành mạng, các thiết bị phần cứng, các phần mềm ứng dụng, các
dịch vụ cung cấp cho người dùng thông qua giao diện web. Điện toán đám mây tiến bộ
hơn internet ở chỗ là: máy tính của người sử dụng không cần có ổ cứng dung lượng lớn và
không cần cài bất kì một phần mềm ứng dụng nào, ngoại trừ trình duyệt web và có kết nối
internet là có thể sử dụng các dịch vụ của đám mây, là các dịch vụ mà người dùng sử
dụng tài nguyên trên internet, chứ không phải ở máy tính của họ. Chẳng hạn như Google
Docs là một ví dụ của dịch vụ điện toán đám mây, tức là máy của người dùng không cần
cài office mà vẫn có thể làm việc được với word, hay excel, nhờ vào dịch vụ trên trang
web. Sau đó mọi dữ liệu được tạo ra từ người dùng sẽ lưu lại trên hệ thống lưu trữ của
nhà cung cấp dịch vụ. Khi cần làm việc với dữ liệu, người dùng chỉ cần mở trình duyệt
web, đăng nhập, là có thể lựa chọn và thao tác với các dữ liệu của cá nhân mình. Ngoài ra,
một số các dịch vụ khác cũng được cung cấp như là: dịch lưu trữ dữ liệu, dịch vụ máy
chủ, dịch vụ phần mềm ứng dụng. Ưu điểm nổi bật của các dịch vụ điện toán đám mây là
đáp ứng nhu cầu của người dùng một cách nhanh nhất, chất lượng đảm bảo, mọi lúc, mọi
nơi. Một số nhà cung cấp dịch vụ Điện toán đám mây là Google, Facebook, Microsoft,
IBM, Oracle,Yahoo,…
Nguyễn Minh Hải – D07CN4
Trang 5
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
1.2. Hệ thống dữ liệu phân tán trên đám mây.
Như đã nêu ở trên, từ phần này em sử dụng thuật ngữ “đám mây” với ý nghĩa là phần cơ
sở hạ tầng của công nghệ Điện toán đám mây. Dữ liệu trên đám mây được tập trung tại
các kho lưu trữ với dung lượng rất lớn (chẳng hạn như Facebook, lưu trữ hàng chục tỉ bức
ảnh được tải lên từ người dùng). Để đảm bảo tốc độ xử lí các yêu cầu từ nhiều triệu người
dùng, các nhà cung cấp đã tổ chức dữ liệu theo mô hình phân tán, tức là đặt nhiều kho
(site) lưu trữ trên nhiều vùng địa lí. Tại mỗi site gồm có cơ sở dữ liệu và hệ thống tự xử lý
các yêu cầu người dùng mà không cần phụ thuộc vào các site lưu trữ khác.
1.2.1 Xử lí phân tán
Xử lý phân tán hay còn gọi là hệ thống tính toán phân tán đó là một số bộ phận xử lý tự
vận hành được liên kiết bởi một mạng máy tính và hợp đồng thực hiện các nhiệm vụ mà
chúng được phân công. Các bộ phận xử lý là các thiết bị tính toán có thể chạy được một
chương trình trên chính nó. Những gì được phân tán? Đó là các thiết bị xử lý, một kiểu
khác của phân tán là chức năng: nhiều chức năng của hệ thống máy tính có thể được
chuyển giao cho các thành phần phần cứng và phần mềm thực hiện. Kiểu thứ ba là theo
dữ liệu: Dữ liệu được dùng bởi một số ứng dụng có thể được phân tán cho một số vị trí xử
lý. Cuối cùng là quyền điều khiển cũng có thể được phân tán. Quyền điều khiển việc thức
hiện một số nhiệm vụ cũng có thể được phân tán. Các hệ thống xử lý phân tán có thể được
phân loại như sau: Mức độ kết nối, sự liên đới giữa các thành phần, cấu trúc tương giao,
và sự đồng bộ hoá giữa các thành phần.Tại sao lại thực hiện phân tán? Đó là vì nhằm
thích ứng tốt hơn với việc phân bố rộng rãi của người dùng, công ty, xí nghiệp. Quan
trọng hơn, nhiều ứng dụng hiện tại của công nghệ máy tính cũng được phân tán. Chúng ta
có thể khẳng định rằng: lý do của việc xử lý phân tán là do nó có thể thực hiện tốt hơn các
bài toán lớn và phức tạp mà chúng gặp phải hiện nay bằng cách sử dụng quy tắc “Chia để
trị “. Xử lý phân tán có hai ưu điểm cơ bản: trước hết tận dụng được sức mạnh tính toán
bằng cách sử dụng nhiều bộ phận xử lý một cách tối ưu đòi hỏi phải nghiên cứu các hệ
thống phân tán và hệ thống xử lý song song. Ưu điểm thứ hai là bằng việc giả quyết bài
toán theo từng nhóm hoạt động khá độc lập, chúng ta có thể kiểm soát được chi phí phát
triển phần mềm.
1.2.2 Cơ sở dữ liệu phân tán
Hệ cơ sở dữ liệu (CSDL) phân tán - Distribute Database Sytem (DDBS) : là một tập hợp
dữ liệu có liên đới logic và được phân bố trên các nút của một mạng máy tính. Hệ quản trị
CSDL phân tán (Distribute Database Management Sytem - DDBMS) là một hệ thống
phần mềm cho phép quản lý các CSDL phân tán và làm cho việc phân tán trở nên vô hình
đối với người sử dụng.
Nguyễn Minh Hải – D07CN4
Trang 6
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
Có thể nói DBMS không phải là một tập hợp các tập tin được lưu trữ riêng rẽ tại các nút
của mạng máy tính. Mà một DDBS là các tập tin vừa liên đới logic và vừa phải có cấu
trúc và phải được truy xuất qua một giao diện chung.
Mô hình của DDBS:
Hình 1.1 Ví dụ về sơ đồ phân bố của các sites trong hệ cơ sở dữ liệu phân tán
Trong mô hình trên, dữ liệu được lưu tại 4 sites khác nhau, các site có thể giao tiếp với
nhau qua môi trường mạng. Dữ liệu trên đám mây, được tổ chức theo kiểu phân tán, một
mặt, giúp tăng tốc độ xử lí truy vấn từ phía người dùng, mặt khác, khi có một site bị lỗi,
thì truy vấn của người dùng sẽ được gửi sang các site khác để thực hiện và trả về kết quả
bình thường, mọi thực hiện bên trong là trong suốt với người dùng.
1.2.3 Nhân bản dữ liệu trên đám mây
Là việc tạo ra nhiều bản sao của một phần hoặc toàn bộ dữ liệu, sau đó lưu chúng trên các
sites. Nhân bản có tác dụng sau:
1. Tạo ra sự sẵn sàng của dịch vụ: đề phòng trường hợp một site bị lỗi, các
sites khác sẽ xử lí yêu cầu và trả về kết quả cho người dùng.
2. Tăng hiệu suất xử lí: cụ thể là đặt các sites tại các khu vực địa lí để phục vụ
người dùng tại khu vực đó, sẽ làm giảm chi phí truyền thông trên mạng,
tăng tốc độ đáp ứng truy vấn.
3. Khả năng mở rộng phạm vi: với nhân bản dữ liệu, các sites mới có thể được
Nguyễn Minh Hải – D07CN4
Trang 7
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
tạo ra trên các vùng địa lí, tăng phạm vi và chất lượng phục vụ của dịch vụ.
Bên cạnh những lợi ích như vậy, nhân bản dữ liệu đặt ra vấn đề là chúng ta phải kiểm soát
được sự nhất quán của dữ liệu, tức là mỗi khi có sự thay đổi dữ liệu từ một site thì sự
thay đổi phải được lan truyền đến các các site khác.
1.2.3.a Một số thuật ngữ
• Master: là máy chứa dữ liệu cần được nhân bản. Đóng vai trò là nơi phát
sinh dữ liệu.
• Slave: là máy nhận dữ liệu nhân bản từ master.
• Single Master – Single Slave: mô hình một master, một slave.
• Single Master – Multi Slave: mô hình một master, nhiều slave.
• Multi Master – Single Slave: mô hình nhiều master, một slave.
• Nhân bản theo cụm: Các máy tính được tập hợp lại thành một cụm, trong đó
có một máy primary (chức năng giống master) và nhiều máy secondary
(chức năng giống slave) nhưng khi máy primary bị lỗi, một trong các máy
còn lại sẽ trở thành primary mới.
• Primary: là máy chứa dữ liệu cần nhân bản giống như master, nhưng có thể
thay đổi thành máy secondary.
• Secondary: là máy nhận dữ liệu từ primary, nhưng khi primary bị lỗi, nó sẽ
chuyển thành primary mới để đảm bảo hệ thống vẫn hoạt động khi lỗi xảy
ra.
1.2.3.b Môi trường nhân bản
Môi trường nhân bản được định nghĩa là tập hợp các đối tượng được nhân bản, các ảnh,
và các phương pháp để thực hiện việc nhân bản. Các vấn đề cần quan tâm khi tạo ra một
môi trường nhân bản là:
• Xác định rõ các đối tượng muốn nhân bản. Các đối tượng phải là thành viên
của một nhóm nhân bản. Một nhóm nhân bản có thể bao gồm các đối tượng
từ nhiều lược đồ dữ liệu, nhưng mỗi đối tượng có thể chỉ thuộc về một
nhóm đối tượng.
• Xác định trạm muốn có các nhân bản. Xác định trạm nào sẽ là trạm chủ
chứa tất cả các nhân bản, và xác định trạm nào là trạm Snapshot sẽ chứa
đựng một tập con các nhân bản.
• Xác định cách thức mà dùng để truyền đi các thay đổi giữa các trạm nhân
bản: đồng bộ hay không đồng bộ. Nếu chọn phương pháp không đồng bộ thì
Nguyễn Minh Hải – D07CN4
Trang 8
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
phải xác định thường xuyên cách thức truyền đi các thay đổi như thế nào.
1.2.3.c Phân loại nhân bản theo thời điểm đồng bộ dữ liệu.
Snapshot: thực hiện nhân bản tại một thời điểm được định trước, điều này làm cho dữ
liệu tại các máy slave chậm được cập nhật.
Transactional Replication: dữ liệu tại master và slave được đồng bộ với nhau liên tục.
Cứ mỗi khi có thay đổi là dữ liệu được đồng bộ với nhau.
1.2.3.d Phân loại nhân bản theo chức năng các máy lưu trữ.
Một master – một hoặc nhiều slave: gồm có một máy master, và một hoặc nhiều máy
slave. Dữ liệu nhân bản được truyền từ master ra các máy còn lại, sau mỗi khoảng thời
gian định trước.
Hình 1.2 Mô hình Master – Slave
Ứng dụng: trường hợp một công ty có nhiều chi nhánh mà dữ liệu được quản lý và phát
sinh tại Trung tâm. Ví dụ: trung tâm cập nhật giá cho sản phẩm, cập nhật các loại sản
phẩm mới sản xuất.
Ưu điểm:
•
Không xảy ra sự bất đồng bộ về dữ liệu tại các chi nhánh với nhau
•
Giảm tải cho server tại trung tâm so với trường hợp cho các chi nhánh
connect thẳng vào server tại trung tâm để lấy dữ liệu
•
Tránh các tấn công trực tiếp từ bên ngoài vào server tại trung tâm
Nhược điểm:
Nguyễn Minh Hải – D07CN4
Trang 9
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
• Không mang tính sẵn sàng cao, do dữ liệu tại các slave sau mỗi khoảng thời
gian nào đó mới được nhận dữ liệu nhân bản từ master.
Nhiều master – một slave:
Hình 1.3 Mô hình nhiều master – một slave
Ứng dụng: trong trường hợp một công ty có nhiều chi nhánh và dữ liệu được phát sinh tại
các chi nhánh, cần tập trung dữ liệu tại các chi nhánh để thực hiện các báo cáo cho tình
hình hoạt động chung của công ty.
Ưu điểm:
• Giảm tải cho server tại trung tâm so với trường hợp cho các chi nhánh
connect thẳng vào server tại trung tâm để thao tác dữ liệu.
• Dữ liệu tại các chi nhánh là độc lập với nhau nên dễ quản lý, báo cáo cho
hoạt động riêng của từng chi nhánh.
Nhược điểm:
•
Không mang tính sẵn sàng cao.
•
Dễ mất dữ liệu (nếu dữ liệu tại chi nhánh bị mất thì khó phục hồi).
• Việc tổng hợp dữ liệu tại các chi nhánh về trung tâm dễ gây ra việc trùng
khóa chính.
Nguyễn Minh Hải – D07CN4
Trang 10
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
Nhân bản theo cụm:
Hình 1.4: Mô hình nhân bản theo cụm
Ứng dụng: Giúp hệ thống có thể vẫn hoạt động khi máy primary bị lỗi, bởi vì máy
secondary sẽ tự động biến đổi thành primary mới. Điều này rất quan trọng để cung cấp
các dịch vụ trên đám mây một cách liên tục.
Ưu điểm:
• Hệ thống này mang tính sẵn sàng cao vì đảm bảo cho hệ thống hoạt động
liên tục.
• Dữ liệu được đồng bộ liên tục từ primary sang secondary, sau khi lỗi xảy ra
ở máy primary , việc khôi phục dữ liệu trên máy đó được thực hiện hoàn
toàn tự động.
Nhược điểm:
• Tốn không gian lưu trữ bởi vì mỗi máy đều chứa toàn bộ cơ sở dữ liệu.
1.2.4 Quản lý giao dịch
1.2.4.a Giao dịch trong cơ sở dữ liệu
Giao dịch là một tập hợp các lệnh tạo thành một đơn vị làm việc trên dữ liệu, hoặc nó
được thực hiện một cách đầy đủ hoặc bị hủy bỏ hoàn toàn. Giao dịch được tạo ra bởi
người lập trình, hoặc là các thủ tục có sẵn trong hệ quản trị CSDL. Quản lí giao dịch để
kiểm soát sự truy cập đồng thời bằng việc định ra thứ tự các lệnh được phép truy cập vào
cùng một mục dữ liệu, mục dữ liệu có thể là một bản ghi hoặc một trường trong CSDL.
Ví dụ : Chuyển tiền từ tài khoản A sang tài khoản B là một giao dịch, gồm có:
Nguyễn Minh Hải – D07CN4
Trang 11
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
1. Kiểm tra tiền trong tài khoản A (có đủ X không?).
2. A= A – X.
3. B = B + X.
1.2.4.b Các tính chất của giao dịch
Để đảm bảo tính toàn vẹn của dữ liệu, hệ CSDL cần duy trì các tính chất sau của giao
dịch:
1. Tính nguyên tử (Atomicity): Hoặc toàn bộ các thao tác của giao dịch được
phản ánh đúng đắn trong cơ sở dữ liệu hoặc không có gì cả.
2. Tính nhất quán (Consistency): Sự thực hiện của một giao dịch phải bảo đảm
tính nhất quán của cơ sở dữ liệu.
3. Tính cô lập (Isolation): Nhiều giao dịch có thể thực thi đồng thời nhưng mỗi
giao dịch không cần biết đến các giao dịch khác đang thực hiện đồng thời.
Các kết quả trung gian của giao dịch phải được che giấu trước các giao dịch
khác.
4. Tính lâu bền (Durability): Sau khi giao dịch hoàn thành, các thay đổi đã
được tạo ra đối với cơ sở dữ liệu vẫn còn ngay cả khi xảy ra sự cố hệ thống.
1.2.4.c Các trạng thái của giao dịch
Khi giao dịch bắt đầu thực hiện nó vào trạng thái được kích hoạt và có thể thực hiện thao
tác đọc, ghi trong CSDL. Khi kết thúc thao tác cuối cùng giao dịch đạt tới trạng thái tạm
thời hoàn thành. Tại thời điểm này, giao dịch đã hoàn thành sự thực hiện của nó, nhưng
nó vẫn có thể bị bỏ dở do các thay đổi mởi chỉ lưu tạm thời trong bộ nhớ chính, chưa lưu
vào trong CSDL và như thế nếu sự cố phần cứng vẫn có thể ngăn cản sự hoàn tất của giao
dịch. Nếu không có sự cố, tất cả các giao dịch đều hoàn tất thành công (tất cả các thao tác
trong giao dịch đều được phản ánh trong cơ sở dữ liệu), khi đó giao dịch được “bàn giao”
(commited). Tuy nhiên, trong thực tế một giao dịch có thể không hoàn tất sự thực hiện
của nó. Giao dịch như vậy được gọi là bị bỏ dở (abort). Để đảm bảo được tính nguyên tử,
một giao dịch bị bỏ dở không được phép làm ảnh hưởng tới trạng thái của cơ sở dữ liệu.
Như vậy, tất cả thay đổi được tạo ra trước đó phải bị huỷ bỏ (rollback).
Sơ đồ các trạng thái của một giao dịch:
Nguyễn Minh Hải – D07CN4
Trang 12
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
Hình 1.5: Sơ đồ các trạng thái của giao dịch
• Active: Giao dịch sẽ đi vào trạng thái Active khi bắt đầu và trạng thái này sẽ
được duy trì trong khi giao dịch đang thực hiện.
• Partially Committed: Sau khi thao tác cuối cùng trong giao dịch được thực
hiện.
• Failed: Sau khi phát hiện rằng sự thực hiện không thể tiếp tục được nữa.
• Aborted: Sau khi rollback và cơ sở dữ liệu đã phục hồi lại trạng thái của nó
trước khi khởi động giao dịch.
• Committed: Giao dịch hoàn tất thành công (tất cả các thao tác được phản
ánh đầy đủ trong cơ sở dữ liệu).
1.2.4.d Lịch biểu
Lịch biểu: là thứ tự thực hiện của các giao dịch, có thể cùng lúc hoặc theo thứ tự trước –
sau.
Ví dụ : Xét hai giao dịch chuyển tiền:
1. 10$ từ tài khoản A sang tài khoản B, ứng với giao dịch T1.
2. 20$ từ tài khoản B sang tài khoản C, ứng với giao dịch T2.
Thứ tự của các lệnh trong mỗi giao dịch được thực hiện như trong hình vẽ dưới đây:
Nguyễn Minh Hải – D07CN4
Trang 13
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
Hình 1.6: Lịch biểu
Ở đây, thứ tự các lệnh trong T1 là: đọc A, A trừ đi 10, ghi A vào CSDL, đọc B, tăng B lên
10, ghi B vào CSDL. Tương tự với giao dịch T2. Hai giao dịch có thể thực hiện song
song, hoặc tuần tự.
1.2.4.e Tính khả tuần tự của lịch biểu
Lịch biểu tuần tự: là lịch biểu mà trong mỗi giao dịch các thao tác được thực hiện kế tiếp
nhau, không có thao tác của giao dịch khác xen vào, tức là thực hiện lần lượt, hết giao
dịch này đến giao dịch khác. Với một tập S gồm n giao dịch {T1, T2,.., Tn} sẽ có n! lịch
biểu tuần tự. Hình 1.7 là một ví dụ về lịch biểu tuần tự của hai giao dịch T1 và T2.
Hình 1.7: Lịch biểu tuần tự
Lịch biểu gọi là khả tuần tự: nếu nó tương đương với một lịch biểu tuần tự. Tương đương
theo nghĩa là cho ra cùng một trạng thái CSDL sau khi kết thúc việc thực hiện lịch biểu.
Như vậy, quản lí giao dịch là cơ sở để điều khiển truy cập đồng thời, bằng cách dùng lịch
biểu, tuần tự hoặc không tuần tự.
Nguyễn Minh Hải – D07CN4
Trang 14
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
1.3 Tổ chức dữ liệu trên đám mây
Trong CSDL quan hệ, dữ liệu được tổ chức thành bảng quan hệ và được chuẩn hóa chặt
chẽ, điều đó đã mang lại tác dụng lớn trong việc lưu trữ và truy vấn dữ liệu. Nhưng với sự
ra đời của công nghệ Điện toán đám mây, loại dữ liệu đa dạng (văn bản, ảnh, video,…),
khối lượng dữ liệu phải xử lí trong môi trường phân tán, (thậm chí trung bình mỗi giây)
cực kì lớn, chính vì vậy CSDL quan hệ không thể hoạt động hiệu quả được. Thật vậy, ta
hãy xét ví dụ: có một hệ cơ sở dữ liệu phân tán về khách hàng của một công ty xuyên
quốc gia, được lưu tại 3 sites khác nhau, cách xa hàng chục ngàn km, với số lượng hàng
trăm triệu bản ghi. Khi đó nếu dữ liệu được tổ chức theo dạng bảng thì các phép toán đại
số quan hệ như phép kết nối (join), phép chọn (select), phép chiếu (project),… thường
xuyên phải quét dữ liệu trên nhiều bảng, như vậy sẽ rất tốn chi phí tính toán, thời gian đáp
ứng truy vấn có thể rất lớn. Mặt khác, giả sử trong đó có một bảng là KHACH_HANG,
có các cột là (Họ tên, Số điện thoại, Fax, Địa chỉ, Số CMND), thì với những khách hàng
không có Fax thì ta lại mất một trường Fax mà không lưu thông tin gì cả. Chính vì những
nhược điểm của mô hình CSDL quan hệ như trên, các nhà cung cấp Điện toán đám mây
đã dùng những hệ thống lưu trữ mới, mà trong đó không dùng CSDL quan hệ và ngôn
ngữ truy vấn SQL nữa, gồm có: Hệ thống tập tin của Google (Google Files System),
CSDL hướng tài liệu (MongoDB, CouchDB), CSDL phân cấp (SimpleDB),…
Bất kể hệ thống lưu trữ nào, muốn thực hiện dịch vụ lưu trữ Điện toán đám mây, bốn
vấn đề sau đây phải được giải quyết tốt, đó là:
• Nhân bản dữ liệu.
• Phân tán dữ liệu trên các máy chủ.
• Cách tổ chức dữ liệu trong CSDL.
• Áp dụng các thuật toán xử lí dữ liệu có kích cỡ lớn.
Vì vậy, trong phần sau, em đi sâu trình bày hệ quản trị CSDL MongoDB và đưa ra các
phương pháp cụ thể giải quyết bốn vấn đề trên. Nội dung gồm có: mô hình CSDL hướng
tài liệu, cài đặt và thao tác trong MongoDB, nhân bản dữ liệu, phân tán CSDL trên các
máy chủ, thực hiện thuật toán tính toán song song để xử lí dữ liệu kích cỡ lớn.
1.3.1 Tổng quan về MongoDB
MongoDB là một hệ quản trị CSDL rất mạnh, tốc độ thực hiện truy vấn cao, thường được
dùng làm hệ quản trị CSDL cho các dịch vụ lưu trữ dữ liệu trên đám mây.
Trong MongoDB, mỗi CSDL gồm một hoặc nhiều collections, mỗi collection gồm một
hoặc nhiều documents, là đơn vị chứa thông tin cơ bản nhất. Dưới đây là mô hình CSDL:
Nguyễn Minh Hải – D07CN4
Trang 15
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
Hình 1.8: Mô hình CSDL hướng tài liệu
So sánh với CSDL quan hệ:
• Collections tương đương với các bảng (tables) quan hệ.
• Documents tương đương với các bản ghi (rows).
Hình 1.9: CSDL quan hệ thông thường
1.3.2 Đơn vị lưu trữ cơ bản nhất – document
Mỗi document gồm có một hoặc nhiều cặp: “thuộc tính – giá trị”. Ví dụ về một document
chứa thông tin của một sinh viên:
{“ID”:”DEF01234567809”, “Họ tên”: “Nguyễn Minh Hải”, “Năm sinh”: 1988, “Quê
quán”:”Hà Nội”}.
Nguyễn Minh Hải – D07CN4
Trang 16
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
Ở đây các cặp “thuộc tính – giá trị” gồm có ID: DEF01234567809, Họ tên: Nguyễn Minh
Hải, Năm sinh: 1988, Quê quán: Hà Nội. Trong mỗi document có một cặp “thuộc tính –
giá trị” đặc biệt để phân biệt với các documents khác, đó là ID, mỗi document sẽ có một
giá trị ID duy nhất. Giá trị này được sinh ra tự động bởi hệ quản trị CSDL MongoDB. Các
documents khác nhau trong một CSDL không cần có cùng số lượng các thuộc tính, hoặc
kiểu giá trị cho thuộc tính. Ví dụ: ngoài document ở trên, ta có thể lưu một document
chứa thông tin sinh viên khác như sau:
{“ID”:”ABC01234545809”, “Họ tên”: “Bùi Khắc Thanh”, “Năm sinh”: 1989, “Quê
quán”:”Thanh Hóa”, “Thành tích”:”Giải nhất Olympic Toán”}.
Tức là có thêm thuộc tính “Thành tích”. Đây là một ưu điểm so với lưu trữ ở dạng bảng
quan hệ. Hơn nữa, trong CSDL quan hệ, nếu thêm một thuộc tính mới cho một bảng, sẽ
kéo theo rất nhiều công việc như: chuẩn hóa lại bảng, thay đổi lược đồ quan hệ,…,nhưng
trong MongoDB, ta có thể tùy ý thêm các thuộc tính mới cho từng document. Các thuộc
tính trong document có thể nhận nhiều kiểu giá trị: string, int, double, boolean, date,
bytearray, object, array,…
1.3.3 Collections
Collections là tập hợp của các documents. Các documents thường được nhóm lại thành
collection dựa vào nội dung thông tin mà documents chứa, ví dụ: các documents chứa
thông tin về sinh viên thì được tập hợp lại thành collection có tên là SINH_VIEN, các
documents chứa thông tin về lớp học thì nhóm lại thành collection tên là LOP_HOC…
Collections trong MongoDB tương tự với Bảng quan hệ trong CSDL quan hệ. Nhưng các
collections trong MongoDB là không liên quan với nhau, không có khái niệm lược đồ
quan hệ và chuẩn hóa bảng như trong CSDL quan hệ, làm tăng tính linh hoạt của việc lưu
trữ dữ liệu.
1.3.4 Lưu trữ tệp tin
Để lưu trữ các files, MongoDB chia chúng thành các phần nhỏ gọi là các mảnh
(chunks), có kích cỡ là 256 KB. Sau đó, mỗi mảnh sẽ được lưu trong một document,
với các thông tin là:
• id: mã của mảnh, là giá trị để phân biệt với mảnh khác.
• n: số thứ tự của mảnh, vì trong file ban đầu chia thành nhiều mảnh nên phải
có số thứ tự.
• data: dữ liệu nhị nhân mà mảnh đó chứa.
• files_id: id của file ban đầu, mà mảnh thuộc về tệp tin đó.
Nguyễn Minh Hải – D07CN4
Trang 17
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
Các documents này được lưu vào collection: fs.chunks.
Ngoài ra, một collection khác là fs.files dùng để lưu siêu dữ liệu về các file ban đầu.
Trong fs.files, gồm các documents có các thuộc tính như sau:
• id: mã của file đó.
• filename: tên của file.
• length: số các mảnh mà file được chia thành.
• md5: mã được sinh ra bởi giải thuật MD5, thực hiện với file đó, để chứng
minh là file bảo đảm tính toàn vẹn.
• chunkSize: kích cỡ của mỗi chunk.
• uploadDate: ngày, tháng, năm file được upload.
1.3.5 Cách cài đặt MongoDB
Bước 1: Download bộ cài MongoDB tại địa chỉ: http://www. mongodb.org/downloads
Hình 1.10: Các thành phần bộ cài
Bước 2: Tạo thư mục MongoDB trong ổ C, và copy bộ cài cho vào trong thư mục đó.
Trong ổ C, tạo thêm thư mục Data, trong Data, tạo thư mục DB.
Bước 3: Khởi tạo biến môi trường:
Chuột phải vào My Computer -> Properties -> Advance -> Environment Variable
Tạo biến hệ thống, tên: “path”,giá trị: ”C:\MongoDB” ; “C:\MongoDB\bin”
Bước 4: Khởi động MongoDB Database Server
Nguyễn Minh Hải – D07CN4
Trang 18
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
Vào start -> run -> cmd ->Enter
Gõ “cd C:\” nhấn Enter.
Gõ “C:\MongoDb\bin\mongod” nhấn Enter.
Hình 1.11: Khởi động MongoDB Server
Bước 5: Chạy MongoDB Database Client
Mở một cửa sổ DOS khác,và Gõ “cd C:\MongoDb\bin” nhấn Enter.
Gõ “mongo” nhấn Enter.
Hình 1.12: Khởi động MongoDB Client
1.3.6 Các thao tác dữ liệu trong MongoDB
Trong màn hình DOS như hình 1.12, ta có thể thực hiện các lệnh sau:
Tạo CSDL mới
use <Tên CSDL>. Ví dụ: use SINH_VIEN. Lệnh này tạo ra một cơ sở dữ liệu có tên là
SINH_VIEN.
Tạo Document và lưu nó trong Collection
-Tạo Document: <Tên document> = ({“Tên thuộc tính ” : “Giá trị ”}).
Nguyễn Minh Hải – D07CN4
Trang 19
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
- Lưu vào Collection: db.<Tên Collection>.insert(Tên document)
Ở đây db và insert là các từ khóa.
Ví dụ: Tạo document:
book= ({“Title ”: “Java for dummies”, “Publisher”: “oreilly”, “Year” : ”2008”})
Lưu vào Collection JAVA:
db.JAVA.insert(book)
Chỉnh sửa document
db.Tên Collection.update({“Thuộc tính” : “Giá trị”}, {“Thuộc tính cần update” : ”Giá
trị cần update”})
Ví dụ:
db.JAVA.update ({“Year” : “2008”}, {“Price” : “50000”})
Lệnh này sẽ tìm các Document trong Collection JAVA mà có thuộc tính Year : 2008, và
thêm thuộc tính Price: 50000 cho các Documents đó, dù thuộc tính Price đã có hay chưa.
Xóa
Xóa CSDL:
use <Tên CSDL>
db.dropDatabase()
Xóa Collection:
db.<Tên Collection>.drop(): xóa Collection
Xóa Document:
db.<Tên Collection>.remove(): xóa hết các Documents trong Collection
db.<Tên Collection>.remove({“Thuộc tính” : “Giá trị”}) : xóa tất cả các Document có
cặp thuộc tính – giá trị cho trước.
Chứng thực người dùng (Authentication User)
Tạo tài khoản cho administrator:
use admin
db.addUser(“admin”, “adminpassword”)
Cấp phát tài khoản cho các users khác:
Nguyễn Minh Hải – D07CN4
Trang 20
Đồ án tốt nghiệp đại học
Chương 1: Hệ thống dữ liệu trên đám mây
use admin
db.auth(“admin”, “addminpassword”)
use <Tên CSDL>
db.addUser(“User”, “password”)
Truy vấn
Tìm documents theo thuộc tính – giá trị:
db.<Tên Collection>.find({“Thuộc tính” : ”Giá trị”}):Trả về toàn bộ kết quả.
hoặc db.<Tên Collection>.findOne(): Trả về một kết quả tìm được đầu tiên.
hoặc db.<Tên Collection>.count() : Đếm số lượng kết quả trả về.
hoặc db.<Tên Collection>.find().limit(Giá trị): Giới hạn số lượng kết quả trả về
Ví dụ: db.JAVA.find ({“Title” : ”Java for dummies”})
Lưu trữ tệp tin
Như đã trình bày trong phần 3.4, tệp tin sẽ được chia nhỏ ra thành từng phần, gọi là
chunks, có kích thước 256 KB, gồm các thông tin: Id, n, file_name, data sau đó, mỗi
chunk được lưu vào một document. Các documents đó tập hợp thành collection có tên là
fs.chunks. Thông tin về siêu dữ liệu của tệp tin gồm có: Id, tên tệp tin, độ dài,
uploadDate, md5, chunkSize được lưu trong các documents khác, tập hợp thành collection
có tên là fs.files. Sau đây là các lệnh để lưu trữ và truy vấn tệp tin:
Lưu tệp tin:
mongofiles put <filename>
Ví dụ: mongofiles put D:\myfile.txt
Hình 1.13: Lưu tệp tin trong MongoDB
- Truy vấn tệp tin:
mongofiles get <filename>
Ví dụ: mongofiles get D:\myfile.txt
Nguyễn Minh Hải – D07CN4
Trang 21