Định nghĩa“Cơ sở dữ liệu thế hệ tiếp theo chủ yếu giải quyết một trong số các điểm: là một cơ sở dữ liệu không có ràng buộc, phân tán, mã nguồn mở, và có khả năng mở rộng theo chiều ngan
Trang 1Mô hình CSDL NoSQL
và Ứng dụng
Giảng viên : Nguyễn Hà Nam Trình bày : Nguyễn Thành Trung Nguyễn Minh Hà
Trang 3Giới thiệu NoSQL
• Bài toán
• Làm sao đáp ứng nhu cầu dữ liệu ngày càng tăng?
• Lịch sử phát triển
• Năm 1988, Carlo Strozzi đưa ra tên gọi NoSQL
• Năm 2009, Eric Evans giới thiệu lại NoSQL
• Năm 2011, UnQL
Trang 4Các vấn đề liên quan
• Điện toán đám mây
• Cloud Database
Trang 5Điện toán đám mây
Là một dịch vụ hơn là một sản phẩm !!!
Trang 6Điện toán đám mây
• Cấu trúc gồm 2 phần
Trang 7Điện toán đám mây
Trang 8Cloud Database
• Chạy trên nền tảng điện toán đám mây
• Hai mô hình triển khai
• Dùng cơ chế máy ảo
• Dùng như một dịch vụ
• Sử dụng hai mô hình dữ liệu
• SQL
• NoSQL
Trang 9 Xeround Cloud Database - MySQL front-end [2]
EnterpriseDB Postgres Plus Cloud Database [16]
NoSQL Data Model
CouchDB on Amazon EC2 [17]
Hadoop on Amazon EC2 [18]
Apache Cassandra on Amazon EC2 [19]
Neo4J on Amazon EC2 [20] or Microsoft Azure [21]
MongoDB on Amazon EC2 [22] or Microsoft Azure [23]
Amazon SimpleDB
Database.com by SalesForce [24]
Google App Engine Datastore
CouchDB Hosted Database [25]
MongoDB Database as a Service (several options) [26]
Trang 11Định nghĩa
“Cơ sở dữ liệu thế hệ tiếp theo chủ yếu giải quyết một trong số các điểm: là một cơ sở dữ liệu không có ràng buộc, phân tán, mã nguồn
mở, và có khả năng mở rộng theo chiều ngang
có thể lưu trữ, xử lý một lượng rất nhỏ cho tới hàng petabytes dữ liệu trong hệ thống có thể chịu tải, chịu lỗi cao với những đòi hỏi về tài nguyên phần cứng thấp”
Trang 13Kiến trúc
• Lưu trữ dữ liệu theo cặp giá trị key/value
• Sử dụng khái niệm “Node” trong quản lý dữ liệu phân tán
• Một request dữ liệu được gửi đến nhiều máy một lúc
• Một database nhỏ đảm bảo tính vào ra liên tục, khi đạt tới ngưỡng thời gian hoặc dung lượng thì gộp lại thành database lớn hơn
Trang 14• Atomicity
– Độc lập trạng thái dữ liệu trong các hành động
Trang 15Tính chất
• Consistency
– Chấp nhận tính nhất quán yếu, cập nhật mới không đảm bảo rằng các truy xuất sau đó thấy ngay được sự thay đổi Sau một khoảng thời gian lan truyền thì tính nhất quán cuối cùng của dữ liệu mới được đảm bảo.
• Durability
– Dữ liệu có thể tồn tại trong bộ nhớ máy tính nhưng đồng thời cũng được lưu trữ lại đĩa cứng.
Trang 17Tính chất
So sánh giữa MongoDB và SQL Server 2008
Trang 18Phân loại
• Có rất nhiều tiêu chí phân loại như:
– Interfaces, Logical Data Models, Data Distribution Model, Data Persistence
• Logical Data Model
– Wide Column Store / Column Families
– Document Store Internal
– Key-Value Store
– Graph Database
Trang 19Wide Column Store / Column
Families
• Hệ cơ sở dữ liệu phân tán cho phép truy xuất ngẫu nhiên/tức thời với khả năng lưu trữ một lượng cực lớn dữ liệu có cấu trúc Dữ liệu có thể tồn tại dạng bảng với hàng tỷ bản ghi và mỗi bản ghi có thể chứa hàng triệu cột
• Ứng dụng sử dụng cấu trúc lưu trữ dạng cột: Hadoop/HBase – Apache, BigTable – Google, Cassandra - Facebook/Apache, Hypertable - Zvents Inc/Baidu, Cloudera, SciDB, Mnesia, Tablets,…
Trang 20Wide Column Store / Column
Families
Một ví dụ về cơ sở dữ liệu quan
hệ Khi dữ liệu tăng theo thời gian
Trang 21Wide Column Store / Column
Families
• Column – Family
– Không phải là một cột là mà một tập hợp các cột (co thể có quan hệ logic với nhau) nhóm lại thành một bó
– Các thành viên của cùng một Column – Family thì được lưu trữ vật lý cùng nhau
• Ví dụ về column-family trên gồm: name, location và preference
Trang 22Wide Column Store / Column
Families
• Column – Family
– Chứa bất kỳ số cột, và mỗi cột có thể chứa bất kỳ một loại dữ liệu nào (có thể hiểu như là một mảng các bytes dữ liệu)
– Mỗi hàng chỉ lưu các giá trị hợp lệ (là các giá trị khác Null)
Trang 23Wide Column Store / Column
Families
Ví dụ về mô hình RDBMs sẽ có dạng Column-Family như trên
Trang 24Wide Column Store / Column
Families
• Trong lưu trữ vật lý
– Dữ liệu dạng cột được thiết kế để có thể dễ dàng thay đổi kích thược hoặc thêm hàng triệu các cột hoặc hàng tỷ các hàng dữ liệu mới
– Một bảng có thể được kéo dài trên nhiều máy tính
– Một row-key duy nhất để xác định một hàng trong dữ liệu dạng cột
– Các hàng được sắp xếp và chia thành từng bó, chứa các giá trị liền nhau như là sự phát triển của dữ liệu
Trang 25Wide Column Store / Column
Families
Tổ chức trong Lưu trữ vật lý
Trang 26Wide Column Store / Column
Families
Trang 27Document Store
• Tài liệu được đóng gói và mã hóa dươi các định dạng chuẩn như: XML, YAML, JSON và BSON và dạng nhị phân như PDF, Microsoft Office Document
• Các document được đánh địa chỉ bởi các khóa duy nhất tham chiếu đến nó Thông thường, các khóa này sẽ là chuỗi ký tự
Ví dụ:
FirstName:"Bob", Address:"5 Oak St.", Hobby:"sailing".
FirstName:"Jonathan", Address:"15 Wanamassa Point Road", Children:[{Name:"Michael",Age:10}, {Name:"Jennifer", Age:8}, {Name:"Samantha", Age:5}, {Name:"Elena", Age:2}].
Trang 28Document Store
• Tài liệu được đóng gói và mã hóa dươi các định dạng chuẩn như: XML, YAML, JSON và BSON và dạng nhị phân như PDF, Microsoft Office Document
• Các document được đánh địa chỉ bởi các khóa duy nhất tham chiếu đến nó Thông thường, các khóa này sẽ là chuỗi ký tự
Ví dụ:
FirstName:"Bob", Address:"5 Oak St.", Hobby:"sailing".
Trang 29Graph Database
• Định nghĩa: “Là bất kỳ một hệ thống lưu trữ cung cấp sự tự do cho việc đánh chỉ mục các thành phần liền kề Điều đó có nghĩa, tất cả các phần tử đều chứa một con trỏ có hướng tới các thành phần liền kề và việc tra cứu chỉ mục là không cần thiết”
Trang 30Graph Database
• Hệ cơ sở dữ liệu đồ thị có ưu điểm:
– Nhanh hơn đối với tập dữ liệu có liên kết với nhau và ánh
xạ trực tiếp tới cấu trúc của ứng dụng hướng đối tượng – Nó có thể thay đổi kích thước tự nhiên đối với các tập dữ
liệu lớn và không yêu cầu toán tử Join và phụ thuộc ít vào
các lược đồ cứng nhắc, do đó phù hợp với quản lý các lược
đồ có sự tăng theo thời gian.
– Cơ sở dữ liệu đồ thì là một công cụ mạnh cho việc truy vấn
dữ liệu đồ thị, ví dụ tính toán khoảng cách nhỏ nhất giữa 2 đỉnh của một đồ thị.
Trang 31Graph Database
Ví dụ về cơ sở dữ liệu đồ thị
Trang 32Mongo DB
Nguyễn Minh Hà
Trang 33Mongo DB : Nội dung chính
• Khái niệm về mongo DB
• Cài đặt và chạy thử nghiệm
• Các đặc điểm chính của mongo DB
• Chương trình demo kết nối PHP với mongo DB
Trang 34Tổng quan về Mongo DB
• MongoDB là một cơ sở dữ liệu theo dạng
hướng tài liệu của hệ thống cơ sở dữ liệu No SQL, không phải mô hình cơ sở dữ liệu quan hệ
Trang 35Cài đặt và chạy thử nghiệm
Giải nén MongoDB tải về (Ví dụ ở ổ C)
Tạo thư mục data/db (ví dụ C:/data/db) (cổng 28017)
Trang 36Các đặc điểm chính của mongo DB
Cần ít tài nguyên và phần cứng của máy chủ để triển khai
Tốc độ truy vấn và xử lý dữ liệu nhanh
Mã nguồn mở
Không có mô hình cụ thể
• MongoDB phù hợp với tất cả các hệ điều hành
• Không có quan hệ giữa các bảng
• Tập trung vào tốc độ, hiệu năng, tính linh hoạt và khả năng
mở rộng
• Linh hoạt khi kết hợp với các ngôn ngữ lập trình
Trang 37Đặc điểm của mongo DB
Trang 38Đặc điểm của mongo DB
• Mỗi document có một khóa đặc biệt (_id), nó là duy nhất
trong một collection
– Khóa không được chứ ký tự null (\0)
– Khóa không chưa ký tự và $ được sử dụng cho một vài lý do đặc biệt
– Khóa bắt đầu với ký tự _
• MongoDB phân biệt chữ viết hoa và viết thường
• Collection dưới dạng lược đồ tự do
– 2 documents {“greeting” : “hello world”}, {“foo”:5}
• Có 6 loại dữ liệu cơ sở
– Null , Boolean, 32-bit integer, 64-bit integer , 64-bit floating point
number, String
– Ngoài ra còn 1 số kiểu khác : Array, Date, Embedded documents, ObjectId
Trang 39Đặc điểm của mongo DB
• Bất kỳ trường nào trong một tài liệu MongoDB có thể
được lập chỉ mục (tương tự như CSDL quan hệ) Chỉ số thứ cấp cũng có sẵn.
• Một số chức năng cho quản trị : Công cụ tập
hợp(Aggregation), tạo bản sao cơ sở dữ liệu (Replication),
Sharding cho phép bạn thêm nhiều hơn
máy móc để xử lý tăng tải trọng và kích thước dữ liệu
Trang 40Một số lệnh truy vấn trong Mongo
DB
Sử dụng môt db : > use mydb
Insert dữ liệu vào 1 collection : > db.mydb.save ( {name :
“mongo”, content :”hello, world”})
Select dữ liệu trong 1 collection : > db.mydb.find()
Select dữ liệu theo điều kiện: > db.mydb.find({name:”mongo”})
Update dữ liệu:db.mydb.update({name:”mongo”},{content:”hello aa”})
Xóa dữ liệu : > db.mydb.remove({name:”mongo”})
Trang 41So sánh giữa Mongo DB và SQL
Server 2008
• Mô hình CSDL
chung
Trang 42Kết quả chạy
Trang 43So sánh kết quả chạy
Trang 44Demo giữa PHP và Mongo DB
• Chương trình demo việc thêm, sửa, xóa dữ
liệu thể hiện việc tương tác giữa PHP và
Mongo DB
Trang 45Tổng kết về NoSQL
Trang 46Tổng kết về NoSQL
• NoSQL : CSDL không sử dụng mô hình dữ liệu quan hệ, mô hình lưu
trữ cặp giá trị - khóa và hệ thống lưu trữ phân tán
• NoSQL tốt hơn: Các hệ CSDL quan hệ (RDBMs) hiện tại bộc lộ những
yếu kém trong những tác vụ như đánh chỉ mục một lượng lớn dữ liệu, phân trang, hoặc phân phối luồng dữ liệu media (phim, ảnh,
nhạc, v.v.)
• NoSQL thiết kế : đơn giản, nhẹ, gọn hơn so với RDBMs Ngoài
memory cached, dữ liệu nhỏ,… các NoSQL dạng này đặc biệt thích hợp cho thiết bị cầm nơi mà bộ nhớ và tốc độ xử lý hạn chế hơn so với
máy tính thông thường
• NoSQL có nhiều ứng dụng: NoSQL đặc biệt thích hợp cho các ứng
dụng cực lớn (dịch vụ tìm kiếm, mạng xã hội, v.v.) và nhỏ Với những
Trang 47Câu hỏi và giải đáp
Trang 48Xin ch©n thµnh c¸m ¬n sù theo dâi