SlideShare une entreprise Scribd logo
1  sur  31
MongoDB
NoSQL – Non Relational – Not Only SQL
Phase 01
NoSQL là gì,
tại sao lại sử
dụng NoSQL
Phase 02
MongoDB là
gì? Tính chất
của nó
Phase 03
Cấu trúc lưu
trữ dữ liệu của
MongoDB
Phase 04
Những thao
tác cơ bản với
MongoDB
Những nội dung chính...
Khi làm việc với database, chúng ta đã quá quen với SQLServer, MySQL, PostgreSQL, Oracle ...
Điểm chung của những database này là sử dụng ngôn ngữ SQL để truy vấn dữ liệu. Nhưng có 1
dạng database khác với những đặc tính khác biệt được gọi chung dưới cái tên là NoSQL
1. NoSQL là gì ?
Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụng làm tên
gọi chung cho các lightweight open source relational database (cơ sở dữ
liệu quan hệ nguồn mở nhỏ) nhưng không sử dụng cho truy vấn. Vào năm
2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL
trong một hội thảo về cơ sở dữ liệu nguồn mở phân tán. Thuật ngữ
NoSQL đánh dấu bước phát triển của thế hệ database mới: distributed
(phân tán) + non-relational (không ràng buộc). Đây là 2 đặc tính quan
trọng nhất của NoSQL
I. Giới thiệu về NoSQL
2. Tại sao cần có NoSQL ?
• Sở dĩ người ta phát triển NoSQL xuất phát từ yêu cầu cần những
database có khả năng lưu trữ dữ liệu với lượng cực lớn, truy vấn dữ
liệu với tốc độ cao mà không đòi hỏi quá nhiều về năng lực phần cứng
cũng như tài nguyên hệ thống và tăng khả năng chịu lỗi.
• Đây là những vấn đề mà các relational database không thể giải quyết
được.
• Lượng dữ liệu mà các hệ thống cần phải xử lý giờ đây ngày 1 lớn. Ví dụ
như Google, Facebook phải lưu trữ và xử lý một lượng dữ liệu cực lớn
mỗi ngày .
Key - value
MongoDB, CouchDB
Document database
Redis, Riak
Column
Family
HBase, Cassandra
Graph
Database
Neo4j
3. Một số loại NoSQL thông dụng
Dữ liệu được thêm
vào lưu trữ dưới
dạng cấu trúc JSON,
trong đó dữ liệu có
thể là bất kỳ kiểu
nào, từ số nguyên
đến chuỗi hay đến
các văn bản tự do
Các giá trị dạng tự
do, từ số nguyên
hoặc chuỗi đơn giản
đến các tài liệu
JSON phức tạp,
được truy cập trong
cơ sở dữ liệu bằng
các khóa.
Dữ liệu được lưu trữ
trong các cột thay vì
các hàng như hệ
thống SQL. Bất kỳ số
lượng cột nào (nhiều
loại dữ liệu khác
nhau) có thể được
nhóm hoặc tổng hợp
khi cần cho truy vấn
Dữ liệu được biểu
diễn dưới dạng mạng
hoặc đồ thị của các
thực thể và các mối
quan hệ của thực thể
đó, với mỗi node
trong biểu đồ là một
khối dữ liệu ở dạng
tự do
MongoDB là một database hướng tài liệu (document), một
dạng NoSQL database. Vì thế, MongoDB sẽ tránh cấu trúc
table-based của relational database để thích ứng với các tài
liệu như JSON bằng một schema rất linh hoạt gọi là BSON
(Binary JSON). Một document bao gồm các cặp field và value.
MongoDB documents tương tự với JSON object. Các giá trị
của các trường có thể bao gồm document khác, một mảng,
hoặc mảng của các document.
II. MongoDB là gì ?
BSON là mã hóa nhị phân của các tài liệu giống như JSON mà MongoDB sử dụng
khi lưu trữ tài liệu trong các bộ sưu tập. Nó bổ sung hỗ trợ cho các loại dữ liệu không
được hỗ trợ trong JSON như BinData và Date.
JSON
vs
XML
1. Không ràng buộc – Non relational:
Đối với hệ cơ sở dữ liệu NoSQL, không sử dụng ràng buộc như SQL, dữ liệu
sẽ ở dạng JSON, BSON. Khác với RDBMS, dữ liệu trong đây không có sự
ràng buộc và không có yêu cầu tuân theo khuôn khổ nhất định, nên có thể
chèn vào thoải mái bất cứ thông tin gì .
Các tính chất của MongoDB (NoSQL)
2. Khả năng mở rộng:
Khả năng mở rộng – High Scalability: Đối với NoSQL sẽ không có giới hạn
mở rộng, sử dụng hệ csdl phân tán, khi cần mở rộng chỉ cần thêm các
node chia tải và chia dữ liệu
• Khả năng mở rộng chiều dọc – Vertical scalable, SQL thường dùng,
tăng bộ nhớ máy chủ,... giúp hoạt động tốt hơn (Scale Up)
• Khả năng mở rộng chiều ngang – Honrizontal scalable: NoSQL thường
dùng, không cần nâng cấp server, chỉ cần thêm server(node) vào, đối
với csdl phân tán sẽ mở rộng theo chiều ngang không phải theo chiều
dọc (Scale Out)
Scale-Up và Scale-Out
Sharding, Clusters (phân mảnh dữ liệu)
3. Distributed Data ( Phân tán dữ liệu ):
Đối với các tập đoàn đa quốc
gia, các data center nằm rải rác
trên các nước trên thế giới, giúp
truy cập nhanh nhất và lưu trữ
tại 1 data center tổng nắm toàn
bộ data, mỗi công ty có một thiết
kế dữ liệu phân tán khác nhau
tùy thuộc vào sự sắp đặt của
người điều hành.
4. Tính sẵn sàng cao - High Availability:
Khi thêm 1 server(node) hay tắt 1 server đều không ảnh hưởng tới những server
còn lại, , MongoDB sử dụng mô hình replica set nhằm đảm bảo việc sao lưu và
khôi phục dữ liệu
Replica set
Gồm 1 primary node và nhiều node phụ, chỉ có primary node mới được write, khi
heartbeat quá thời gian cho phép (thường là 10s) thì một secondary sẽ được bầu
làm primary node sau một khoảng thời gian ngắn
5. Lưu trữ tốt – Durability:
Đối với các hệ csdl SQL sẽ lưu ở ổ đĩa cứng, không nằm ở RAM, đối với NoSQL
sẽ nằm ở bộ nhớ máy tính và ổ đĩa cứng, khi truy xuất sẽ lấy dữ liệu ở bộ nhớ
giúp tăng tốc độ xử lí
Khi một server có vấn đề sẽ không
gây ảnh hưởng gì tới các server
còn lại, server ảo tính toán Load
Balance chia tải các request của
client tới server, áp dụng mô hình
về cây và node để giải bài toán chia
tải. Bằng cách sử dụng
Sharding, MongoDB chia tỷ lệ theo
chiều ngang để người dùng chọn
một Shard key,...
MongoDB Sharding
6. Cân bằng tải
Nhất quán cuối – Eventual
consistency: Sự nhất quán hay sự
đồng bộ giữa các server(node) sẽ
chậm hơn vì khi đưa 1 dữ liệu mới
vào, nó sẽ lưu tạm thời trên Ram
và trên server vừa truy cập, sau đó
nó sẽ đồng bộ tới các server khác.
Vì vậy nên NoSQL không phù hợp
với các yêu cầu đồng bộ cao như
ngân hàng, chứng khoán,...
7. Nhất quán cuối – Eventual consistency:
III. Ưu điểm và
nhược điểm
Sử dụng MongoDB mang lại rất nhiều lợi ích đến người dùng:
• Đầu tiên có thể nhắc đến là tính linh hoạt lưu trữ dữ liệu theo các kích cỡ
khác nhau, dữ liệu dưới dạng hướng tài liệu JSON nên có thể chèn vào thoải
mái bất cứ thông tin gì bạn muốn.
• Khác với RDBMS, dữ liệu trong đây không có sự ràng buộc và không có yêu
cầu tuân theo khuôn khổ nhất định, điều này tiết kiệm thời gian cho việc
kiểm tra sự thỏa mãn về cấu trúc nếu muốn chèn, xóa, cập nhật hay thay đổi
các dữ liệu trong bảng.
• MongoDB dễ dàng mở rộng hệ thống bằng cách thêm node vào cluster –
cụm các node chứa dữ liệu giao tiếp với nhau.
• Ưu điểm thứ tư là tốc độ truy vấn nhanh hơn nhiều so với hệ quản trị cơ sở
dữ liệu quan hệ RDBMS do dữ liệu truy vấn được cached lên bộ nhớ RAM để
lượt truy vấn sau diễn ra nhanh hơn mà không cần đọc từ ổ cứng.
1. Ưu điểm
Ngoài các ưu điểm vượt trội, vẫn còn một số hạn chế khi cài đặt và sử dụng cần
chú ý như sau:
• MongoDB không có các tính chất ràng buộc như trong RDBMS –> dễ bị làm
sai, nhầm lẫn dữ liệu
• Không hỗ trợ join giống như RDBMS nên khi viết function join trong code ta
phải làm bằng tay khiến cho tốc độ truy vấn bị giảm.
• Sử dụng nhiều bộ nhớ: do dữ liệu lưu dưới dạng key-value, các collection chỉ
khác về value do đó key sẽ bị lặp lại. Không hỗ trợ join nên sẽ bị dữ thừa dữ
liệu (trong RDBMS thì ta chỉ cần lưu 1 bản ghi rồi các bản ghi khác tham
chiếu tới còn trong MongoDB thì không)
• Bị giới hạn kích thước bản ghi: mỗi document không được có kích thước >
16Mb
2. Nhược điểm
Khi nào nên
dùng MongoDB
MongoDB dùng cho các hệ thống:
● Hệ thống realtime (thời gian
thực) yêu cầu phản hồi nhanh
● Các hệ thống bigdata với yêu
cầu truy vấn nhanh.
● Các hệ thống có tần suất
write/insert lớn
● Sử dụng làm search engine
IV.Các thành phần
chính của MongoDB
Document
Collection
Database
Gồm nhiều collection
Gồm nhiều document
Gồm nhiều field, document, ...
Database: là một container của các
collection giống như là một cơ sở dữ
liệu chứa các bảng trong RDBMS. Mỗi
database có một bộ các file trên hệ
thống file. Server của MongoDB có thể
lưu trữ được nhiều database.
Database
Collection
Là một tập các
Documents. Một
collection tương
đương với một bảng
được tạo bởi một hệ
quản trị cơ sở dữ
liệu quan hệ SQL
Document
Là một bản ghi trong
1 collection của
MongoDB tương ứng
được gọi là 1
document.
Document bao gồm
các Field hoặc có thể
chứa các document
khác
Field
Là một cặp key-
value. 1 Document
có thể không có
trường nào hoặc có
thể có nhiều trường.
Các trường này
tương tự như các
cột trong RDBMS
Các thành phần chính của MongoDB
Cấu trúc lưu dữ
liệu của MongoDB
V. Các thao
tác cơ bản
MongoDB CRUD
Operations
• Create hay Insert thêm một document mới vào một
collection. Nếu collection hiện không tồn tại, insert sẽ tạo
collection.
• db.collection.insertOne(): chèn một tài liệu mới vào một
collection. Nếu document không có trường _id , MongoDB sẽ
tự động thêm trường _id với value kiểu ObjectId.Ví dụ:
db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"],
size: { h: 28, w: 35.5, uom: "cm" } })
1. Create Operations
db.collection.insertMany(): insert nhiều document vào một collection,
truyền vào phương thức là mảng các document.Ví dụ:
db.inventory.insertMany([
{ item: "journal", qty: 25, tags: ["blank", "red"], size:
{ h: 14, w: 21, uom: "cm" } },
{ item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9,
w: 35.5, uom: "cm" } },
{ item: "mousepad", qty: 25, tags: ["gel", "blue"], size:
{ h: 19, w: 22.85, uom: "cm" } }
])
Ví dụ trên chèn 3 document mới vào collection inventory. Nếu document không chỉ định
trường _id, MongoDB thêm trường _id với một giá trị kiểu ObjectId vào mỗi document.
1. Create Operations
2. Read Operations
Read operation truy xuất documents
từ một collection. Để lấy ra tất cả các
document trong collection, truyền
vào một document trống vào phương
thức find. Ví dụ:
db.inventory.find( {} )
Query and Projection Operators — MongoDB Manual
Câu lệnh dưới đây lấy ra các document có
status bằng "D" từ collection inventory
db.inventory.find({ status: "D"})
Truy vấn AND, OR:
Một truy vấn kết hợp có thể chỉ định các
điều kiện thỏa mãn cho nhiều trường của
document. Ví dụ dưới đây lấy ra tất cả các
documents trong collection inventory với
trường status bằng "a" và trường qty ít hơn
30 ($lt)
db.inventory.find( { status: "A",
qty: { $lt: 30 } } )
$lt: bé hơn , $lte: bé hơn hoặc bằng
$ge: lớn hơn, $gte: lớn hơn hoặc bằng
$gte
$gte
Update một document với db.collection.updateOne()
Ví dụ sau sẽ update document đầu tiên mà có trường item bằng "paper":
db.inventory.updateOne(
{ item: "paper" },
{$set: { "size.uom": "cm", status: "P" },
$currentDate: { lastModified: true }})
Update nhiều Document với db.collection.updateMany(),
Để thay nội dung của một document (ngoại trừ trường _id), truyền vào toàn
bộ document mới là một tham số thứ hai của hàm db.collection.replaceOne()
Link: Update Operators
3. Update Operations
- Delete operation xóa bỏ document từ một collection.
- Để xóa tất cả các tài liệu từ một collection, truyền một document filter {} tới
phương thức db.collection.deleteMany()
- Xóa tất cả các document thỏa mãn điều kiện. Ví dụ:
db.inventory.deleteMany({ status : "A" })
- Xóa chỉ một document thỏa mãn điều kiện, sử dụng db.collection.deleteOne().
Ví dụ: db.inventory.deleteOne({ status: "D" })
- Có thể sử dụng query operators để chỉ định các điều kiện lọc
4. Delete Operation
CREDITS: This presentation template was created by Slidesgo,
including icons by Flaticon, and infographics & images by Freepik
Link tham khảo:
Database Commands
Thanks
Anny question ?

Contenu connexe

Tendances

Phân tích thiết kế hệ thống thông tin
Phân tích thiết kế hệ thống thông tinPhân tích thiết kế hệ thống thông tin
Phân tích thiết kế hệ thống thông tinhuynhle1990
 
Co so du lieu phan tan
Co so du lieu phan tanCo so du lieu phan tan
Co so du lieu phan tanThao Vu
 
Hệ thống quản lý rạp chiếu phim
Hệ thống quản lý          rạp chiếu phimHệ thống quản lý          rạp chiếu phim
Hệ thống quản lý rạp chiếu phimvennguyennoinho
 
Tổng quan ASP.NET CORE - NIVIKI.COM
Tổng quan ASP.NET CORE - NIVIKI.COMTổng quan ASP.NET CORE - NIVIKI.COM
Tổng quan ASP.NET CORE - NIVIKI.COMKhoa Nguyen
 
hệ quản trị cơ sỡ dữ liệu bán vé xem phim
hệ quản trị cơ sỡ dữ liệu bán vé xem phimhệ quản trị cơ sỡ dữ liệu bán vé xem phim
hệ quản trị cơ sỡ dữ liệu bán vé xem phimthuhuynhphonegap
 
Bài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuBài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuMasterCode.vn
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngleemindinh
 
Grokking Techtalk #45: First Principles Thinking
Grokking Techtalk #45: First Principles ThinkingGrokking Techtalk #45: First Principles Thinking
Grokking Techtalk #45: First Principles ThinkingGrokking VN
 
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & Design
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & DesignTiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & Design
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & DesignPopping Khiem - Funky Dance Crew PTIT
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngNguyễn Danh Thanh
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentationBhavin Shah
 
Chuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tánChuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tánduysu
 
Bài 7: Thiết kế cơ sở dữ liệu vật lý
Bài 7: Thiết kế cơ sở dữ liệu vật lýBài 7: Thiết kế cơ sở dữ liệu vật lý
Bài 7: Thiết kế cơ sở dữ liệu vật lýMasterCode.vn
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmThuyet Nguyen
 
Code Refactoring: Thay đổi nhỏ - Lợi ích lớn
Code Refactoring: Thay đổi nhỏ - Lợi ích lớnCode Refactoring: Thay đổi nhỏ - Lợi ích lớn
Code Refactoring: Thay đổi nhỏ - Lợi ích lớnNhật Nguyễn Khắc
 

Tendances (20)

Phân tích thiết kế hệ thống thông tin
Phân tích thiết kế hệ thống thông tinPhân tích thiết kế hệ thống thông tin
Phân tích thiết kế hệ thống thông tin
 
Co so du lieu phan tan
Co so du lieu phan tanCo so du lieu phan tan
Co so du lieu phan tan
 
Hệ thống quản lý rạp chiếu phim
Hệ thống quản lý          rạp chiếu phimHệ thống quản lý          rạp chiếu phim
Hệ thống quản lý rạp chiếu phim
 
Tổng quan ASP.NET CORE - NIVIKI.COM
Tổng quan ASP.NET CORE - NIVIKI.COMTổng quan ASP.NET CORE - NIVIKI.COM
Tổng quan ASP.NET CORE - NIVIKI.COM
 
hệ quản trị cơ sỡ dữ liệu bán vé xem phim
hệ quản trị cơ sỡ dữ liệu bán vé xem phimhệ quản trị cơ sỡ dữ liệu bán vé xem phim
hệ quản trị cơ sỡ dữ liệu bán vé xem phim
 
Bài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuBài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệu
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
 
Data Warehouse
Data WarehouseData Warehouse
Data Warehouse
 
Grokking Techtalk #45: First Principles Thinking
Grokking Techtalk #45: First Principles ThinkingGrokking Techtalk #45: First Principles Thinking
Grokking Techtalk #45: First Principles Thinking
 
NoSql Database
NoSql DatabaseNoSql Database
NoSql Database
 
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & Design
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & DesignTiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & Design
Tiểu luận Kiến trúc và thiết kế phần mềm PTIT - Software Architecture & Design
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentation
 
Các mô hình dữ liệu
Các mô hình dữ liệuCác mô hình dữ liệu
Các mô hình dữ liệu
 
Chuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tánChuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tán
 
Bài 7: Thiết kế cơ sở dữ liệu vật lý
Bài 7: Thiết kế cơ sở dữ liệu vật lýBài 7: Thiết kế cơ sở dữ liệu vật lý
Bài 7: Thiết kế cơ sở dữ liệu vật lý
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềm
 
Getting started with entity framework
Getting started with entity framework Getting started with entity framework
Getting started with entity framework
 
C# REST API
C# REST APIC# REST API
C# REST API
 
Code Refactoring: Thay đổi nhỏ - Lợi ích lớn
Code Refactoring: Thay đổi nhỏ - Lợi ích lớnCode Refactoring: Thay đổi nhỏ - Lợi ích lớn
Code Refactoring: Thay đổi nhỏ - Lợi ích lớn
 

Similaire à MongoDB.pptx

MongoDB Introduction
MongoDB IntroductionMongoDB Introduction
MongoDB Introductionthanh can
 
bai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.pptbai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.pptHungHuyNguyen3
 
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]bookbooming1
 
Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1Nguyễn Trọng
 
Chuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfChuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfCriz20
 
Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2NguynMinh294
 
Chuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlChuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlHuy Feng
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1pisu412
 
Nhom 16 big data
Nhom 16 big dataNhom 16 big data
Nhom 16 big dataDuy Phan
 
b1-gioithieu-190213084421.pdf
b1-gioithieu-190213084421.pdfb1-gioithieu-190213084421.pdf
b1-gioithieu-190213084421.pdfQuyVo27
 
My sql.storage engine
My sql.storage engineMy sql.storage engine
My sql.storage engineLê Nhân
 
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTBài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTMasterCode.vn
 
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.comBài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.commai_non
 
Ldap it-slideshares.blogspot.com
Ldap it-slideshares.blogspot.comLdap it-slideshares.blogspot.com
Ldap it-slideshares.blogspot.comphanleson
 
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyLưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyPhamTuanKhiem
 

Similaire à MongoDB.pptx (20)

MongoDB Introduction
MongoDB IntroductionMongoDB Introduction
MongoDB Introduction
 
bai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.pptbai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.ppt
 
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]
 
Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1
 
Chuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfChuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdf
 
Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2
 
Chuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlChuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdl
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
 
Nhom 16 big data
Nhom 16 big dataNhom 16 big data
Nhom 16 big data
 
b1-gioithieu-190213084421.pdf
b1-gioithieu-190213084421.pdfb1-gioithieu-190213084421.pdf
b1-gioithieu-190213084421.pdf
 
Cosodulieu
CosodulieuCosodulieu
Cosodulieu
 
Cosodulieu
CosodulieuCosodulieu
Cosodulieu
 
01 gioithieu
01 gioithieu01 gioithieu
01 gioithieu
 
My sql.storage engine
My sql.storage engineMy sql.storage engine
My sql.storage engine
 
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTBài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
 
Com201 slide 1
Com201   slide 1Com201   slide 1
Com201 slide 1
 
51645016 csdl
51645016 csdl51645016 csdl
51645016 csdl
 
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.comBài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
 
Ldap it-slideshares.blogspot.com
Ldap it-slideshares.blogspot.comLdap it-slideshares.blogspot.com
Ldap it-slideshares.blogspot.com
 
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyLưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
 

MongoDB.pptx

  • 1. MongoDB NoSQL – Non Relational – Not Only SQL
  • 2. Phase 01 NoSQL là gì, tại sao lại sử dụng NoSQL Phase 02 MongoDB là gì? Tính chất của nó Phase 03 Cấu trúc lưu trữ dữ liệu của MongoDB Phase 04 Những thao tác cơ bản với MongoDB Những nội dung chính...
  • 3. Khi làm việc với database, chúng ta đã quá quen với SQLServer, MySQL, PostgreSQL, Oracle ... Điểm chung của những database này là sử dụng ngôn ngữ SQL để truy vấn dữ liệu. Nhưng có 1 dạng database khác với những đặc tính khác biệt được gọi chung dưới cái tên là NoSQL 1. NoSQL là gì ? Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụng làm tên gọi chung cho các lightweight open source relational database (cơ sở dữ liệu quan hệ nguồn mở nhỏ) nhưng không sử dụng cho truy vấn. Vào năm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL trong một hội thảo về cơ sở dữ liệu nguồn mở phân tán. Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ database mới: distributed (phân tán) + non-relational (không ràng buộc). Đây là 2 đặc tính quan trọng nhất của NoSQL I. Giới thiệu về NoSQL
  • 4. 2. Tại sao cần có NoSQL ? • Sở dĩ người ta phát triển NoSQL xuất phát từ yêu cầu cần những database có khả năng lưu trữ dữ liệu với lượng cực lớn, truy vấn dữ liệu với tốc độ cao mà không đòi hỏi quá nhiều về năng lực phần cứng cũng như tài nguyên hệ thống và tăng khả năng chịu lỗi. • Đây là những vấn đề mà các relational database không thể giải quyết được. • Lượng dữ liệu mà các hệ thống cần phải xử lý giờ đây ngày 1 lớn. Ví dụ như Google, Facebook phải lưu trữ và xử lý một lượng dữ liệu cực lớn mỗi ngày .
  • 5. Key - value MongoDB, CouchDB Document database Redis, Riak Column Family HBase, Cassandra Graph Database Neo4j 3. Một số loại NoSQL thông dụng Dữ liệu được thêm vào lưu trữ dưới dạng cấu trúc JSON, trong đó dữ liệu có thể là bất kỳ kiểu nào, từ số nguyên đến chuỗi hay đến các văn bản tự do Các giá trị dạng tự do, từ số nguyên hoặc chuỗi đơn giản đến các tài liệu JSON phức tạp, được truy cập trong cơ sở dữ liệu bằng các khóa. Dữ liệu được lưu trữ trong các cột thay vì các hàng như hệ thống SQL. Bất kỳ số lượng cột nào (nhiều loại dữ liệu khác nhau) có thể được nhóm hoặc tổng hợp khi cần cho truy vấn Dữ liệu được biểu diễn dưới dạng mạng hoặc đồ thị của các thực thể và các mối quan hệ của thực thể đó, với mỗi node trong biểu đồ là một khối dữ liệu ở dạng tự do
  • 6. MongoDB là một database hướng tài liệu (document), một dạng NoSQL database. Vì thế, MongoDB sẽ tránh cấu trúc table-based của relational database để thích ứng với các tài liệu như JSON bằng một schema rất linh hoạt gọi là BSON (Binary JSON). Một document bao gồm các cặp field và value. MongoDB documents tương tự với JSON object. Các giá trị của các trường có thể bao gồm document khác, một mảng, hoặc mảng của các document. II. MongoDB là gì ? BSON là mã hóa nhị phân của các tài liệu giống như JSON mà MongoDB sử dụng khi lưu trữ tài liệu trong các bộ sưu tập. Nó bổ sung hỗ trợ cho các loại dữ liệu không được hỗ trợ trong JSON như BinData và Date.
  • 8. 1. Không ràng buộc – Non relational: Đối với hệ cơ sở dữ liệu NoSQL, không sử dụng ràng buộc như SQL, dữ liệu sẽ ở dạng JSON, BSON. Khác với RDBMS, dữ liệu trong đây không có sự ràng buộc và không có yêu cầu tuân theo khuôn khổ nhất định, nên có thể chèn vào thoải mái bất cứ thông tin gì . Các tính chất của MongoDB (NoSQL)
  • 9. 2. Khả năng mở rộng: Khả năng mở rộng – High Scalability: Đối với NoSQL sẽ không có giới hạn mở rộng, sử dụng hệ csdl phân tán, khi cần mở rộng chỉ cần thêm các node chia tải và chia dữ liệu • Khả năng mở rộng chiều dọc – Vertical scalable, SQL thường dùng, tăng bộ nhớ máy chủ,... giúp hoạt động tốt hơn (Scale Up) • Khả năng mở rộng chiều ngang – Honrizontal scalable: NoSQL thường dùng, không cần nâng cấp server, chỉ cần thêm server(node) vào, đối với csdl phân tán sẽ mở rộng theo chiều ngang không phải theo chiều dọc (Scale Out)
  • 10. Scale-Up và Scale-Out Sharding, Clusters (phân mảnh dữ liệu)
  • 11. 3. Distributed Data ( Phân tán dữ liệu ): Đối với các tập đoàn đa quốc gia, các data center nằm rải rác trên các nước trên thế giới, giúp truy cập nhanh nhất và lưu trữ tại 1 data center tổng nắm toàn bộ data, mỗi công ty có một thiết kế dữ liệu phân tán khác nhau tùy thuộc vào sự sắp đặt của người điều hành.
  • 12. 4. Tính sẵn sàng cao - High Availability: Khi thêm 1 server(node) hay tắt 1 server đều không ảnh hưởng tới những server còn lại, , MongoDB sử dụng mô hình replica set nhằm đảm bảo việc sao lưu và khôi phục dữ liệu
  • 13. Replica set Gồm 1 primary node và nhiều node phụ, chỉ có primary node mới được write, khi heartbeat quá thời gian cho phép (thường là 10s) thì một secondary sẽ được bầu làm primary node sau một khoảng thời gian ngắn
  • 14. 5. Lưu trữ tốt – Durability: Đối với các hệ csdl SQL sẽ lưu ở ổ đĩa cứng, không nằm ở RAM, đối với NoSQL sẽ nằm ở bộ nhớ máy tính và ổ đĩa cứng, khi truy xuất sẽ lấy dữ liệu ở bộ nhớ giúp tăng tốc độ xử lí
  • 15. Khi một server có vấn đề sẽ không gây ảnh hưởng gì tới các server còn lại, server ảo tính toán Load Balance chia tải các request của client tới server, áp dụng mô hình về cây và node để giải bài toán chia tải. Bằng cách sử dụng Sharding, MongoDB chia tỷ lệ theo chiều ngang để người dùng chọn một Shard key,... MongoDB Sharding 6. Cân bằng tải
  • 16. Nhất quán cuối – Eventual consistency: Sự nhất quán hay sự đồng bộ giữa các server(node) sẽ chậm hơn vì khi đưa 1 dữ liệu mới vào, nó sẽ lưu tạm thời trên Ram và trên server vừa truy cập, sau đó nó sẽ đồng bộ tới các server khác. Vì vậy nên NoSQL không phù hợp với các yêu cầu đồng bộ cao như ngân hàng, chứng khoán,... 7. Nhất quán cuối – Eventual consistency:
  • 17. III. Ưu điểm và nhược điểm
  • 18. Sử dụng MongoDB mang lại rất nhiều lợi ích đến người dùng: • Đầu tiên có thể nhắc đến là tính linh hoạt lưu trữ dữ liệu theo các kích cỡ khác nhau, dữ liệu dưới dạng hướng tài liệu JSON nên có thể chèn vào thoải mái bất cứ thông tin gì bạn muốn. • Khác với RDBMS, dữ liệu trong đây không có sự ràng buộc và không có yêu cầu tuân theo khuôn khổ nhất định, điều này tiết kiệm thời gian cho việc kiểm tra sự thỏa mãn về cấu trúc nếu muốn chèn, xóa, cập nhật hay thay đổi các dữ liệu trong bảng. • MongoDB dễ dàng mở rộng hệ thống bằng cách thêm node vào cluster – cụm các node chứa dữ liệu giao tiếp với nhau. • Ưu điểm thứ tư là tốc độ truy vấn nhanh hơn nhiều so với hệ quản trị cơ sở dữ liệu quan hệ RDBMS do dữ liệu truy vấn được cached lên bộ nhớ RAM để lượt truy vấn sau diễn ra nhanh hơn mà không cần đọc từ ổ cứng. 1. Ưu điểm
  • 19. Ngoài các ưu điểm vượt trội, vẫn còn một số hạn chế khi cài đặt và sử dụng cần chú ý như sau: • MongoDB không có các tính chất ràng buộc như trong RDBMS –> dễ bị làm sai, nhầm lẫn dữ liệu • Không hỗ trợ join giống như RDBMS nên khi viết function join trong code ta phải làm bằng tay khiến cho tốc độ truy vấn bị giảm. • Sử dụng nhiều bộ nhớ: do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value do đó key sẽ bị lặp lại. Không hỗ trợ join nên sẽ bị dữ thừa dữ liệu (trong RDBMS thì ta chỉ cần lưu 1 bản ghi rồi các bản ghi khác tham chiếu tới còn trong MongoDB thì không) • Bị giới hạn kích thước bản ghi: mỗi document không được có kích thước > 16Mb 2. Nhược điểm
  • 20. Khi nào nên dùng MongoDB MongoDB dùng cho các hệ thống: ● Hệ thống realtime (thời gian thực) yêu cầu phản hồi nhanh ● Các hệ thống bigdata với yêu cầu truy vấn nhanh. ● Các hệ thống có tần suất write/insert lớn ● Sử dụng làm search engine
  • 21. IV.Các thành phần chính của MongoDB Document Collection Database Gồm nhiều collection Gồm nhiều document Gồm nhiều field, document, ...
  • 22. Database: là một container của các collection giống như là một cơ sở dữ liệu chứa các bảng trong RDBMS. Mỗi database có một bộ các file trên hệ thống file. Server của MongoDB có thể lưu trữ được nhiều database. Database
  • 23. Collection Là một tập các Documents. Một collection tương đương với một bảng được tạo bởi một hệ quản trị cơ sở dữ liệu quan hệ SQL Document Là một bản ghi trong 1 collection của MongoDB tương ứng được gọi là 1 document. Document bao gồm các Field hoặc có thể chứa các document khác Field Là một cặp key- value. 1 Document có thể không có trường nào hoặc có thể có nhiều trường. Các trường này tương tự như các cột trong RDBMS Các thành phần chính của MongoDB
  • 24. Cấu trúc lưu dữ liệu của MongoDB
  • 25. V. Các thao tác cơ bản MongoDB CRUD Operations
  • 26. • Create hay Insert thêm một document mới vào một collection. Nếu collection hiện không tồn tại, insert sẽ tạo collection. • db.collection.insertOne(): chèn một tài liệu mới vào một collection. Nếu document không có trường _id , MongoDB sẽ tự động thêm trường _id với value kiểu ObjectId.Ví dụ: db.inventory.insertOne( { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }) 1. Create Operations
  • 27. db.collection.insertMany(): insert nhiều document vào một collection, truyền vào phương thức là mảng các document.Ví dụ: db.inventory.insertMany([ { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } }, { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } }, { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } } ]) Ví dụ trên chèn 3 document mới vào collection inventory. Nếu document không chỉ định trường _id, MongoDB thêm trường _id với một giá trị kiểu ObjectId vào mỗi document. 1. Create Operations
  • 28. 2. Read Operations Read operation truy xuất documents từ một collection. Để lấy ra tất cả các document trong collection, truyền vào một document trống vào phương thức find. Ví dụ: db.inventory.find( {} ) Query and Projection Operators — MongoDB Manual Câu lệnh dưới đây lấy ra các document có status bằng "D" từ collection inventory db.inventory.find({ status: "D"}) Truy vấn AND, OR: Một truy vấn kết hợp có thể chỉ định các điều kiện thỏa mãn cho nhiều trường của document. Ví dụ dưới đây lấy ra tất cả các documents trong collection inventory với trường status bằng "a" và trường qty ít hơn 30 ($lt) db.inventory.find( { status: "A", qty: { $lt: 30 } } ) $lt: bé hơn , $lte: bé hơn hoặc bằng $ge: lớn hơn, $gte: lớn hơn hoặc bằng $gte $gte
  • 29. Update một document với db.collection.updateOne() Ví dụ sau sẽ update document đầu tiên mà có trường item bằng "paper": db.inventory.updateOne( { item: "paper" }, {$set: { "size.uom": "cm", status: "P" }, $currentDate: { lastModified: true }}) Update nhiều Document với db.collection.updateMany(), Để thay nội dung của một document (ngoại trừ trường _id), truyền vào toàn bộ document mới là một tham số thứ hai của hàm db.collection.replaceOne() Link: Update Operators 3. Update Operations
  • 30. - Delete operation xóa bỏ document từ một collection. - Để xóa tất cả các tài liệu từ một collection, truyền một document filter {} tới phương thức db.collection.deleteMany() - Xóa tất cả các document thỏa mãn điều kiện. Ví dụ: db.inventory.deleteMany({ status : "A" }) - Xóa chỉ một document thỏa mãn điều kiện, sử dụng db.collection.deleteOne(). Ví dụ: db.inventory.deleteOne({ status: "D" }) - Có thể sử dụng query operators để chỉ định các điều kiện lọc 4. Delete Operation
  • 31. CREDITS: This presentation template was created by Slidesgo, including icons by Flaticon, and infographics & images by Freepik Link tham khảo: Database Commands Thanks Anny question ?