ĐỒ ÁN VỀ DATABASE TRÊN CLOUD ; TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU MONGODB; ỨNG DỤNG VÀO THỰC TẾ: LƯU TRỮ ẢNH DỰA TRÊN NO SQL, KẾT HỢP VỚI NGÔN NGỮ LẬP TRÌNH PHP , TẠO RA WEBSITE CHO PHÉP NGƯỜI DÙNG UPLOAD ẢNH VÀ TRUY CẬP ẢNH CHÍNH XÁC THEO TỪNG THỜI ĐIỂM
Trang 1KHOA 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
Trang 2LỜ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 !
Trang 3MỞ ĐẦ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
Trang 42.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
Trang 5MỞ ĐẦ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ộthoặ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 đượctruyề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ưutrữ 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ácphầ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
Trang 6DANH 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
Trang 7Hì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
Trang 8DBMS: database management system Hệ quản trị cơ sở dữ liệu
DDBMS: Distribute Database
Management Sytem
Hệ quản trị cơ sở dữ liệu phân tán
DDBS:Distribute Database Sytem Hệ thống dữ liệu phân tán
SQL: Structure query language Ngôn ngữ truy vấn có cấu trúc PHP: Hypertext Preprocessor Ngôn ngữ lập trình PHP
CMOS:Complementary
Metal-Oxide-Semiconductor.
Một loại công nghệ dùng để chế tạo vi mạch tích hợp
Trang 9CHƯƠ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ơilư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 chocô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ốiinternet 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ư GoogleDocs 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ầncà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 trangweb 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ủanhà 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ệtweb, đă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áychủ, 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ọinơ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,…
Trang 101.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ạicá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ườidù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ộtchươ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ểukhá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ể đượcchuyể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ứchiệ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ể đượcphâ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ằmthí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 Quantrọ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ácbà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ánbằ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àitoá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áttriể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ốngphầ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
Trang 11Có 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útcủ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ấutrú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ánTrong 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ớinhau 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ộtmặ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ácsites 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ácsites 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
Trang 12tạ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áycò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ảyra
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ộtmô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êncủ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ộtnhó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ânbản: đồng bộ hay không đồng bộ Nếu chọn phương pháp không đồng bộ thì
Trang 13phả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ờigian đị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átsinh 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ảnphẩ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ánhconnect 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:
Trang 14•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ờigian 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ạicá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ìnhhình hoạt động chung của công ty
• 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ùngkhóa chính
Trang 15Nhâ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áysecondary sẽ tự động biến đổi thành primary mới Điều này rất quan trọng để cung cấpcá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 độngliê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àntoà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ởingườ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àocù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ó:
Trang 161 Kiểm tra tiền trong tài khoản A (có đủ X không?).
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 thaotá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ạmthờ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ưuvà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 giaodị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áctrong 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ệncủ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:
Trang 17Hì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:
Trang 18Hì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 songsong, 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ếpnhau, 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 giaodị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ịchbiể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 đươngtheo 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ịchbiểu, tuần tự hoặc không tuần tự
Trang 191.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ặtchẽ, đ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, tahã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ênquố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àngtră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ườngxuyê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àngkhô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ữngnhượ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ônngữ 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ướngtà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ácmá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
Trang 20Hì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 documentchứ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”}
Trang 21Ở đây các cặp “thuộc tính – giá trị” gồm có ID: DEF01234567809, Họ tên: Nguyễn MinhHả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ộtgiá trị ID duy nhất Giá trị này được sinh ra tự động bởi hệ quản trị CSDL MongoDB Cácdocuments khác nhau trong một CSDL không cần có cùng số lượng các thuộc tính, hoặckiểu giá trị cho thuộc tính Ví dụ: ngoài document ở trên, ta có thể lưu một documentchứ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ảngquan 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ưngtrong MongoDB, ta có thể tùy ý thêm các thuộc tính mới cho từng document Các thuộctí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ànhcollection dựa vào nội dung thông tin mà documents chứa, ví dụ: các documents chứathông tin về sinh viên thì được tập hợp lại thành collection có tên là SINH_VIEN, cácdocuments 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áccollections 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ưutrữ 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 đó.
Trang 22Cá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
Trang 23Và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ị ”}).
Trang 24- 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.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
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:
Trang 25Tì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
Trang 26Hình 1.14:Truy vấn tệp tin
1.3.7 Nhân bản dữ liệu
1.3.7.a Single Master – Single Slave
Máy master là máy chứa dữ liệu cần nhân bản, slave là máy nhận dữ liệu nhân bản từmaster Mô hình này áp dụng khi chỉ có sự thay đổi dữ liệu tại một nơi duy nhất
Hình 1.15: Nhân bản theo mô hình Single Master – Single Slave
Những sự thay đổi về dữ liệu do tác động của người dùng, đầu tiên xảy ra tại master, saumột khoảng thời gian, master sẽ truyền dữ liệu mới sang slave Dữ liệu trong máy slave
có thể dùng để tạo các báo cáo hoặc sao lưu, dự phòng
- Thiết lập master:
Dùng lệnh: mongod master dbpath <Thư mục chứa CSDL>
Khi đó máy đóng vai trò là master sẽ được thiết lập, master sẽ thông báo port đang đợislave kết nối:
Trang 27Hình 1.16 : Thiết lập Master
Trong ví dụ này, lệnh thiết lập master là:
mongod master dbpath c:\data\db\masterdb (dòng thứ hai từ trên xuống)
Master chờ slave kết nối tại port 27017 (dòng cuối của hình trên).
- Thiết lập slave:
Dùng lệnh: mongod slave source <Địa chỉ IP hoặc tên của máy master:port trên
Master> dbpath <Thư mục chứa file CSDL trên Slave> port <Port trên máy Slave>
Ví dụ:
mongod slave source localhost:27017 dbpath C:\data\db\slave port 10000
Trang 28Hình 1.17: Thiết lập Slave
1.3.7.b Multi Master – Single Slave
Nhiều master cập nhật dữ liệu và truyền về một slave, áp dụng khi sự thay đổi dữ liệu tạinhiều nơi, và cần tổng hợp lại để tạo báo cáo, sao lưu,…
Hình 1.18: Multi Master – Single Slave
Trang 29- Cấu hình: Giả sử ta có hai Master và một Slave:
Database Hostname Path to DBMaster 1 Khach_hang localhost : 27018 C:/data/db/master1/data
Master 2 Nhan_vien localhost : 27019 C:/data/db/master2/data
Slave localhost : 27020 C:/data/db/slave/data
Dữ liệu nhân bản từ Master 1 và 2 được truyền đến Slave, trong trường hợp trên, Slave sẽnhận được dữ liệu từ hai CSDL : Khach_hang và Nhan_vien
db.sources.insert({“host”:“localhost:27018”}) : Kết nối với master 1 để tự động nhận dữ
liệu nhân bản từ master 1
db.sources.insert({“host”:“localhost:27019”}) : Kết nối với master 2 để tự động nhận dữ
liệu nhân bản từ master 2
1.3.7.c Nhân bản theo cụm
Trong hai mô hình nhân bản trên, mỗi phần dữ liệu quan trọng đều do một master đảmnhận việc sao chép dữ liệu, sau đó truyền đến slave Nhưng nhược điểm là nếu master bịlỗi thì sẽ không duy trì được dịch vụ
Nhân bản theo cụm là cách nhân bản dựa trên master – slave nhưng slave và master có thể
tự động trao đổi vai trò cho nhau, khi một bên bị lỗi Máy thực hiện truyền dữ liệu nhân
bản đi gọi là primary, máy nhận dữ liệu gọi là secondary
Trang 30Hình 1.19: Mô hình Primary – Secondary
Hình 1.20: Khi primary bị lỗi, secondary tự động biến thành primary