1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm hiểu về hệ quản trị cơ sở dữ liệu SQL và NoSQL

44 774 12

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 44
Dung lượng 0,91 MB
File đính kèm SQL-và-NoSQL.rar (893 KB)

Nội dung

Tìm hiểu về Hệ quản trị cơ sở dữ liệu quan hệ (SQL) và Hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL).Các đặc điểm, đặc trưng đặc biệt của SQL và NoSQL Các loại cơ sở dữ liệu thường dùng điển hình trong SQL và NoSQL.

Trang 1

Tìm hiểu về Hệ quản trị cơ sở dữ liệu

SQL và NoSQL Tích hợp dữ liệu từ nhiều nguồn

CSDL khác nhau

Trang 2

Mục Lục

Lời mở đầu 3

Phần I: Các hệ quản trị cơ sở dữ liệu quan hệ 4

1 Hệ quản trị cơ sở dữ liệu DBMS 4

2 Các mô hình cơ sở dữ liệu 5

3 Các hệ quản trị cơ sở dữ liệu quan hệ RDBMS (Relational Database Management System) 8

3.1 khái niệm 8

3.2 Đặc điểm của RDBMS 8

3.3 Một số hệ quản trị cơ sở dữ liệu quan hệ phổ biến: 9

4 Ví dụ về SQL 15

Phần II: Các hệ quản trị cơ sở dữ liệu phi quan hệ - NoSQL 17

1 NoSQL 17

a Khái niệm 17

b Các đặc điểm của NoSQL 18

2 Phân loại NoSQL 19

a Key-value stores 19

b Document Oriented database 21

c Column-oriented databases (column-family) 22

d Graph databases 25

3 Các hệ quản trị cơ sở dữ liệu NoSQL phổ biến hiện nay 27

4 Ví dụ về NoSQL 32

Phần III: Chuyển đổi dữ liệu giữa 2 hệ quản trị cơ sở dữ liệu SQL-SQL, SQL → NoSQL, NoSQL → SQL 34

1 SQL - SQL 34

2 NoSQL → NoSQL 35

3 SQL → NoSQL 36

4 NoSQL → SQL 38

Phần IV Thiết kế hệ thống tích hợp dữ liệu từ nhiều nguồn SQL, NoSQL 40

Kết luận 42

Tài liệu tham khảo 42

Trang 3

Lời mở đầu

Trong thời buổi hiện đại ngày nay, đặc biệt là với sự bùng nổ về cuộc cáchmạng 4.0 Không thể phủ nhận tầm quan trọng của ngành công nghệ thông tin đốivới tất cả các ngành kinh tế, buôn bán, tài chính, thương mại, giao thương, du lịch,

… Với tất cả các ngành hiện nay, dữ liệu là một phần không thể thiếu và nó cũngmang lại giá trị to lớn đáp ứng nhu cầu thiết yếu cho các ngành, doanh nghiệp, cánhân,… Trong đó, tra cứu thông tin cũng là một chức năng quan trọng để đáp ứngnhu cầu hiện nay Vì vậy việc xây dựng hệ thống tra cứu là cần thiết với nguồn dữliệu phong phú và đa dạng Để có một CSDL lớn, dữ liệu có thể thu thập từ nhiềunguồn khác nhau Tuy nhiên với nhu cầu của từng hệ thống khác nhau, nhu cầu sửdụng các hệ quản trị cơ sở dữ liệu cũng khác nhau (khác nhau về mặt cấu trúc, cáctrường, kiểu dữ liệu,….) Do đó, việc thu thập dữ liệu từ nhiều nguồn và tích hợpvào một CSDL sẽ trở nên cực kỳ khó khăn

Do đó, chúng tôi sẽ đưa ra giải pháp để giải quyết vấn trên Trong phần tiếptheo, chúng tôi sẽ trình bày những nội dung cơ bản về SQL và NoSQL, phân tíchcác hệ quản trị CSDL phổ biến hiện nay Sau đó đưa ra một bản thiết kế để giảiquyết vấn đề về việc tích hợp dữ liệu giữa các hệ quản trị cơ sở dữ liệu khác nhau

Trang 4

Phần I: Các hệ quản trị cơ sở dữ liệu quan hệ

1 Hệ quản trị cơ sở dữ liệu DBMS

- Một lượng lớn thông tin hữu ích đối với chúng ta tồn tại ở dạng văn bản, vàgiá trị của dữ liệu chính là tài sản quan trọng Tuy nhiên, khả năng quản lýmột lượng lớn thông tin, nhanh chóng truy cập đến những thông tin cần thiếtcòn quan trọng hơn nữa Điều đó có nghĩa là có thông tin là chưa đủ, chúng

ta còn phải biết cách sử dụng nó sao cho thật hiệu quả Từ thực tế đó dẫnchúng ta đến một suy nghĩ là: cần phải có một hệ thống quản lý dữ liệu thậtmạnh mẽ và hiệu quả Để quản lý một lượng lớn dữ liệu phức tạp, người sửdụng phải có những công cụ - hỗ trợ tính năng đơn giản trong thao tácnhưng lại hiệu quả trong trích lọc thông tin

- Dữ liệu là các thông tin liên quan đến đối tượng (ví dụ như người, vật, sựviệc, ) được lưu trữ trên máy tính Dữ liệu được mô tả dưới nhiều dạngkhác nhau (như ký tự, ký hiệu, hình ảnh, , âm thanh )

- Cơ sở dữ liệu là tập hợp dữ liệu biểu diễn các hoạt động của một hoặc một

số tổ chức có liên quan đến nhau Ví dụ, cơ sở dữ liệu của một trường đạihọc có thể chứa thông tin về: Sinh viên, giáo viên, các môn học,…

- Hệ quản trị cơ sở dữ liệu, còn gọi là DBMS (Database Management

System) là phần mềm được thiết kế để lưu trữ và quản lý một lượng lớn dữ

liệu Sử dụng DBMS là hướng tới một cách tiếp cận mới, không phải lưu trữ

dữ liệu ở các tệp tin độc lập và viết từng ứng dụng cụ thể để quản lýchúng Bằng việc lưu trữ dữ liệu trên DBMS thay vì việc lưu trữ vào các fileriêng rẽ, chúng ta có thể sử dụng các chức năng của DBMS để quản lý dữliệu dễ dàng Với dung lượng dữ liệu khổng lồ và số lượng rất lớn nhữngngười sử dụng đồng thời, những tính năng mà DBMS hỗ trợ đã trở nên vôcùng quan trọng và không thể thiếu

- Những lợi ích của DBMS:

● Độc lập dữ liệu: Những chương trình ứng dụng nên được độc lập tối đa

có thể đối với việc biểu diễn và lưu trữ dữ liệu DBMS có thể cung cấpcác khung nhìn trừu tượng trên dữ liệu cách ly với lưu trữ vật lý của dữliệu

● Truy cập dữ liệu hiệu quả: Hàng loạt những tính năng của DBMS có

thể giúp lưu trữ và truy cập cơ sở dữ liệu hiệu quả Những tính năng nàyđặc biệt quan trọng nếu dữ liệu được lưu trữ trên các thiết bị lưu trữngoài

Trang 5

● Toàn vẹn và an toàn dữ liệu: Nếu dữ liệu luôn luôn được truy cập thông

qua DBMS, thì DBMS có thể thiết đặt các ràng buộc toàn vẹn trên dữ

liệu Ví dụ, trước khi thêm thông tin về lương của một nhân viên, DBMS

có thể kiểm tra số lương đó không vượt quá số tiền hiện có của phòng

● Quản trị dữ liệu: Khi một vài người dùng chia sẻ dữ liệu, người quản trị

hệ thống có thể đưa ra những đề xuất mang lại hiệu quả đáng kể Nhữngchuyên gia có kinh nghiệm hiểu rõ dữ liệu đang được quản lý như thế nào

và những nhóm người sử dụng nào có thể sử dụng từng phần trong cơ sở

dữ liệu, từ đó họ có thể đưa ra được cách thức tổ chức dữ liệu để giảmđược tối đa dư thừa và truy cập trở nên hiệu quả

● Truy cập đồng thời và khôi phục dữ liệu: DBMS lập lịch cho việc truy

cập đồng thời đến dữ liệu để người sử dụng có cảm giác rằng chỉ có mộtngười đang sử dụng dữ liệu trong một khoảng thời gian Thêm vào đó,DBMS bảo vệ người sử dụng tránh những ảnh hưởng khi hệ thống gặp sựcố

● Giảm thời gian phát triển ứng dụng: DBMS hỗ trợ rất nhiều các tính

năng quan trọng được sử dụng trong rất nhiều các ứng dụng truy cập tới

dữ liệu được lưu trữ trong DBMS Thông qua lược đồ mức cao level interface), những ứng dụng được phát triển nhanh chóng và dễ dànghơn vì rất nhiều những công việc đã được DBMS hỗ trợ thay vì bạn phảixây dựng trong chương trình ứng dụng

(high-2 Các mô hình cơ sở dữ liệu

- Mô hình dữ liệu là một tập các khái niệm có thể được sử dụng để mô tả

cấu trúc của một cơ sở dữ liệu cung cấp các thao tác cần thiết để đạt được

sự trừu tượng hoá Cấu trúc của một cơ sở dữ liệu bao gồm: kiểu dữ liệu,các mối quan hệ và các ràng buộc của dữ liệu

- Mô hình cơ sở dữ liệu là một loại của mô hình dữ liệu xác định cấu trúc

logic của cơ sở dữ liệu quyết định cách dữ liệu được lưu, tổ chức và cách

sử dụng

- Một số mô hình cơ sở dữ liệu:

● Mô hình quan hệ (Relational Model): Sử dụng bảng để lưu dữ liệu

và mối quan hệ giữa các bảng Mỗi bảng có nhiều cột (field) và mỗicột có một tên duy nhất Mỗi một dòng là một record

Trang 6

● Mô hình mạng (Network Model): Dữ liệu được thể hiện bằng một

tập các bản ghi(records) và mối quan hệ giữa các dữ liệu được thểhiện bằng các liên kết (links) Các kiểu thực thể kết nối với nhauthông qua mối quan hệ cha-con

● Mô hình phân cấp (Hierarchical Model): Tổ chức theo hình cây,

mỗi nút biểu diễn một thực thể dữ liệu Mỗi nút cha có thể có mộthoặc nhiều nút con nhưng mỗi nút con chỉ có một nút cha Do đó môhình dữ liệu phân cấp có thể có các kiểu quan hệ: 1-1, 1-N

Trang 7

● Mô hình hướng đối tượng (Object-oriented Data Models): Cơ sở

dữ liệu bao gồm các đối tượng: Mỗi đối tượng bao gồm các thuộctính, phương thức của đối tượng, Các đối tượng trao đổi với nhauthông qua các phương thức, Một dối tượng có thể được sinh ra từ việc

kế thừa từ đối tượng khác

Trang 8

3 Các hệ quản trị cơ sở dữ liệu quan hệ RDBMS (Relational Database Management System)

3.1 khái niệm

- RDBMS là một hệ quản trị cơ sở dữ liệu dựa trên mô hình quan hệ để

làm việc với dữ liệu, khi đó dữ liệu được lưu trữ trong các đối tượng cơ

sở dữ liệu được gọi là các bảng Với mỗi bảng, các cột tương ứng với cácthuộc tính giữ một kiểu dữ liệu khác của bản ghi Mỗi bản ghi(record)trong cơ sở dữ được định nghĩa duy nhất với các key và tương ứng vớimột hàng trong một bảng Với thuộc tính của các hàng được thể hiện nhưmột cột trong một bảng

- Các quan hệ có thể được coi như là một tập hợp có chứa một loạt các

thuộc tính mà đại diện cho cơ sở dữ liệu và thông tin được lưu trữ Khiđang định nghĩa một bảng để thêm các bản ghi thì mỗi phần tử trong mộtbản ghi phải tương ứng với kiểu dữ liệu được định nghĩa (như kiểuinteger, date, )

3.2 Đặc điểm của RDBMS

- Ưu điểm:

● Cấu trúc dạng bảng đơn giản và dễ dàng cho người sử dụng

● Cho phép người dùng sử dụng CRUD (create, read, update và delete)với các bản ghi một cách dễ dàng bởi các câu lệnh

● RDBMSs cho phép nhiều người sử dụng cùng truy cập database cùngmột lúc Người sử dụng có thể sử dụng chức năng quản lý giao dịch vàkhoá được tích hợp để truy cập dữ liệu khi nó đang được thay đổi.Điều này giúp khắc phục sự cố có thể xảy ra giữa nhiều người cùnglàm việc trên dữ liệu và ngăn ngừa người dùng truy cập hoặc sử dụng

dữ liệu đã được cập nhật một phần

● RDBMS cho phép quản trị cơ sở dữ liệu hạn chế quyền truy cập tớingười dùng được uỷ quyền và cấp đặc quyền cho người dùng cá nhândựa trên loại nhiệm vụ mà họ cần thực hiện

● Tính ACID (Atomicity, Consistency, Isolation, Durability) của mộttransaction được đảm bảo

● Tính toàn vẹn dữ liệu cao, có các ràng buộc về dữ liệu như khóachính, khóa ngoại, quan hệ một nhiều, nhiều nhiều Thích hợp với các

hệ thống cần bảo mật cao như ngân hàng, thương mại điện tử,…

● Với database ch uẩn 3, dữ liệu được đảm bảo tính đồng nhất vàtoàn vẹn (consistency)

Trang 9

- Nhược điểm

● Việc mapping giữa các bảng trong database với các object trong codekhá rắc rối và phức tạp

● Performance sẽ bị chậm khi phải join nhiều bảng để lấy dữ liệu

● Việc thay đổi cấu trúc dữ liệu (Thêm/xóa bảng hoặc thêm/xóa một field)rất mệt mỏi, kéo theo vô số thay đổi trên code)

● Không làm việc được với dữ liệu không có cấu trúc (un-structure)

● RDBMS được thiết kế để chạy trên một máy chủ Khi muốn mở rộng,

nó khó chạy trên nhiều máy (clustering)

● Vì dữ liệu mở rộng theo chiều dọc, nên khả năng lưu trữ cũng như xử lý

sẽ khó khăn và chi phí tốn kém

● Khi dữ liệu tăng lên cao, thì chi phí query cũng như độ phức tạp tăngtheo Đặc biệt là với các query về sắp xếp, so sánh,…

3.3 Một số hệ quản trị cơ sở dữ liệu quan hệ phổ biến:

SQL là một chuẩn của ANSI (American National Standards Institute Viện tiêu chuẩn quốc gia Hoa kỳ) về truy xuất các hệ thống CSDL Cáccâu lệnh SQL được sử dụng để truy xuất và cập nhật dữ liệu trong mộtCSDL Ngôn ngữ SQL được IBM sử dụng đầu tiên trong hệ quản trịCSDL System R vào giữa những năm 70, hệ ngôn ngữ SQL đầu tiên(SEQUEL2) được IBM công bố vào tháng 11 năm 1976 Năm 1989, việntiêu chuẩn quốc gia Hoa kỳ (ANSI) công nhận SQL là ngôn ngữ chuẩn đểtruy cập CSDL quan hệ trong văn bản ANSI SQL89 Năm 1989, tổ chứctiêu chuẩn quốc tế (ISO) công nhận SQL ngôn ngữ chuẩn để truy cậpCSDL quan hệ trong văn bản ISO 9075-1989 SQL được phát triển và sửdụng rộng rãi cho tới ngày nay với các hệ quản trị CSDL (RDBMS) như:SQL Server,MySQL, SQLite, Oracle,…vì những lợi ích to lớn mang lại.Trong hầu hết các ứng dụng, các lợi ích mang lại vì một số lý do sau:

- Tính ACID (Atomicity, Consistency, Isolation, Durability) của mộttransaction được đảm bảo

 Với database chuẩn 3, dữ liệu được đảm bảo tính đồng nhất và toànvẹn (consistency)

 Có rất nhiều driver cho mọi ngôn ngữ: Java, C#, PHP…

- Lập trình SQL được sử dụng để chèn, tìm kiếm, cập nhật, xóa các bản ghi

cơ sở dữ liệu Điều đó không có nghĩa là SQL không thể làm được điều

đó Trong thực tế nó có thể làm rất nhiều thứ, những không giới hạn, tối

ưu hóa và bảo trì cơ sở dữ liệu

Trang 10

- một số hệ quản trị cơ sở dữ liệu quan hệ như: MySQL, Oracle, SQLServer Ms, Sybase, sử dụng SQL.

- Sẽ có một vài HQTCSDL phổ biến được phân tích dưới đây

a Microsoft SQL Server

- SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (RelationalDatabase Management System (RDBMS) ) sử dụng câu lệnh SQL đểtrao đổi dữ liệu giữa máy Client và máy cài SQL Server

- SQL Server được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rấtlớn lên đến Tera-Byte và có thể phục vụ cùng lúc cho hàng ngàn user.SQL Server có thể kết hợp “ăn ý” với các server khác như MicrosoftInternet Information Server (IIS), E-Commerce Server, Proxy Server…

- Đặc điểm:

● SQL là ngôn ngữ tựa tiếng Anh

● SQL là ngôn ngữ phi thủ tục, nó không yêu cầu ta cách thức truynhập CSDL như thế nào Tất cả các thông báo của SQL đều rất dễ

sử dụng và ít khả năng mắc lỗi

● SQL cung cấp tập lệnh phong phú cho các công việc hỏi đáp DL:Chèn, cập nhật, xoá các hàng trong một quan hệ Tạo, sửa đổi, thêm

và xoá các đối tượng trong của CSDL Điều khiển việc truy nhập tới

cơ sở dữ liệu và các đối tượng của CSDL để đảm bảo tính bảo mậtcủa cơ sở DL Đảm bảo tính nhất quán và sự ràng buộc của CSDL

- Ưu điểm:

● SQL có thể được sử dụng đối với lượng dữ liệu lớn từ database mộtcách nhanh chóng và hiệu quả

● Câu lệnh đơn giản, ngắn gọn, dễ nhớ và dễ dàng sử dụng

● Được tối ưu hóa với những công nghệ mới nên tốc độ rất cao

● Tất cả các yêu cầu phức tạp của công việc đều có thể thực hiệnđược

● SQL database sử dụng tiêu chuẩn lâu đời, ANSI và ISO áp dụng

● Việc sử dụng SQL chuẩn giúp việc quản lý database dễ dàng

Trang 11

- MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ

liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL) Tuy nhiênMysql không bao quát toàn bộ những câu truy vấn cao cấp như SQLServer Vì vậy Mysql chỉ đáp ứng việc truy xuất đơn giản trong quátrình vận hành của website, thích hợp cho các ứng dụng có truy cậpCSDL trên internet và có thể giải quyết hầu hết các bài toán trongPHP, Perl

- một số đặc điểm của MySQL:

● MySQL là một phần mềm quản trị CSDL dạng server-based (gầntương đương với SQL Server của Microsoft)

● MySQL quản lý dữ liệu thông qua các CSDL, mỗi CSDL có thể cónhiều bảng quan hệ chứa dữ liệu

● MySQL có cơ chế phân quyền người sử dụng riêng, mỗi ngườidùng có thể được quản lý một hoặc nhiều CSDL khác nhau, mỗingười dùng có một tên truy cập và mật khẩu tương ứng để truyxuất đến CSDL

● Khi ta truy vấn tới CSDL MySQL, ta phải cung cấp tên truy cập vàmật khẩu của tài khoản có quyền sử dụng CSDL đó Nếu không,chúng ta sẽ không làm được gì cả giống như quyền chứng thựcngười dùng trong SQL Server vậy

● MySQL có thể đáp ứng khả năng xử lý những yêu cầu khắt khenhất của từng hệ thống, MySQL còn đưa ra các “công cụ” cần thiết

Trang 12

cho các hệ thống doanh nghiệp khó tính bằng tiện ích tải tốc độcao, bộ nhớ cache và các cơ chế xử lý nâng cao khác.

● Bảo mật: Có rất nhiều tính năng bảo mật, một số ở cấp cao đềuđược xây dựng trong MySQL

● Do MySQL có engine xử lý tốc độ cao và khả năng chèn dữ liệunhanh, hỗ trợ tốt cho các chức năng chuyên dùng cho web,…nênMySQL là lựa chọn tốt nhất cho các ứng dụng web và các ứngdụng web doanh nghiệp

- Nhược điểm:

● Độ tin cậy: Cách các chức năng cụ thể được xử lý với MySQL (ví dụtài liệu tham khảo, các giao dịch, kiểm toán, ) làm cho nó kém tincậy hơn so với một số hệ quản trị cơ sở dữ liệu quan hệ khác

c. SQLite

- SQLite là một bộ thư viện dùng trong lập trình để hiện thực một SQL Database Engine có khả năng tự tổ chức quản lý dữ liệu, không cần server, không cần cấu hình mà vẫn hỗ trợ đầy

đủ các tính năng quản lý giao tác SQLite hiện đang là SQL Database Engine mã nguồn mở theo mô hình dữ liệu quan

hệ đang được sử dụng nhiều nhất trên thế giới do tính cơ động cao, dễ sử dụng, gọn nhẹ, hiệu quả và tin cậy.

- Một số đặc điểm chính của SQLite:

● Đảm bảo đầy đủ 4 đặc tính ACID của các giao tác: SQLite đượcđảm bảo đầy đủ 4 tính chất cơ bản của giao tác là tính nguyên tổ(Atomic), tính nhất quán (Consistent), tính cô lập (Isolated), và tínhbền vững (Durable) thậm chí sau khi hệ thống bị crash hoặc gặpcác sự cố về nguồn điện

● Không cần cấu hình: với SQLite chúng ta sẽ không cần phải cài đặthay quản trị nó

● SQLite có gần như toàn bộ các đặc tính phổ biến của SQL theochuẩn SQL92 Tuy nhiên còn một số tính năng như RIGHTOUTER JOIN, FULL OUTER JOIN, FOR EACH STATEMENTTRIGGER,… chưa được hỗ trợ

● Toàn bộ Database được lưu trữ trong 1 tập tin trên đĩa duy nhất

● Bộ thư viện quản lý rất nhỏ, gọn: dưới 500 KB cho bản đầy đủ tínhnăng, và có thể ít hơn nếu loại bớt một số đặc tính

Trang 13

● Đơn giản và dễ sử dụng bộ API tương ứng

● Mã nguồn mở được viết bằng ANSI-C, được comment rất tốt và cóthể tái sử dụng với bất cứ mục đích gì

- Ứng dụng của SQLite:

● SQLite có thể sử dụng như định dạng tập tin thích hợp cho các ứngdụng: trước đây các tập tin cấu hình có thể được lưu dưới dạngfile ini, rồi sau đó là xml,… tuy nhiên chúng ta sẽ cần phải viếthoặc phụ thuộc vào việc sử dụng các parser phù hợp Sử dụngSQLite không những giúp chúng ta khắc phục được yếu điểm này

mà chương trình của chúng ta lại còn có thể chạy trên nhiều nềntảng khác nhau

● SQLite có thể sử dụng làm CSDL cho các thiết bị điện tử: SQLitenhỏ, sử dụng bộ nhớ, không gian lưu trữ và băng thông đĩa hiệuquả, tin cậy mà không cần phải quản trị bởi các quản trị viênchuyên nghiệp Nếu bạn đang viết ứng dụng trên các thiết bị chạyiOS như iPhone, iPad,… hay các thiết bị chạy Android hoặcWindows Mobile,… thì SQLite chính là CSDL phù hợp cho cácthiết bị di động này

- Một số hạn chế của SQLite:

● Tính đồng thời: SQLite sử dụng cơ chế khóa coarse-gained locking

có thể hỗ trợ nhiều người đọc dữ liệu, nhưng chỉ có 1 người có thểghi dữ liệu một lúc mà thôi

● SQLite không có tính năng quản lý người dùng

● Nối kết mạng: mặc dù SQLite có thể được chia sẻ thông qua cácnetwork file systems, tuy nhiên độ trễ giữa các hệ thống tập tin này

sẽ ảnh hưởng nghiêm trọng tới hiệu suất thực hiện của SQLite

● Phù hợp với các ứng dụng có qui mô dữ liệu nhỏ: trong thời đạibùng nổ thông tin như hiện nay, SQLite không phải là lựa chọn lýtưởng để đáp ứng các nhu cầu xử lý trên 1 khối lượng dữ liệu lớn,phát sinh liên tục

d PostgreSQL

- PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở tiên tiến

mà mục đích chính là tuân thủ theo chuẩn và khả năng mở rông.PostgreSQL hay còn gọi là Postgree áp dụng chuẩn SQL ANSI/IOScùng với các phiên bản

- So với các hệ quản trị cơ sử dữ liệu quan hệ khác, PostgreSQL khá

khác Nó hỗ trợ hướng đối tượng mạnh mẽ và chức năng cơ sở dữ liệu

Trang 14

quan hệ Ví dụ như hỗ trợ hoàn toàn cho các giao dịch đáng tin cậynhư là Atomicity, Consistency, Isolation, Durability (ACID).

- Do có nền tảng công nghệ mạnh mẽ, Postgres có hoàn toàn có khả

năng xử lý nhiều tiến trình rất hiệu quả Sự hỗ trợ đồng thời đạt được

mà không cần đọc các khóa nhờ vào sự thực hiện của MultiversionConcurrency Control (MVCC), mà nó cũng đảm bảo việc tuân thủ theoACID

- Ưu điểm của PostgreSQL:

● Là một chuẩn SQL phù hợp với hệ quản trị cơ sở dữ liệu quanhệ: PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn

● Sự mở rộng: Nó có thể mở rộng lập trình PostgreSQL với cácthủ tục lưu trữ, giống như một RDBMS tiên tiến

● Đối tượng hóa: PostgreSQL không chỉ là một hệ quản trị cơ sở

dữ liệu quan hệ, mà nó còn đối tượng hóa dữ liệu

- Nhược điểm của PostgreSQL:

● Hiệu suất: Đối với các toán tử đơn giản thì PostgreSQL thựchiện kém hiệu quả hơn so với các hệ quản trị cơ sở dữ liệu quan

hệ khác như MySQL Nhưng đối với toán tử phức tạp thìPostgreSQL thực hiện tốt hơn rất nhiều

● Sự phổ biến: Do chưa có sự phổ biến nên ảnh hưởng đến ngườidùng nhận được sự hỗ trợ kịp thời

● Hosting: Do các yếu tố được đề cập bên trên nên nó khó được hỗtrợ bởi các host

e Bảng so sánh

- Dưới đây là bảng so sánh các đặc điểm chính của các hệ quản trị cơ sở

dữ liệu đã được mô tả phía trên:

SQL Server MySQL SQLite PostgreSQL

Trang 15

transactions yes yes yes yes

Referential integrity yes yes yes yes

Fine-grained locking yes yes no yes

max DB size 524,272 TB

(32 767 files *

16 TB max file size)

unlimited 128 TB

(231 pages

* 64 KB max page size)

Limited

by filesize

32 TB

max CHAR size 2 GB 64 KB (text) 2 GB 1 GB

max NUMBER size 126 bits 64 bits 64 bits unlimitedmax DATE value 9999 9999 No DATE

type 5,874,897

R-/R+ tree Spatial Indexes Spatial Indexes yes yes

Trang 16

Procedure yes yes no yes

4 Ví dụ về SQL

- Đối với CSDL quan hệ, điểm mạnh lớn nhất đó là hỗ trợ transaction (NoSQL không hỗ trợ điều này) Đối với các hệ thống như: Ngân hàng, buôn bán, quản lý kho, Các hệ thống này cần bảo mật cao, cũng như thông tin cần chặt chẽ, nhất quán thì CSDL quan hệ là một sự lựa chọn phù hợp

- Hãy xem xét một hệ thống theo dõi hàng hóa của một nhà kho Ta cần phải ghi lại những điều sau:

● Các sản phẩm được đưa đến kho và được đặt ở địa điểm hay khoang nào

● Sự dịch chuyển của các hàng hóa trong kho VD: sắp xếp kho để các sản phẩm cùng loại được đặt cùng một vị trí

● Các đơn đặt hàng và việc di chuyển các hàng hóa khỏi nhà kho cho việc giao hàng

- Giả sử có một giao dịch vận chuyển sản phẩm P từ khoang A sang

khoang B với số lượng là 5 Sẽ có 2 hành động được thực hiện:

● Khoang A trừ số lượng sản phẩm P là 5

● Khoang B thêm số lượng sản phẩm P là 5

- Như vậy, sau khi kết thúc giao dịch, hai hành động cập nhật ở khoang A

và khoang B đều thành công nếu giao dịch thành công, hoặc sẽ không có hành động nào thực hiện nếu có lỗi xảy ra để đảm bảo tính nhất quán và phù hợp với giao dịch

Trang 17

Phần II: Các hệ quản trị cơ sở dữ liệu phi

- Với NoSQL bạn có thể mở rộng dữ liệu mà không lo tới những việc nhưtạo khóa ngoại, khóa chính, kiểm tra ràng buộc v.v

- NoSQL bỏ qua tính toàn vẹn của dữ liệu và transaction để đổi lấy hiệusuất nhanh và khả năng mở rộng

- Cơ sở dữ liệu NoSQL làm việc như thế nào? Thay vì các bảng, cơ sở dữliệu NoSQL có định hướng tài liệu Bằng cách này, dữ liệu không cócấu trúc (chẳng hạn như bài báo, ảnh, dữ liệu truyền thông xã hội, videohoặc nội dung trong một bài đăng blog) có thể được lưu trữ trong mộttài liệu đơn giản có thể tìm thấy nhưng không nhất thiết phải được phânloại vào các trường như cơ sở dữ liệu quan hệ Nó trực quan hơn, nhưnglưu ý rằng lưu trữ dữ liệu với số lượng lớn như thế này đòi hỏi nỗ lực xử

lý thêm và lưu trữ nhiều hơn là dữ liệu SQL có tổ chức cao Đó là lý dotại sao Hadoop, một nền tảng máy tính mã nguồn mở và phân tích dữliệu có khả năng xử lý dữ liệu khổng lồ trong đám mây, rất phổ biếncùng với các ngăn xếp cơ sở dữ liệu NoSQL

- Cơ sở dữ liệu NoSQL cung cấp một lợi thế lớn, đặc biệt cho các nhàphát triển ứng dụng: dễ truy cập Các cơ sở dữ liệu quan hệ có quan hệđầy đủ với các ứng dụng được viết bằng các ngôn ngữ lập trình hướngđối tượng như Java, PHP và Python Cơ sở dữ liệu NoSQL thường cóthể chệch hướng vấn đề này thông qua các API, cho phép các nhà pháttriển thực hiện các truy vấn mà không cần phải học SQL hay hiểu kiến trúc cơ sở của hệ thống cơ sở dữ liệu của họ

Trang 18

b Các đặc điểm của NoSQL

- High Scalability: Gần như không có một giới hạn cho dữ liệu và người

dùng trên hệ thống

- High Availability: Do chấp nhận sự trùng lặp trong lưu trữ nên nếu một

node (commodity machine) nào đó bị chết cũng không ảnh hưởng tớitoàn bộ hệ thống

- Atomicity: Độc lập data state trong các operation.

- Consistency: chấp nhận tính nhất quán yếu, có thể không thấy ngay

được sự thay đổi mặc dù đã cập nhật dữ liệu

- 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

- Deployment Flexibility: việc bổ sung thêm/loại bỏ các node, hệ thống

sẽ tự động nhận biết để lưu trữ mà không cần phải can thiệp bằng tay

Hệ thống cũng không đòi hỏi cấu hình phần cứng mạnh, đồng nhất

- Modeling flexibility: Key-Value pairs, Hierarchical data (dữ liệu cấu

trúc), Graphs

- Query Flexibility: Multi-Gets, Range queries (load một tập giá trị dựa

vào một dãy các khóa)

- Một số khái niệm trong NoSQL:

● Fields – tương đương với khái niệm Columns trong SQL.

● Document – thay thế khái niệm row trong SQL Đây cũng chính là

khái niệm làm nên sự khác biệt giữa NoSQL và SQL, 1 document chứa

số cột (fields) không cố định trong khi 1 row thì số cột(columns) làđịnh sẵn trước

● Collection – tương đương với khái niệm table trong SQL Một

collection là tập hợp các document Điều đặc biệt là một collection cóthể chứa các document hoàn toàn khác nhau

● Key-value – cặp từ khóa – giá trị được dùng để lưu trữ dữ liệu trong

NoSQL

● Cursor – tạm dịch là con trỏ Chúng ta sẽ sử dụng cursor để lấy dữ liệu

từ database

- Ưu điểm của NoSQL:

● Open source: hầu hết các sản phẩm nguồn mở đưa ra cho những ngườiphát triển với nhiều lợi ích to lớn, đặc biết là việc sử dụng miễn phí

● Khả năng mở rộng linh hoạt: do không bị ràng buộc chặt về các mốiquan hệ, cấu trúc lưu trữ nên khả năng mở rộng của NoSQL rất linhđộng

Trang 19

● Các CSDL NoSQL khác nhau cho những dự án khác nhau: mỗi loạiCSDL NoSQL cụ thể sẽ là giải pháp phục vụ cho một hoặc một vài vấn

- Nhược điểm của NoSQL:

● Hỗ trợ không đồng đều cho các doanh nghiệp: trong khi các nhà cungcấp chủ chốt của các RDBMS như SQL Server, Oracle, IBM,… thườngđưa ra sự hỗ trợ tốt cho khách hàng thì các nhà cung cấp nguồn mở mớithành lập không thể được mong đợi sẽ cung cấp hỗ tốt hơn

● Vấn đề lớn của NoSQL là thiếu về độ chín muồi và các vấn đề về tínhkhông ổn định, trong khi đó tính chín muồi, hỗ trợ đầy đủ chức năng vàtính ổn định của các RDBMS được thiết lập đã từ lâu

● tính mới mẻ của NoSQL có nghĩa là không có nhiều lập trình viên vàngười quản trị biết công nghệ này Như vậy sẽ rất khó khăn cho cáccông ty tìm người có hiểu biết phù hợp

● mỗi CSDL NoSQL có các giao diện lập trình ứng dụng API riêng, cácgiao diện truy vấn riêng… Sự thiếu hụt các tiêu chuẩn sẽ gây ra rấtnhiều khó khăn khi chuyển từ một nhà cung cấp này sang một nhà cungcấp khác nếu có nhu cầu

2 Phân loại NoSQL

- Có bốn loại chung (loại phổ biến nhất) của cơ sở dữ liệu NoSQL Mỗi loạiđều có các thuộc tính và giới hạn riêng Không có một giải pháp duy nhấtnào tốt hơn tất cả các giải pháp khác, tuy nhiên có một số cơ sở dữ liệu tốthơn để giải quyết các vấn đề cụ thể

a Key-value stores

- Key-value stores là kiểu lưu trữ đơn giản nhất trong các loại CSDL NoSQLđồng thời nó cũng là kiểu lưu trữ cho tất cả các HQTCSDL NoSQL Thôngthường, các HQT CSDL Key-value lưu trữ dữ liệu dưới dạng key (là mộtchuỗi duy nhất) liên kết với value có thể ở dạng chuỗi văn bản đơn giảnhoặc các tập, danh sách dữ liệu phức tạp hơn Quá trình tìm kiếm dữ liệuthường sẽ được thực hiện thông qua key, điều này dẫn đến sự hạn chế về độchính xác

Trang 20

- Với kiểu lưu trữ này, ta sẽ rất dễ dàng và nhanh chóng truy xuất được thôngtin của một người thông qua key, nhưng không hề đơn giản trong việc xử lýnhững dữ liệu phức tạp.

- Như vậy, với sự đơn giản của cách lưu trữ dạng Key-value làm cho cácCSDL loại này rất phù hợp với các ứng dụng cần truy xuất nhanh và khảnăng mở rộng cao, chẳng hạn như là các quản lý các phiên giao dịch(session) hoặc quản lý các thông tin về giỏ hàng vì trong trường hợp này,việc biết được ID của phiên giao dịch hoặc ID của khách hàng là điều rất cầnthiết Hay việc quản lý thông tin của sản phẩm bao gồm những thông tin cơbản, các sản phẩm liên quan, đánh giá,… sẽ được lưu trữ dưới dạng key là

mã sản phẩm chẳng hạn và value là các thông tin còn lại của sản phẩm cầnlưu trữ Điều này, cho phép ta truy xuất được tất cả các thông tin về một sảnphẩm chỉ thông qua mã sản phẩm cực kỳ nhanh

- Ưu điểm:

● Flexible data modeling: Vì mô hình dữ liệu rất linh hoạt và khôngtuân theo bất kỳ cấu trúc dữ liệu nào, nên nó có thể cung cấp một môhình dữ liệu để phù hợp với các yêu cầu của ứng dụng Có thể mởrộng theo chiều ngang

● Các keys được dùng để truy xuất thẳng tới các giá trị tìm kiếm, màkhông cần thông qua quá trình index (quá trình tìm kiếm dữ liệu vàđánh giá độ chính xác của dữ liệu đó của hệ thống CSDL), giúp quátrình tìm kiếm diễn ra nhanh chóng

● High performance: key-value database không cần thực hiện các phéptoán như: join, union, lock,… Do đó, hiệu năng sẽ tốt hơn so với cơ sở

dữ liệu quan hệ

Trang 21

● Có thể sử dụng key-value database với các máy chủ phân tán Do đó

dữ liệu có thể được phân tán qua các máy chủ để tránh mất dữ liệu tại

● Bởi vì quá trình tìm kiếm thông qua key, điều này dẫn đến sự hạn chế

về độ chính xác

- Một vài cơ sở dữ liệu key-value phổ biến là Riak, Redis(thường dùng phíaserver), memcached, Berkeley DB, HamsterDB, Amazon DynamoDB(mãnguồn đóng), Project Voldemort và Couchbase

b Document Oriented database

- CSDL Document được thiết kế để quản lý và lưu trữ dữ liệu ở dạngdocument Những document này được mã hóa về các dạng chuẩn như làXML, JSON (Javascript Option Notation) hay BSON (Binary JSON)

- Khác với các kiểu lưu trữ dạng Key-value, giá trị của cột trong các CSDLdocument chứa dữ liệu bán cấu trúc (Semi-Structured Data), đặc biệt làcặp thuộc tính name (key) – value Một điểm khác nữa so với các kiểu lưutrữ dữ liệu dạng Key-value đơn giản là cả key và value đều có thể tìmkiếm trong CSDL Document

Trang 22

- CSDL Document phù hợp cho việc lưu trữ và quản lý tập dữ liệu có kíchthước lớn như là tài liệu văn bản, tin nhắn, cũng như biểu diễn một thựcthể CSDL như là Product hay Customer (tài liệu khái niệm trong XML).

● Không đảm bảo tính toàn vẹn của dữ liệu

● Không đảm bảo được tính ACID

● Không phù hợp cho các dữ liệu kết nối với nhau

● Query model limited to keys

- Một số cơ sở dữ liệu Document phổ biến mà chúng ta hay gặp là:

MongoDB, CouchDB, Terastore, OrientDB, RavenDB

c Column-oriented databases (column-family)

- Column Family được biết đến rộng rãi nhất qua sự triển khai BigTable củaGoogle Nhìn bề ngoài, chúng khá giống với CSDL quan hệ nhưng thực tế

là hoàn toàn khác Một số sự khác biệt dễ thấy nhất là việc lưu trữ dữ liệutheo dòng đối với các HQT CSDL quan hệ với việc lưu trư dữ liệu theo cộtcủa các HQT CSDL Conlumn Family Và các tư tưởng của cả hai loạiCSDL này cũng hoàn toàn khác nhau Chúng ta không thể áp dụng cùng

Ngày đăng: 26/03/2019, 15:55

w