Nội dung chính: Giới thiệu về NoSQL+ Khái niệm NoSQL+ Đặc điểm của NoSQL+ Các dạng NoSQL+ Ưu, nhược điểm của NoSQL+ Một số hệ quản trị NoSQL phổ biến Giới thiệu về MongoDB+ Khái niệm+ Mục đích và đối tượng+ Mô hình dữ liệu+ Chỉ mục+ Xử lý truy vấn và giao tác đồng thời+ So sánh đánh giá hiệu năng của MongoDB và MySQL
Trang 1Hệ quản trị cơ sở dữ liệu MongoDB
Thành viên nhóm:
Đặng Thị KhôiDương Thị HuếTrần Trung Hiếu
Trang 2Nội dung chính
Giới thiệu về NoSQL
Khái niệm NoSQL
Đặc điểm của NoSQL
Các dạng NoSQL
Ưu, nhược điểm của NoSQL
Một số hệ quản trị NoSQL phổ biến
Giới thiệu về MongoDB
Khái niệm
Mục đích và đối tượng
Mô hình dữ liệu
Chỉ mục
Xử lý truy vấn và giao tác đồng thời
So sánh đánh giá hiệu năng của MongoDB và MySQL
Trang 3Khái niệm NoSQL
NoSQL có nghĩa là Non-Relational (NoRel) - không ràng buộc.
NoSQL là một thế hệ cơ sở dữ liệu non-relational (không ràng buộc, open source, horizontal scalable (khả năng
mở rộng theo chiều ngang)
NoSQL lưu trữ, xử lý từ một lượng rất nhỏ cho tới hàng petabytes dữ liệu trong hệ thống có độ chịu tải, lỗi cao với những đòi hỏi về tài nguyên phần cứng thấp
Trang 4Đặc điểm của NoSQL
NoSQL lưu trữ dữ liệu của mình theo dạng cặp giá trị “key – value” Sử dụng số lượng lớn các node để lưu trữ thông tin
Chấp nhận dữ liệu bị trùng lặp do một số node sẽ lưu cùng thông tin giống nhau
Phi quan hệ – không có ràng buộc nào cho việc nhất quán dữ liệu
Tính nhất quán không theo thời gian thực
Trang 5Các dạng NoSQL cơ bản
Key – value data stores: Dữ liệu lưu dưới dạng cặp key – value Giá trị được truy xuất thông qua key
Column-based –Tabular: Cơ sở dữ liệu tổ chức dưới dạng các bảng
Document-based: Dữ liệu được lưu trữ và tổ chức dưới dạng một tập hợp các document.
Graph-based data-stores: áp dụng lý thuyết đồ thị trong khoa học máy tính để lưu trữ và truy xuất dữ liệu, tập trung vào tính rời rạc giữa các phần dữ liệu
Trang 6Ưu, nhược điểm của NoSQL
Ưu điểm:
Hiệu suất hoạt động cao
Khả năng phân trang
NoSQL là nguồn mở
Việc mở rộng phạm vi là mềm dẻo
NoSQL phù hợp với công nghệ đám mây
Trang 7Ưu, nhược điểm của NoSQL
Nhược điểm:
Cấu trúc dữ liệu phi quan hệ
Nguồn mở có thể có nghĩa là sự hỗ trợ không đồng đều cho các doanh nghiệp
Thiếu sự tinh thông
Những vấn đề về tính tương thích
Trang 8Một số hệ quản trị NoSQL phổ biến
MongoDB và Redis: lưu trữ các dữ liệu thống kê ít được đọc, được viết thường xuyên
Hadoop: một CSDL dạng tự do, lưu trữ các dữ liệu lớn như các con số thống kê thời tiết hoặc công việc phân
tích nghiệp vụ
Memcache: lưu trữ các phiên làm việc web, các khóa, và các con số thống kê ngắn hạn.
Cassandra và Riak: làm việc tốt trong các môi trường với các ứng dụng có tính sẵn sàng cao, khi thời gian sống
tối đa là sống còn
Trang 9Hệ quản trị MongoDB
Trang 10Khái niệm
MongoDB là một mã nguồn mở và là một tập tài liệu dùng cơ chế NoSQL để truy vấn.
nó có khả năng tính toán với tốc độ cao chứ không giống như các hệ quản trị CSDL hiện nay
MongoDB lưu các dữ liệu cấu trúc dưới dạng giống với JSON (JavaScript Object Notation) và gọi tên là BSON.
Trang 11Một số khái niệm cơ bản
Khóa (key-value) là cặp khóa - giá trị được dùng để lưu trữ dữ liệu trong NoSQL.
Fields đương đương với khái niệm Columns trong cơ sở dữ liệu quan hệ.
Chỉ mục (Index) là một cấu trúc dữ liệu, thu thập thông tin về giá trị của các fields trong document của một collection
trong máy chủ máy tính
Trang 12Một số khái niệm cơ bản
Document trong MongoDB có cấu trúc tương tự như kiểu dữ liệu JSON, nghĩa là sẽ có các cặp (key-value) nên
nó có tính năng động rất lớn
Collection trong MongoDB là nhóm các tài liệu (document), nó tương đương với một bảng (table) trong cơ sở
dữ liệu thông thường nên mỗi collection sẽ thuộc về một database duy nhất
Database là một ô chứa dữ liệu ở mức vật lý (physical), mỗi database sẽ có nhiều collection và được thiết lập lưu
trữ ở một nơi
Trang 13Mục đích và đối tượng
Tại sao sử dụng MongoDB thay thế MySQL
MongoDB cho phép xây dựng ứng dụng nhanh hơn, xử lý được nhiều loại dữ liệu với dị biệt cao, và quản
lý ứng dụng hiệu quả hơn về quy mô.
Quy trình phát triển phần mềm trở lên đơn giản do cơ sở dữ liệu hướng văn bản rất phù hợp với lập trình hướng đối tượng hiện đại
MongoDB cho phép lược đồ cơ sở dữ liệu dễ dàng thích ứng với thay đổi trong các yêu cầu kinh doanh
MongoDB có thể mở rộng trên nhiều trung tâm dữ liệu phân tán, cung cấp những khả năng mở rộng mới
mà không thể thực hiện được khi sử dụng cơ sở dữ liệu quan hệ như MySQL
Trang 14Mục đích và đối tượng
So sánh tính năng của MongoDB và MySQL
MySQL MongoDB
Trang 15Mô hình dữ liệu
Giới thiệu mô hình hóa dữ liệu
Dữ liệu trong MongoDB có một lược đồ linh hoạt
collection của MongoDB không bắt buộc cấu trúc tài liệu
Mỗi tài liệu có thể khớp với các trường dữ liệu của thực thể được đại diện, ngay cả khi dữ liệu có biến thể đáng
kể
Tuy nhiên, trong thực tế, các tài liệu trong một collection chia sẻ một cấu trúc tương tự
Trang 16Mô hình dữ liệu
Dữ liệu lưu trữ như các văn bản
MongoDB lưu trữ dữ liệu như những văn bản dưới dạng biểu diễn nhị phân là BSON (Binary JSON)
Các văn bản có cấu trúc tương tự nhau thường được nhóm thành một bộ sưu tập
Các bộ sưu tập tương tự các bảng trong cơ sở dữ liệu quan hệ, văn bản tương tự hàng, và trường tương tự cột
Một bản ghi trong MongoDB được lưu trữ trong một văn bản, còn trong cơ sở dữ liệu quan hệ lại thường được lưu trên nhiều bảng
Trang 17Mô hình dữ liệu
Không có phép nối
Nối các bảng với nhau thành một bảng trong cơ sở dữ liệu quan hệ cho phép truy vấn dữ liệu liên quan với nhau trên nhiều cột,
các bảng có thể nối được với nhau thể hiện quan hệ giữa dữ liệu
Có 2 phương thức cho phép biểu diễn quan hệ giữa dữ liệu
• tham chiếu (references) và
• văn bản nhúng (embedded documents)
Trang 18Mô hình dữ liệu
Tham chiếu – References
Tham chiếu lưu giữ mối quan hệ giữa dữ liệu bằng collection
Văn bản tham khảo
Văn bản tham khảo lưu trữ các mối quan hệ giữa dữ liệu
Trang 19Mô hình dữ liệu
Văn bản nhúng
Tài liệu được nhúng lưu trữ dữ liệu liên quan trong một cấu trúc tài liệu đơn.
Văn bản nhúng để nhúng cấu trúc tài liệu trong một lĩnh vực hoặc mảng trong một tài liệu
Trang 20Chỉ mục (Index)
Chỉ mục đơn:
Chỉ mục là một cấu trúc dữ liệu, thu thập thông tin về giá trị của các trường trong các văn bản của một bộ sưu tập
khởi tạo chỉ mục bằng cách gọi hàm createIndex()
Chỉ mục mặc định: Một chỉ mục luôn được tạo ra là _id Chỉ mục này đặc biệt là không thể bị xóa, chỉ mục _id là duy nhất cho các khóa của nó
Các khóa nhúng: có thể đánh chỉ mục trên các khóa bên trong văn bản nhúng.
Trang 21Chỉ mục (Index)
Chỉ mục hỗn hợp các khóa
MongoDB còn hỗ trợ đánh chỉ mục hỗn hợp nhiều khóa.
Sử dụng hàm ensureIndex() để khởi tạo chỉ mục.
db.things.ensureIndex({j:1, name:-1});
Số đi cùng với khóa là hướng của chỉ mục, 1: tăng dần, -1: giảm dần
Một chỉ mục hỗn hợp trên nhiều trường, truy vấn trên các tập hợp con đầu của các trường đó
Trang 22Chỉ mục (Index)
Chỉ mục thưa thớt
Chỉ mục thưa thớt bao gồm các văn bản có trường được đánh chỉ mục (index) Bất kể văn bản nào bị thiếu trường đánh chỉ mục thưa thớt đều không được lưu vào trong chỉ mục
Chỉ mục thưa thớt theo định nghĩa là không đầy đủ và hoạt động khác với chỉ mục đầy đủ
Khi sử dụng chỉ mục thưa thớt để sắp xếp một vài văn bản trong bộ sưu tập sẽ không được trả về.
Trang 23Chỉ mục (Index)
Chỉ mục duy nhất
Không có văn bản nào được chèn mà giá trị của khóa được đánh chỉ mục trùng với văn bản mà đã tồn tại.
Để tạo ra một chỉ mục đảm bảo không có 2 văn bản có cùng giá trị trong trường name và address ta thực hiện bằng hàm sau:
db.things.createIndex ({name:1, address:1},{unique:true});
Khóa bị thiếu: văn bản được lưu vào bộ sưu tập việc đánh chỉ mục duy nhất hay bất kì khóa được đánh chỉ mục nào bị thiếu sẽ được chèn vào với giá trị null
db.things.createIndex ({name:1},{unique:true});
Trang 25Xử lý truy vấn/giao tác đồng thời
Các loại khóa sử dụng trong MongoDB
MongoDB sư dụng khóa đa hạt cho phép hệ thống khóa ở mức toàn cục, mức database hoặc mức collection, và cho phép các engine lưu trữ đơn lẻ cài đặt điều khiển xử lý đồng thời dưới mức
MongoDb sử dụng khóa đọc-đọc ghi cho phép đồng thời phía đọc chia sẻ quyền truy cập cho một tài nguyên, như database hay collection
Một số chế độ khóa:
• Shared locking mode – S
• Exclusive locking mode – X
• Intent exclusive mode – IX
• Intent shared mode – IS
Trang 26Xử lý truy vấn/giao tác đồng thời
Cách thức khóa hạt hoạt động trong MongoDB
WiredTiger engine
WiredTiger sử dụng điều khiển đồng thời lạc quan (optimistic concurrency control).
WiredTiger chỉ sử dụng intent locks tại mức global, database và collection
MMAPv1 engine
MMAPv1 engine sử dụng khóa tại mức collection
Trang 27Xử lý truy vấn/giao tác đồng thời
Những lệnh phát sinh khóa database
Operation Lock Type
Issue a query Read lock
Get more data from a cursor Read lock
Insert data Write lock
Remove data Write lock
Update data Write lock
Map-reduce Read lock and write lock, unless operations are specified as non-atomic Portions of map-reduce jobs
can run concurrently.
Create an index Building an index in the foreground, which is the default, locks the database for extended periods of
time.
Trang 28Xử lý truy vấn/giao tác đồng thời
Giao tác
MongoDB không hỗ trợ giao tác đa văn bản (multi-document transactions)
Tuy nhiên, MongoDB cung cấp các atomic operations trên một văn bản đơn lẻ
Các atomic operations mức văn bản là đủ để giải quyết vấn đề mà yêu cầu giao tác ACID trong cơ sở dữ liệu quan hệ
Trang 29So sánh đánh giá hiệu năng của MongoDB và MySQL