Ngày nay, dữ liệu có cấu trúc, bán cấu trúc (XML), phi cấu trúc (video, hình ảnh, âm thanh) tăng lên nhanh chóng. IBM ước lượng, có 2.5 nhân 10 mũ 18 bytes (2,500,000,000,000,000,000) dữ liệu được tạo ra mỗi ngày 1. Cơ sỡ dữ liệu quan hệ (RDBMS) khó có thể đáp ứng nhu cầu lưu trữ khi cấu trúc dữ liệu thường xuyên thay đổi 2. Big Data ra đời để đáp ứng nhu cầu đó. Khái niệm Big Data được định nghĩa là sự thu thập, quản lỹ và phân tích dữ liệu 1. Big data được ứng dụng trong nhiều lĩnh vực như phân tích thị trường chứng khoán, phân loại ảnh Picasa, khai phá dữ liệu trên Pandora, Netflix, Amazon, phân tích dựa trên khách hàng hoặc mạng xã hội (Facebook, Twitter),...1. Sự bùng nổ thông tin và dữ liệu cá nhân cần được thu thập, sử dụng đúng mục đích. Việc lạm dụng có thể làm lộ thông tin cá nhân. Ví dụ chương trình nghe lén điện thoại của Cơ quan An ninh Quốc Gia Mỹ đã làm giảm lòng tin nhân dân Mỹ. Vì vậy, vấn đề riêng tư và an toàn thông tin được quan tâm hơn bao giờ hết.
Trang 1ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH
LUẬN VĂN TỐT NGHIỆP
NGHIÊN CỨU VÀ PHÁT TRIỂN
HỆ THỐNG ĐIỀU KHIỂN TRUY XUẤT
BẢO VỆ TÍNH RIÊNG TƯ CHO CƠ SỞ DỮ LIỆU NOSQL MONGODB
GVHD: ThS TRẦN THỊ QUẾ NGUYỆT GVPB: ThS LÊ THỊ KIM TUYẾN
====================
SVTH 1: ĐINH TRẦN VIỆT HOÀNG (51104451) SVTH 2: NGUYỄN ANH KIỆT (50901314)
TP HỒ CHÍ MINH, 5/2016
Trang 2Mục lục 2
Chương 1: GIỚI THIỆU 4
1.1 Mô tả vấn đề 4
1.2 Mục tiêu đề tài 4
1.3 Ý nghĩa 4
Chương 2: KIẾN THỨC NỀN TẢNG 5
2.1 Big Data 5
2.1.1 Định nghĩa Big Data 5
2.1.2 Đặc điểm Big Data 5
2.1.3 Những ứng dụng Big Data [1] 6
2.1.4 Tính riêng tư trong Big Data [1] 6
2.2 NoSQL 6
2.2.1 Các loại NoSQL 7
2.2.2 Lợi ích khi dùng NoSQL [6] 8
2.2.3 Các đặc điểm của NoSQL [6] 8
2.3 MongoDB 9
2.3.1 Giới thiệu mô hình dữ liệu MongoDB 9
2.4 Các khái niệm mô hình hóa dữ liệu trong MongoDB 11
2.4.1 Thiết kế mô hình dữ liệu (Data Model Design) 11
2.4.2 Operational Factors và mô hình dữ liệu 14
2.4.3 GridFS 15
2.5 NODE JS 16
Chương 3: CÁC MÔ HÌNH ĐIỀU KHIỂN TRUY CẬP 17
3.1 MÔ HÌNH TRUYỀN THỐNG 17
3.2 MÔ HÌNH ĐIỀU KHIỂN TRUY CẬP DỰA TRÊN VAI TRÒ (ROLE-BASED ACCESS CONTROL MODEL – RBAC) 17
3.2.1 RBAC phẳng (Flat RBAC) [12] 19
3.2.2 RBAC phân cấp (Hierarchical RBAC) [12] 19
3.2.3 RBAC ràng buộc (Constrained RBAC) [12] 19
3.2.4 RBAC đối xứng (Symmetric RBAC) [12],[13] 21
3.3 CÁC MÔ HÌNH ĐIỀU KHIỂN TRUY CẬP TIÊN TIẾN 22
3.3.1 Mô hình Attribute-Based Access Control (ABAC) [15] 22
3.3.2 Mô hình Usage Control (UCON) [16] 23
Trang 33.3.3 MÔ HÌNH ĐIỀU KHIỂN DỰA TRÊN MỤC ĐÍCH – PURPOSE-BASED ACCESS
CONTROL MODEL (PRBAC)[14] 24
3.3.4 MÔ HÌNH ĐIỀU KHIỂN TRUY CẬP CỦA KABIR 25
3.3.5 CÁC HƯỚNG TIẾP CẬN MỚI CỦA FERRARI 33
Chương 4: MÔ HÌNH ĐỀ XUẤT 33
4.1 THUẬT TOÁN COMPLIANCE CHECK 33
4.2 CƠ CHẾ CỦA FERRARI 33
4.2.1 PREFILTERING 33
4.2.2 REWRITING 33
4.3 PROXY CÓ CHỨC NĂNG MONITOR 33
Chương 5: KIẾN TRÚC HỆ THỐNG 34
5.1 THUẬT TOÁN COMPLIANCE CHECK 34
5.2 DATABASE DÙNG DEMO 34
5.3 CÁC KHỐI VÀ CHỨC NĂNG 34
5.3.1 FONT-END 34
5.3.2 WEB-SERVER 34
5.3.3 PROXY 34
5.3.4 MONGODB-SERVER 34
5.4 HIỆN THỰC HỆ THỐNG 34
Chương 6: ĐÁNH GIÁ HIỆU NĂNG 35
6.1 SỬ DỤNG PROXY 35
6.2 KHÔNG SỬ DỤNG PROXY 35
6.3 ĐÁNH GIÁ 35
Chương 7: KẾT LUẬN 36
7.1 CÔNG VIỆC ĐÃ LÀM ĐƯỢC 36
7.2 CÔNG VIỆC TƯƠNG LAI 36
Chương 8: TÀI LIỆU THAM KHẢO 37
Trang 4Chương 1: GIỚI THIỆU
1.1 M
ô tả vấn đề
Ngày nay, dữ liệu có cấu trúc, bán cấu trúc (XML), phi cấu trúc (video, hìnhảnh, âm thanh) tăng lên nhanh chóng IBM ước lượng, có 2.5 nhân 10 mũ 18 bytes(2,500,000,000,000,000,000) dữ liệu được tạo ra mỗi ngày [1] Cơ sỡ dữ liệu quan hệ(RDBMS) khó có thể đáp ứng nhu cầu lưu trữ khi cấu trúc dữ liệu thường xuyên thayđổi [2] Big Data ra đời để đáp ứng nhu cầu đó Khái niệm Big Data được định nghĩa là
sự thu thập, quản lỹ và phân tích dữ liệu [1]
Big data được ứng dụng trong nhiều lĩnh vực như phân tích thị trường chứngkhoán, phân loại ảnh Picasa, khai phá dữ liệu trên Pandora, Netflix, Amazon, phân tíchdựa trên khách hàng hoặc mạng xã hội (Facebook, Twitter), [1] Sự bùng nổ thông tin
và dữ liệu cá nhân cần được thu thập, sử dụng đúng mục đích Việc lạm dụng có thểlàm lộ thông tin cá nhân Ví dụ chương trình nghe lén điện thoại của Cơ quan An ninhQuốc Gia Mỹ đã làm giảm lòng tin nhân dân Mỹ Vì vậy, vấn đề riêng tư và an toànthông tin được quan tâm hơn bao giờ hết
Sau thời gian tìm hiểu, nhóm chọn đề tài “PHÁT TRIỂN FRAMEWORKĐIỀU KHIỂN TRUY XUẤT CHO HỆ THỐNG CƠ SỞ DỮ LIỆU NOSQL”
1.2 M
ục tiêu
đề tài
Các mục tiêu và nhiệm vụ được đặt ra:
Tìm hiểu các mô hình điều khiển truy xuất, phân tích ưu nhược điểm của các mô hình đó
Tìm hiểu cơ sở dữ liệu lớn, đặc biệt là cơ sở dữ liệu NoSQL MongoDB
Đề xuất mô hình điều khiển truy xuất trên MongoDB
Xây dựng Mongo Proxy
Xây dựng các ứng dụng với các chức năng cơ bản áp dụng hệ thống điều khiển truy cập bảo vệ tính riêng tư dựa trên mục đích và ngữ cảnh
Trang 5 Xây dựng framework điều khiển truy cập bảo vệ tính riêng tư dựa trên mục đích và ngữ cảnh.
1.3 Ý
nghĩ a
Xây dựng framework điều khiển truy xuất dựa trên vai trò và ngữ cảnh có thể ứng dụng vào thực tế như quản lý giáo dục, thông tin bệnh viện
Trang 62.1.1 Định nghĩa Big Data
Trong những năm gần đây, chúng ta bước vào kỷ nguyên Big Data, kỷ nguyênbùng nổ thông tin, làm thay đổi cách chúng ta sống, làm việc, suy nghĩ [3] Thuật ngữBig Data bao gồm thu thập, quản lý, phân tích trên các dữ liệu có cấu trúc (dữ liệu quanhệ), dữ liệu bán cấu trúc (XML), dữ liệu phi cấu trúc (video, hình ảnh) Dữ liệu lớncũng có những nguồn mới, như trong máy tính (vd: các file log nhật ký hay mạng cảmbiến), trong thiết bị di động (video, hình ảnh, tin nhắn), và trong các thiết bị máy móckết nối với nhau (vd như xe, máy bay hoặc các thiết bị giám sát từ xa) nhằm mục đíchlên kế hoạch bảo trì kịp thời [1]
2.1.2 Đặc điểm Big Data
Big Data có năm đặc điểm [3],[4]:
Volume (khối lượng dữ liệu lớn): số lượng data khổng lồ được tạo ra mỗi
giây, không phải chỉ được tính bằng đơn vị Terabyte mà tính bằng Zettabyte hayBrontobyte Cứ mỗi ngày, trên facebook có 10 tỷ tin nhắn, 4,5 tỷ lần “like”, 350 triệuhình mới được upload, Sự gia tăng dữ liệu khổng lồ này không khả thi nếu việc lưutrữ sử dụng công nghệ lưu trữ truyền thống với cơ sở dữ liệu quan hệ Big Data có thểlưu trữ dễ dàng lượng thông tin trên và dùng cho hệ thống phân tán (distributed system)[4]
Velocity (tốc độ cao) : Big Data technology cho phép xử lý dữ liệu ngay
khi chúng được tạo ra, ngay cả khi dữ liệu chưa được đưa vào database Như messagetrong mạng xã hội lan truyền trong vài giây, tốc độ kiểm tra gian lận trong giao dịch thẻtín dụng, hay tốc độ tính bằng mili giây để quyết định mua bán cổ phiếu dựa vào phântích mạng xã hội [4]
Variety (đa dạng các loại dữ liệu) : Trong quá khứ, dữ liệu cấu trúc được
dùng nhiều vì phù hợp với table hoặc cơ sở dữ liệu quan hệ, ví dụ như dữ liệu tài chính.Như ngày nay, 80% dữ liệu của thế giới là không cấu trúc, vì thế không dễ để đưa vàocác table (ví dụ hình ảnh, video) Với Big Data, có thể sử dụng nhiều loại dữ liệu khácnhau: bán cấu trúc, không cấu trúc và cả dữ liệu truyền thống là dữ liệu có cấu trúc [4]
Trang 7Value (giá trị dữ liệu cao): cho phép con người hiểu rõ hiện tại và dự
đoán trước tương lai [3] Các công ty bắt đầu tạo được những giá trị to lớn từ việc sửdụng Big Data [4] Việc kinh doanh nào không quan tâm đặc biệt tới Big Data sẽ bị bỏlại phía sau [4]
Veracity (tính xác thực thấp) : uncertainties in the data (không chắc chắn
dữ liệu) [3] Với rất nhiều loại dữ liệu, chất lượng và độ chính xác ít được kiểm soát làmtính xác thực thấp Nhưng dữ liệu lớn và công nghệ phân tích cho phép bù đắp cho sựthiếu xác thực [4]
2.1.3 Những ứng dụng Big Data [1]
Phân tích tâm lý thị trường chứng khoán
Phân loại hình ảnh Picasa của Google
Phân tích khách hàng (Facebook, Twitter)
Phân tích dữ liệu các hệ thống mạng báo hiệu (đèn giao thông, cơ sở hạ tầng)
Hệ thống đặt chỗ du lịch kết hợp sở thích khách hàng
Giải trí trên mạng xã hội
Hệ thống chuẩn đoán y học
2.1.4 Tính riêng tư trong Big Data [1]
Việc tích hợp giữa phân tích dữ liệu lớn với thông tin công cộng (hoặc thông tinriêng tư được cung cấp một cách tự nguyện bởi người giám sát được ủy thác thông tinđó) có thể giúp tìm kiếm nhanh trên các bộ dữ liệu lớn về phim ảnh, giọng nói, dữ liệucảm biến, và văn bản thư điện tử để cải thiện độ an toàn chung cho phục hồi sau sự cố,
để ngăn ngừa các mối đe dọa khủng bố, và để hiểu những mối quan tâm của cộng đồng.Người ta có thể nghĩ tới điều này như là những phản hồi nếu so sánh với những hệthống phát cảnh báo khẩn cấp Tất nhiên, mối quan tâm và mảng đen tối tiềm tàng hiệnhữu trong dữ liệu lớn và các phân tích phim ảnh, giọng nói, thư điện tử khi nó trở thành
sự truy cập trái phép vào các thông tin cá nhân Những hệ thống như vậy đòi hỏi phải sửdụng một cách có trách nhiệm, hoàn toàn kín đáo, và phải kiểm duyệt thông tin thu thậpđược từ nguồn công cộng và mạng máy tính
2.2 N oSQ L
Các cơ sở dữ liệu quan hệ lưu trữ dữ liệu một cách nhất quán bất kể bản chấtcủa dữ liệu hay ứng dụng nhưng gặp khó khăn trong vấn đề mở rộng hoặc thay đổi cấu
Trang 8trúc Hiện nay, development platforms là web scale chứ không chỉ là network scale,nhiều ứng dụng có thể chạy phân tán trên nhiều server khác nhau đòi hỏi dynamicscaled Bên cạnh đó sự phát triển nhanh chóng của computing và sự bùng nổ thông tin
yêu cầu việc lưu trữ dữ liệu phải nhanh và có thể mở rộng nhanh để đáp ứng các ứng
dụng xử dụng cơ sở dữ liệu Cơ sở dữ liệu quan hệ làm ảnh hưởng xấu đến hiệu suất,tốc độ trong các hệ thống web scale nên không còn phù hợp
Để giải quyết vấn đề trên, nhiều loại cơ sở dữ liệu không sử dụng mô hình dữliệu quan hệ (non-relational database) được đưa vào sử dụng trong những năm gần đây,
và được gọi là các NoSQL database NoSQL có ưu điểm là dễ mở rộng theo chiềungang (horizontal scaling), tính sẳn sàng cao (high available), giá thành thấp (low cost),hiệu suất cao (high performance) [5] NoSQL là bước phát triển mới của thế hệ cơ sở dữliệu mới : phân tán (distributed) và không ràng buộc (non-relational) [7] NoSQL thườngđược dùng để lưu trữ dữ liệu lớn, phù hợp với Big Data
Kiến trúc NoSQL database hiện nay có lợi cho sự phát triển tự do của dữ liệu
và traffic Do đó, tạo thuận lợi cho việc phát triển các giải thuật song song (nhưMapReduce) giúp các hệ thống phân tán hoạt động hiệu quả NoSQL đang dẫn đầu cácphương pháp lưu trữ và phân tích thông tin dữ liệu người dùng
Hệ thống dữ liệu quan hệ sử dụng metadata để kiểm soát chặt chẽ việc xử lýđồng bộ để duy trì sự nhất quán dữ liệu Nhưng việc phân tán dữ liệu trên nhiều hệthống của NoSQL làm lỏng lẻo việc xử lý đồng bộ Do đó, tính nhất quán và toàn vẹnkhông được đảm bảo Một điểm yếu khác của NoSQL là hầu như hỗ trợ security cholớp database [5]
2.2.1 Các loại NoSQL
Bảng 1: Các loại NoSQL và Database tương ứng [5]
Trang 9Bảng 2: Bảng so sánh các loại database NoSQL [5]
Trong đó:
Key-Value: loại NoSQL đơn giản nhất, còn gọi là Row Store [5]
Column-Oriented: lưu trữ theo kiểu cột, tối ưu hóa cho truy vấn dữ liệu lớn [5].Document-Oriented: mỗi khóa kết hợp với một dữ liệu phức tạp có thể là báncấu trúc, phi câu trúc; không cần schema chặt chẽ Nên việc dùng Document-Orientedlàm tăng hiệu suất và dễ sử dụng cho các hệ thống lưu trữ phân tán hơn là dùng các cơ
sở dữ liệu quan hệ truyền thống [5]
Graph database: dùng để lưu trữ thông tin về mạng như mạng xã hội, bản đồ,
2.2.2 Lợi ích khi dùng NoSQL [6]
NoSQL cung cấp khả năng mở rộng và hiệu suất cao hơn các cơ sở dữ liệuquan hệ truyền thống:
Đáp ứng được sự thay đổi nhanh chóng của dữ liệu lớn, có cấu trúc,báncấu trúc và phi cấu trúc
Schema dữ liệu mới thêm vào không ảnh hướng đến dữ liệu cũ
Hỗ trợ lập trình hướng đối tượng, do đó dễ sử dụng và linh hoạt hơn
Kiến trúc hiệu quả, tăng khả năng mở rộng, xây dựng cơ sở phân tán, linhđộng thay vì nguyên khối, cứng nhắc như kiến trúc cũ
2.2.3 Các đặc điểm của NoSQL [6]
Dynamic Schema : (Schema động) Cơ sở dữ liệu quan hệ (RDBMS yêu
cầu phải khai báo Schema trước khi thêm dữ liệu vào Việc này không phù hợp với sựphát triển nhanh chóng hiện nay Có dữ liệu có tính chất khác, thì schema của databasephải thay đổi lại Nếu database lớn, việc thay đổi này diễn ra chậm đáng kể Vì vậy sửdụng các RDBMS cho dữ liệu có schema động không thích hợp Các NoSQL databaseđược xây dựng để cho phép dữ thêm dữ liệu mà không cần khai báo schema trước, làm
Trang 10giảm thời gian chờ, không cần quan tâm đến service interruption Do đó việc phát triểnứng dụng nhanh hơn, lập trình và quản lý dữ liệu đơn giản hơn.
Auto - sharding : là cơ chế tự động của MongoDB dùng để chia tách một
dữ liệu kích thước lớn cho rất nhiều server (cluster) [7] Do đó, MongoDB hỗ trợ việcđịnh hình theo chiều ngang Dữ liệu và các câu truy vấn được phân bố đều trên cácserver Khi một server bị hư hại sẽ có server khác thực hiện công việc thay thế[6] Auto –Sharding phục vụ 3 mục tiêu [7]:
Làm cho cluster trong suốt với người dùng
Làm cho cluster luôn sẵn sàng để đọc hoặc ghi
Làm cho cluster phát triển tự nhiên
Replication : Hầu hết các NoSQL hỗ trợ nhân rộng dữ liệu để duy trì tính
sẵn sàng trong các trường hợp có sự cố hay bảo trì hệ thống, do đó NoSQL hỗ trợ khảnăng chuyển đổi dự phòng và phục hồi hệ thống
Integrated Caching : Các NoSQL hỗ trợ khả năng caching rất tốt cho cả
tác vụ đọc và ghi Thích hợp cho các ứng dụng đòi hỏi băng thông cao và độ trễ thấp,điều mà các RDBMS khó đáp ứng được
Với những đặc điểm và lợi ích của NoSQL, nhóm quyết định chọn MongoDB
để hiện thực đề tài
2.3 M ongo DB
2.3.1 Giới thiệu mô hình dữ liệu MongoDB
MongoDB là một schema-free document database được viết bằng C++ trong một dự án mở của 10gen Inc Mục đích của MongoDB để rút ngắn khoảng cách giữa
mô hình key-value và RDBMS [5]
MongoDB là một NoSQL theo kiểu document store, lưu trữ dưới dạng BSON(một dạng tương tự JSON), và có khả năng đánh chỉ mục index Dữ liệu trongMongoDB có schema linh hoạt [8], không cần phải khai báo schema nếu thêm dữ liệumới
Trang 11Tham khảo là lưu mối quan hệ giữa các dữ liệu bằng các đường link từ 1document tới 1 document khác Ứng dụng lưu các tham khảo này và truy xuất các dữliệu liên quan Đó là sự chuẩn hóa mô hình dữ liệu.
Hình 1:Mô hình dữ liệu sử dụng tham khảo để liên kết các document.
Cả contact document và access document đều chứa tham khảo đến userdocument
Dữ liệu nhúng (embedded data)
Dữ liệu nhúng lưu dữ liệu liên quan trong cùng 1 document MongoDBdocument cho phép nhúng document con vào 1 trường hoặc 1 mảng trong documentcha Sự không chuẩn hóa này cho phép ứng dụng truy xuất và xử lí dữ liệu có liên quantrong 1 thao tác cơ sở dữ liệu
Hình 2: Ví dụ nhúng document này trong document khác
Trang 12b Tính nguyên tố (không thể chia, giãn lược) của tác vụ ghi (Atomicity
of Write Operations)
Trong MongoDB, tính nguyên tố của tác vụ ghi ở mức document, không có tác
vụ ghi đơn nào ảnh hưởng nhiều hơn 1 document hoặc 1 collection Mô hình dữ liệukhông chuẩn hóa với dữ liệu nhúng kết hợp tất cả dữ liệu liên quan trong 1 document.Điều này giúp tác vụ ghi có thể chèn hoặc cập nhật dữ liệu cho 1 thực thể 1 lần Đó gọi
là tính nguyên bản của tác vụ ghi Dữ liệu chuẩn hóa chia dữ liệu cụ thể thành nhiềucollection và do đó cần nhiều tác vụ ghi hơn đễ cập nhật hoặc chèn dữ liệu Lúc này tác
vụ ghi không còn nguyên bản nữa Tuy nhiên, schema hỗ trợ atomic writes cho phéphạn chế cách sử dụng dữ liệu của ứng dụng để đảm báo tính nguyên tố
c Sự phát triển của document
Thao tác thêm phần tử vào mảng hay thêm trường mới đều tăng kích thướcdocument
Đối với MMAPv1 storage engine, nếu kích thước document vượt quá sự phân
bổ bộ nhớ cho document đó, MongoDB sẽ phân bổ lại bộ nhớ document trên ổ đĩa, điềunày có thể ảnh hưởng đến quyết định chuẩn hóa hay không chuẩn hóa dữ liệu
d Sử dụng dữ liệu và performance
Khi thiết kế mô hình dữ liệu, cần để ý đến việc ứng dụng sẽ sử dụng databasevào việc gì Ví dụ, nếu ứng dụng chỉ sử dụng những document được thêm vào gần nhất,cần quan tâm đến capped-collection[9] Nếu ứng dụng chủ yếu thực hiện tác vụ đọc trêncollection, thêm index để tăng performance
Trang 132.4 C
ác khái niệm
mô hình hóa
dữ liệu tron
g Mon goD B
2.4.1 Thiết kế mô hình dữ liệu (Data Model Design)
Mô hình dữ liệu hiệu quả sẽ hỗ trợ tốt cho ứng dụng Vấn đề quan tâm chính làcấu trúc dữ liệu cho ứng dụng sẽ sử dụng kiểu nhúng (embed) hay dùng tham khảo (usereferences)
a Mô hình nhúng (Embedded Data Models)
Với MongoDB, có thể nhúng các dữ liệu quan hệ với nhau trong một cấu trúchay một document Schema này được hiểu là mô hình không chuẩn hóa, tận dụng lợithế rich document của MongoDB Mô hình dữ liệu nhúng giúp các ứng dụng cần ít lệnhtruy vấn và update, làm hiệu suất của thao tác đọc cao hơn so với mô hình dữ liệu thamkhảo
Tổng quát, dùng mô hình dữ liệu nhúng khi:
- Quan hệ ràng buộc one-to-one giữa các thực thể, và cần quan sát 1 thựcthể bên trong một thực thể khác
- Quan hệ ràng buộc one-to-many giữa các thực thể, trong đó cần quan sátnhiều thực thể trong một thực thể khác
Trang 14Ví dụ: One-to-One Relationships with Embedded Documents
Hình 3: Ví dụ address document chứa một reference đến patron document
Hình 4: Sử dụng mô hình dữ liệu nhúng cho patron và address document.
Trang 15Ví dụ: Model One-to-Many Relationships with Embedded Documents
Hình 5: patron document có nhiều address document
Hình 6: Sử dụng mô hình dữ liệu nhúng cho patron và address document.
Tuy nhiên mô hình này làm tăng kích thước document sau khi được tạo, gâyảnh hưởng hiệu suất tác vụ ghi và làm dữ liệu phân mãnh Hơn nữa, kích thướcdocument MongoDB phải nhỏ hơn kích thước lớn nhất của BSON document (16MB) [8]
Trang 16b Mô hình chuẩn hóa dữ liệu (Normalized Data Models)
Mô hình chuẩn hóa dữ liệu mô tả các mối quan hệ dùng tham khảo (reference)giữa các document
Tổng quát, dùng mô hình chuẩn hóa khi:
- Việc nhúng dữ liệu làm tăng dữ liệu trùng lặp nhưng không tăng hiệu suất
thao tác đọc
- Biểu diễn các mối quan hệ many-to-many phức tạp.
- Cho các tập dữ liệu theo mô hình phân cấp.
Mô hình dùng tham khảo linh động hơn nhúng dữ liệu Nhưng ứng dụng side cần nhiều truy vấn hơn cho tham khảo Nói cách khác, mô hình chuẩn hóa làm tăng
client-số kết nối với server
2.4.2 Operational Factors và mô hình dữ liệu
Mô hình hóa dữ liệu cho MongoDB phụ thuộc vào đặc tính của dữ liệu và đặctính của MongoDB Những mô hình dữ liệu khác nhau có thể cho phép ứng dụng sửdụng các lệnh truy vấn hiệu quả hơn, hoặc tăng băng thông cho thao tác insert và truyvấn, hoặc hỗ trợ tốt hơn việc phân tán đến môt sharded cluster
a Document Growth
Thao tác update có thể làm tăng kích thước document nếu thêm phần tử vàomảng hoặc thêm field mới vào document Nếu kích thước document vượt mức chophép, MongoDB phân bổ lại document trên bộ nhớ Điều này dẫn đến phân mãnh dữliệu, làm tăng thời gian tác vụ đọc, cần phải tránh Do đó, nếu ứng dụng thường xuyênyêu cầu lệnh update, nên sử dụng mô hình chuẩn hóa (dùng tham khảo) để tránh sự giatăng document hơn là dùng mô hình không chuẩn hóa (nhúng)
b Atomicity
Đã trình bày ở trên Mô hình kiểu nhúng các dữ liệu liên quan vào mộtdocument là một dạng atomic Nếu dùng mô hình chuẩn hóa để lưu trữ các referencegiữa các dữ liệu liên quan, ứng dụng phải dùng thao tác đọc và ghi riêng biệt khi thayđổi các dữ liệu liên quan
c Sharding
MongoDB dùng sharding để phát triển theo chiều ngang Những cluster hỗ trợtriển khai với những tập dữ liệu lớn và các thao tác yêu cầu băng thông cao Shardingcho phép người dùng phân tán một collection trong database trên nhiều mongod, gọi làshards MongoDB dùng shard key để phân tán dữ liệu và lưu lượng ứng dụng Lựa chọnđúng shard key có ý nghĩa quan trọng cho hiệu năng, cho phép ngăn chặn truy vấn cô
Trang 17lập và gia tăng khả năng ghi Cần xem xét cẩn thận field hoặc những field nào để làmshard key.
d Indexes
Sử dụng index để tăng hiệu năng cho các truy vấn thông thường Xây dụngindex cho những field xuất hiện thường xuyên trong truy vấn và các thao tác trả về kếtquả đã được sắp xếp
MongoDB tự động tạo index cho field _id.
Khi tạo index, cần lưu ý:
- Mỗi index yêu cầu 8KB bộ nhớ
- Việc thêm index làm giảm hiệu năng thao tác ghi Đối với các collectionyêu cầu đọc/ghi nhiều, mỗi khi tăng thêm index yêu cầu cập nhật lại index
- Các collection có mức đọc/ghi cao có thể có lợi ích từ việc thêm index.Index không ảnh hưởng đến các thao tác up-index
- Sử dụng index tiêu tốn bộ nhớ Việc này cần được theo dõi
e Large Number of Collections
Trong một số trường hợp, lưu các dữ liệu quan hệ trên nhiều collection hợp lý
có thể tăng hiệu năng so với dùng một collection
f Data Lifecycle Management
Việc quyết định mô hình dữ liệu cần xem xét quản lý vòng đời dữ liệu
Nếu ứng dụng yêu cầu dữ liệu chỉ tồn tại trong một thời gian hạn chế, cần sửdụng thêm tính năng Time to Live (TTL)
2.4.3 GridFS
MongoDB dùng GridFS làm phương pháp để lưu trữ và truy xuất các tập tinvượt quá giới hạn 16MB của document BSON
Thay vì lưu trữ file trong một document, GridFS chia file thành nhiều phần, gọi
là chunk và lưu trữ các chunk này trong các document riêng biệt Mặc định, kích thướclớn nhất của chunk này là 255k GridFS dùng hai collection để lưu file, một để lưuchunk và một để lưu metadata của file
Khi cần truy vấn file được lưu trữ bằng GridFS thì client sẽ lắp ráp lại(reassemble) các chunk này
GridFS cho phép truy cập thông tin từ các phần tùy ý của file, cho phép bỏ qua(skip) để vào giữa một video hoặc tập tin âm thanh GridFS không chỉ hữu ích để lưu
Trang 18trữ các file kích thước vượt quá 16MB mà còn lưu trữ bất kỳ file nào mà việc truy cậpfile không cần phải tải toàn bộ file vào bộ nhớ.
2.5 N OD
E JS
Node.js được phát triển từ năm 2009 bởi Ryan Dahl, lúc đầu chỉ chạy trênLinux Sau một thời gian phát triển, Node.js trở thành một ứng dụng mã nguồn mở, làmôi trường thực thi nền tảng để phát triển ứng dụng web server-side Node.js được viếtbằng Javascript và có thể chạy trên nhiều nền tảng như OS X, Microsoft Windows,Linux, FreeBSD, NonStop, IBM AIX, IBM System z và IBM i [10]
Node.js cung cấp kiến trúc sử dụng event-driven và API non-blocking I/O đượcthiết kế để tối ưu quá thông lượng (throughout) và khả năng mở rộng cho ứng dụng webthời gian thực (real-time web application) [10] Node.js sử dụng Google V8 JavaScriptengine để thực thi code và một phần lớn module được viết bằng JavaScript Nó chứamột built-in library cho phép ứng dụng đóng vai trò như một web server đứng một mình(stand-alone web server: không cần Apache hay IIS) Điều đó làm Node.js tương tự nhưPHP như khác biệt ở chổ PHP là ngôn ngữ blocking, khi thực thi một lệnh yêu cầu lệnhtrước đó phải hoàn thành, trong khi Node.js là ngôn ngữ non-blocking, việc xử lý lệnhđược thực hiện parallel, và dùng callbacks để trả tín hiệu hoàn thành [10]
Do vậy, Node.js có thời gian đáp ứng nhanh hơn các server truyền thống, servertiếp tục thực hiện các hành động bên dưới mà không cần phải chờ tới khi có kết quả trả
về Node.js thích hợp cho những ứng dụng xử lý lượng kết nối lớn, theo thống kê của
caustik's blog [11], Node.js có khả năng xử lý một triệu kết nối Rất phù hợp các ứngdụng thời gian thực giữa client-server, yêu cầu khả năng đáp ứng lượng kết nối lớn, và
dễ mở rộng phân tán theo chiều ngang [10]
Ngày nay, Node.js được sử dụng rộng rãi bởi những tập đoàn lớn như IBM,Microsoft, Yahoo!, Walmart, Groupon, SAP, LinkedIn, Rakuten, PayPal, Voxer vàGoDaddy [11]
Trang 19Chương 3: CÁC MÔ HÌNH ĐIỀU KHIỂN TRUY CẬP
3.1 M
Ô HÌN
H TRU YỀN TH ỐN G
Discretionary Access Controls (DAC) – truy cập tùy quyền là cơ chế điều khiểntruy cập đươc ra đời vào những năm 1960, được nghiên cứu và ứng dụng rộng rãi Đặcđiểm chính của DAC là chủ của dữ liệu có toàn quyền trên dữ liệu đó, có quyền địnhnghĩa các loại tri cập đọc/ghi/thực thi và gán hoặc thu hồi quyền của những ngườidùng khác Khuyết điểm của DAC là cho phép thông tin từ đối tượng này được truyềnsang đối tượng khác bằng cách đọc thông tin lên từ một đối tượng rồi ghi thông tinxuống đối tượng khác Đây là điểm yếu bị khai thác bằng Trojan Horse
Mandatory Access Controls (MAC) ra đời vào những năm 1970 nhằm khắcphục điểm yếu của DAC bằng cách phân lớp dữ liệu và người dùng theo các lớp bảomật MAC phân loại người dùng theo mức độ tin cậy và lĩnh vực hoạt động người dùng,phân loại dữ liệu dựa vào mức độ nhạy cảm và lĩnh vực của dữ liệu, do người quản trịtrung tâm quyết định Người dùng ở cấp càng cao thì mức độ tin cậy càng lớn, dữ liệu ởcấp càng cao thì càng nhạy cảm MAC hoạt động với tính chất không đọc lên – khôngghi xuống (No read-up, No write-down) để đảm bảo không có dòng thông tin nào có thể
đi từ lớp cao xuống lớp thấp
Ưu điểm của MAC là có tính bảo mật ngăn chặn dòng thông tin bất hợp pháp
và thích hợp cho môi trường quân đội Khuyết điểm của MAC là không dễ áp dụng, đòihỏi người dùng và dữ liệu phải được phân loại rõ ràng, người quản trị trung tâm kiểmsoát hệ thống trao quyền và MAC chỉ được ứng dụng trong một số ít môi trường, khôngphù hợp với các ứng dụng ngày nay đòi hỏi cơ chế phân quyền linh hoạt hơn
Trang 203.2 M
Ô HÌN
H ĐIỀ
U KHI
ỂN TRU
Y CẬP DỰ
A TRÊ
N VAI TR
Ò (RO LE- BAS
ED AC CES
S CO NTR
OL MO DEL – RBA C)
Trang 21Mô hình điều khiển truy cập dựa trên vai trò (Role-Based Access Control
Model – RBAC) ra đời vào những năm 1990 nhằm thay thế cho các phương pháp
truyền thống DAC và MAC [12]
Ý tưởng trọng tâm của RBAC là quyền (permission) được kết hợp với vai trò(role), và người dùng (user) được phân chia theo các role thích hợp Role là tập baogồm các permission và các role khác Session là một phần quan trọng của RBAC, phânbiệt nó với các group truyền thống Session cho phép kích hoạt một tập con của roleđược gán cho user Nếu không có session thì role của user luôn được kích hoạt có thểdẫn đến vị phạm đặc quyền tối thiểu
RBAC làm đơn giản việc quản lý các permission RBAC tạo các role cho cácchức năng công việc khác nhau trong một tổ chức và các user được phân role dựa theovai trò và quyền hạn của họ Những role này được cấp thêm hoặc hủy bỏ permission khicần thiết Người dùng không được cấp quyền trực tiếp mà thông qua các vai trò Việcquản lý vai trò trở nên đơn giản hơn
Tuy nhiên, việc phát triển RBAC không có chuẩn thống nhất làm RBAC đượcthực hiện bằng nhiều cách Mô hình NIST giải quyết vấn đề này [12] Mô hình NISTđược tổ chức thành bốn cấp theo thứ tự tăng dần khả năng hoạt động:
1 RBAC phẳng (Flat RBAC)
2 RBAC phân cấp (Hierarchical RBAC)
3 RBAC ràng buộc (Constrained RBAC)
4 RBAC đối xứng (Symmetric RBAC)
Hình 3: Bảng các loại RBAC [18]
Trang 223.2.1 RBAC phẳng (Flat RBAC) [12]
Hình 7 : Flat RBACKhái niệm cơ bản của RBAC : người dùng được gán role, permission được gánrole User sử dụng permission bằng cách trở thành thành viên của role được gánpermission
User có thể thực hiện nhiều quyền hoặc nhiều vai trò
3.2.2 RBAC phân cấp (Hierarchical RBAC) [12]
Trang 23 Limited Hierarchical RBAC (RBAC phân cấp hạn chế) : có thêm các hạnchế hệ thống phân cấp role như giới hạn cấu trúc đơn giản như cây hoặc cây đảo ngược.
3.2.3 RBAC ràng buộc (Constrained RBAC) [12]
Hình 9 : RBAC ràng buộc tĩnhRBAC ràng buộc tĩnh: có thêm điều kiện ở giai đoạn gán user-role, nhằm tránhhiện tượng chồng chéo, mâu thuẫn hoặc xung đột giữa các role được cấp cho cùng mộtngười dùng Các ràng buộc được kế thừa trong phân cấp role nên cần tránh hiện tượngrole cha và con có mâu thuẫn
Hình 10 : RBAC ràng buộc độngRBAC ràng buộc động dựa trong quá trình gán role-session, nhằm hạn chếpermission được gán cho user trong ngữ cảnh nhất định, hỗ trợ nguyên tắc đặc quyềntối thiểu trong đó user có mức độ cho phép khác nhau vào những ngữ cảnh khác nhau,tùy thuộc vào role