1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÁO CÁO HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGODB

47 101 0

Đ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 47
Dung lượng 1,63 MB

Nội dung

Tổng quan về hệ thống phân tán Hệ phân tán là tập hợp các máy tính được kết nối với nhau bởi một mạngmáy tính và được cài đặt phần mềm hệ phân tán.Hệ phân tán là một hệ thống cóchức năng

Trang 1

ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO

ĐỒ ÁN CƠ SỞ 4

ĐỀ TÀI: TÌM HIỂU HỆ THỐNG PHÂN TÁN SỬ DỤNG HỆ

QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGODB

Sinh viên thực hiện: LÊ TRÍ NHÂN 17IT2

PHAN XUÂN VŨ 17IT2 Giáo viên hướng dẫn: NGUYỄN ANH TUẤN

Đà Nẵng, tháng 1 năm 2020

Trang 2

ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO

ĐỒ ÁN CƠ SỞ 4

ĐỀ TÀI: TÌM HIỂU HỆ THỐNG PHÂN TÁN SỬ DỤNG

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGOD

Sinh viên thực hiện: LÊ TRÍ NHÂN 17IT2

PHAN XUÂN VŨ 17IT2 Giáo viên hướng dẫn: NGUYỄN ANH TUẤN

Đà Nẵng, tháng 1 năm 2020

Trang 3

MỞ ĐẦU

Mô hình Client/Server, mô hình n lớp (n-tier), là những thuật ngữ màchúng ta thường được nghe nói đến khi xây dựng một ứng dụng mạng Mỗi môhình có những đặc điểm khác nhau với những thuận lợi và khó khăn riêng Làngười phát triển ứng dụng thì bạn cần phải dựa vào đặc điểm của từng mô hình

để đưa ra quyết định đỳng đắn trong việc chọn mô hình phù hợp cho ứng dụng.Ứng dụng sẽ hoạt động hiệu quả, dễ nâng cấp, bảo trì nếu được lựa chọn môhình phù hợp, ngược lại, ứng dụng sẽ hoạt động kém hiệu quả và khó nâng cấp,bảo trì nếu mô hình ứng dụng không phù hợp Do vậy việc lựa chọn mô hìnhphù hợp cho ứng dụng rất quan trọng

Trong chương này chúng ta sẽ được giới thiệu khái quá về các mô hìnhứng dụng Các đặc điểm chính của từng mô hình, ưu nhược điểm của từng môhình và cuối cùng là một vài lời khuyên khi lựa chọn mô hình phù hợp cho ứngdụng

Trang 4

LỜI CẢM ƠN

Nhóm chúng em xin chân thành cảm ơn thầy Nguyễn Anh Tuấn đã hỗ trợ

và cho chúng em những trải nghiệm và cung cấp cho nhóm em những tài liệu,kiến thức giúp chúng em hoàn thành tốt bài tập này

Mặc dù đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phépnhưng chắc chắn sẽ không tránh khỏi những thiếu sót Chúng em kính mongnhận được sự cảm thông và tận tình chỉ bảo của thầy

Em xin chân thành cảm ơn!

Trang 5

NHẬN XÉT

(Của giảng viên hướng dẫn)

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 6

MỤC LỤC

CHƯƠNG 1: GIỚI THIỆU HỆ THỐNG PHÂN TÁN

1.1 Tổng quan về hệ thống phân tán

1.2 Tại sao phải phát triển phần mềm phân tán

1.3 Khó khăn trong việc phát triển các phần mềm phân tán

CHƯƠNG 2: NGHIÊN CỨU TỔNG QUAN

2.1 Một số hệ phân tán thường dùng

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

3.1 Thiết kế lược đồ

3.2 Chỉ mục

3.3 Sao chép

3.4 Truy vấn

CHƯƠNG 4 XÂY DỰNG HỆ THỐNG PHÂN TÁN

4.1 Kiến trúc cụm:

4.2 Cấu hình tập tin máy chủ

4 Cấu hình bộ định tuyến truy vấn

4.4 Thêm Shards vào cụm

4.5 Cấu hình Sharding

KẾT LUẬN

Trang 7

DANH MỤC HÌNH

Hình 3.1 Minh họa bộ sưu tập 19

Hình 3.2 Mô hình Master – Slave hai nút 27

Hình 3.3 Mô hình Master – Slave bốn nút 27

Hình 3.4 Mô hình ReplicaSets hai nút 28

Hình 3.5 Replica Sets – Bầu chọn master mới 28

Hình 3.6 Server chính trở thành server cấp 2 28

Hình 4.2 File cấu hình máy chủ mongodb 33

Hình 4.3 Cấu hình replication cho các máy chủ 34

Hình 4.4 Cấu hình mongodb cho các máy chủ 35

Hình 4.5 Khởi tạo bộ bản sao 36

Hình 4.6 Cấu hình file mongodb.conf của máy chủ router 37

Hình 4.7 Tạo file mongos.service 38

Hình 4.8 Xác nhận mongos đang chạy 39

Hình 4.9 Thêm các shard vào cụm 40

Hình 4.10 Chia sẻ dữ liệu cho các máy shard 41

Trang 8

CHƯƠNG 1: GIỚI THIỆU HỆ THỐNG PHÂN TÁN

1.1 Tổng quan về hệ thống phân tán

Hệ phân tán là tập hợp các máy tính được kết nối với nhau bởi một mạngmáy tính và được cài đặt phần mềm hệ phân tán.Hệ phân tán là một hệ thống cóchức năng và dữ liệu phân tán trên các trạm (máy tính) được kết nối với nhaubởi một mạng máy tính.Hệ phân tán là một tập hợp các máy tính độc lập giaotiếp với người dùng như một hệ thống nhất toàn vẹn

Như vậy, có thể nói hệ phân tán bao gồm mạng máy tính và phần mềmphân tán

1.2 Tại sao phải phát triển phần mềm phân tán

Nguyên nhân đầu tiên thúc đẩy phần mềm phân tán hình thành là do:Người dùng phân tán (địa lý) Dữ liệu phân tán (địa lý)

Sau đó người ta nhận thấy cách phát triển phần mềm phân tán đạt đượccác hiệu quả như là:

Tính mở, khả chuyển và co dãn

Khả năng thay đổi phạm vi linh hoạt (quy mô)

Tính sẵn dùng đạt được cao, ngay cả khi một phần hệ thống bị lỗi

Đặc biệt sự phát triển không ngừng của các thiết bị di động và siêu diđộng đã tạo ra các mạng kết nối vô cùng lớn với khả năng xử lý gấp bội, cầnphải tận dụng để thực hiện tính toán

Vì vậy các phần mềm phân tán được phát triển do:

1.2.1 Nhu cầu ứng dụng:

Tích hợp các ứng dụng riêng rẽ đang có: Các phần mềm có sẵn, gắn chặtvới thói quen của nhân viên và văn hóa kinh doanh của doanh nghiệp Nhữngphần mềm này không dễ dàng có thể bị thay thế bởi phần mềm mới (phần mềm

Trang 9

mới chưa chắc đã đảm bảo chất lượng giao dịch) Do đó xây dựng hệ thống mớiphải dựa trên cở sở tích hợp các ứng dụng riêng rẽ đã có.

Tích hợp các nguồn tài nguyên đang có:

Lưới tính toán: Các lưới tính toán hiện có thì đều có khả năng tích hợpvào hệ thống mà không cần phải xây dựng hoàn toàn lại từ đầu Nó tốn kém và

vi phạm các chính sách an ninh

Quản lý dữ liệu: Các thành phần quản lý dữ liệu được tuân theo các quyđịnh an ninh có sẵn Không dễ chia sẻ và thay thế hoàn hảo bằng một thànhphần quản lý dữ liệu mới

Đưa tin học và các lĩnh vực ứng dụng mới

Tích hợp các đối tượng trong cuộc sống thực: Các ứng dụng mới yêu cầucác khả năng kĩ thuật cao, trong đó tính toán phân tán là bắt buộc và phần mềmphân tán là cái cần triển khai

1.2.2 Khả năng kĩ thuật:

Chi phí và hiệu năng của máy tính và truyền thông: Ngày nay các máytính đã đạt sức mạnh đủ lớn mà mạng truyền thông (Internet và mạng viễnthông) đạt được khả năng truyền tải vô cùng lớn Việc thiết kế các phần mềmphân tán là có thể về mặt kĩ thuật Ngoài ra các lợi ích có thể có từ phần mềmphân tán là đáng để đánh đổi với việc khai thác mạng máy tính và các phươngtiện truyền thông Do đó khả năng kĩ thuật phát triển phần mềm phân tán là có,với chi phí chấp nhận được

1.3 Khó khăn trong việc phát triển các phần mềm phân tán

Phần mềm phân tán có đặc điểm:

Nhiều thành phần tham gia với phần cứng, phần mềm không hoàn toàngiống nhau, từ đó có cách giao tiếp khác nhau

Trang 10

Chịu ảnh hưởng của đường truyền mạng (băng thông, tỉ lệ lỗi truyền, tínhsẵn dùng trong giờ cao điểm), do đó các lệnh truyền dữ liệu chưa chắc đãcommit thành công.Ràng buộc về thứ tự sự kiện (các kiểu đồng bộ khác nhau)

Ràng buộc về topology truyền thông (trao đổi thông điệp) của ứng dụng

Do vậy phát triển phần mềm phân tán phức tạp và khó khăn hơn các phần mềmthông thường

Phần mềm phân tán cũng có vòng đời phát triển, bao gồm cả phần lập kếhoạch, triển khai, kết thúc Do đó phát triển phần mềm phân tán cũng gặp phảirất nhiều thách thức:

Quản lý quy trình phát triển: Không lường trước được các thách thức cả

về mặt con người và các tính năng mà phần mềm phân tán cần có

Khi khai thác phần mềm: Khó quản lý người dùng phân tán và dữ liệuphân tán, việc phát triển phần mềm chỉ có thể control được phần xử lý dữ liệuthôi

Cụ thể hơn, trong quy trình phát triển phần mềm phân tán, các câu hỏi sauthường không có một câu trả lời toàn vẹn và đầy đủ, từ đó dẫn tới việc dự tínhsai chi phí, nguồn lực, thời gian Từ đó dẫn tới việc phát triển phần mềm phântán thất bại, gia tăng chi phí và thời gian phát triển:

Các thành phần có khả năng tương tác với nhau hay không, nếu có thì ởmức độ nào, và ảnh hưởng thế nào tới kiến trúc chung của phần mềm phân tán

Việc che dấu người dùng về sự phân tán thực hiện ở mức nào, một phầnhay toàn bộ? Từ đó ảnh hưởng thế nào tới kiến trúc phần mềm và các kĩ thuậtliên quan

Nếu một thành phần của hệ thống hỏng thì có làm cả hệ thống hỏngkhông? Nếu muốn hệ thống có độ chịu lỗi cao thì phải thực hiện những gì?

Trang 11

Hệ thống có khả năng hoạt động hiệu quả khi số lượng người dùng tanglên hay không? Hiệu năng chung khi bổ sung thêm tài nguyên là như thế nào?

Các thành phần có khả năng đồng thời truy cập tài nguyên và chia sẻ tàinguyên với nhau hay không?

Hệ thống có thể sẵn dùng và dễ dàng thêm thành phần mới vào không?

Hệ thống bảo mật thế nào, ứng xử thế nào với các truy cập không phép vàcác hành động phá hoại khác?

Công nghệ thông tin và viễn thông ngày càng phát triển, đòi hỏi nhu cầu

về xử lý thông tin ngày càng cao, nhanh hơn nhiều lần tốc độ phát triển của tàinguyên phần cứng và phần mềm Có nhiều vấn đề đặt ra mà các hệ thống tậptrung thông thường không đáp ứng được, do tốc độ xử lý còn hạn chế Xâydựng một hệ thống phân tán có khả năng xử lý đồng thời một bài toán trênnhiều máy tính là một hướng giải quyết khả thi và đã được chứng minh tính hữudụng Hệ thống phân tán còn tạo nhiều thuận lợi trong việc chia sẻ thông tin trêntoàn thế giới

Có nhiều dạng hệ thống phân tán khác nhau và nhiều khó khăn để thiết

kế Mục đích chính của hệ thống phân tán là kết nối người sử dụng và tàinguyên một cách trong suốt, mở, và có thể nới rộng được Một cách lý tưởng thì

hệ thống này có khả năng chịu lỗi tốt hơn và mạnh hơn nhiều hệ thống tổ hợpmáy tính độc lập khác

Ngày nay, các Web Service trở thành những giao thức chuẩn của các hệthống phân tán

Trang 12

CHƯƠNG 2: NGHIÊN CỨU TỔNG QUAN

Ưu Điểm: Giá thành của hệ thống nhỏ hơn so với các hệ thống severtương ứng khác Sự linh hoạt của cấu hình, số lượng các nút, dung lượng bộ nhớtrên mỗi nút, số lượng bộ xử lý trên mỗi nút, và cấu hình mạng và hàng loạt cáctham số khác đều mang tính tùy biến cao

Trang 13

hệ thống có bộ nhớ phân tán SAN lại hỗ trợ bộ nhớ phân tán chia sẻ cho phép

tổ chức một bộ nhớ logic chia sẻ trong bộ nhớ vật lý phân tán trên các nút

Các thành phần phần mềm:

Thư viện và môi trường lập trình: o Lập trình song song trong các hệthống tính toán bó là phức tạp hơn các hệ thống máy tính khác o Hệ thống tínhtoán có bộ nhớ phân tán, do vậy truyền thông giữa các nút trong quá trình tínhtoán thường là truyền thông điệp o Các thư viện truyền thông điệp dành cho hệthống bó hiện nay có thể là: MPI, PVM…

Các phần mền quản lý tài nguyên và phân tải: o Thư viện và các ngônngữ lập trình song son tạo cho người lập trình môi trường lập trình Phần mềmquản lý tài nguyên và phân tải lại tạo ra một môi trường tính toán hiệu quả và ổnđịnh o Phân tải là việc phân bổ các tiến trình tính toán trên tài nguyên hệ thốngsao cho hiệu năng hoạt động của hệ thống là tối ưu

2.2 NoSQL là gì?

2.2.1 Thuật ngữ

NoSQL có nghĩa là Non-Relational (NoRel) - không ràng buộc Tuynhiên, thuật ngữ đó ít phổ dụng hơn và ngày nay người ta thường dịch NoSQL

thành Not Only SQL - Không chỉ là SQL

Đây là thuật ngữ chung cho các hệ CSDL không sử dụng mô hình dữ liệuquan hệ NoSQL đặc biệt nhấn mạnh đến mô hình lưu trữ cặp giá trị - khóa và

hệ thống lưu trữ phân tán

2.2.2 Lịch sử

Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụng làm têngọi chung cho các lightweight open source relational database (cơ sở dữ liệuquan hệ nguồn mở nhỏ) nhưng không sử dụng SQL 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ậtngữ NoSQL khi Johan Oskarsson của Last.fm muốn tổ chức một hội thảo về cơ

Trang 14

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ủathế hệ CSDL mới: phân tán (distributed) + không ràng buộc (non-relational).

NoSQL storage đặc biệt phổ dụng trong thời kỳ Web 2.0 bùng nổ, nơi cácmạng dịch vụ dữ liệu cộng đồng cho phép người dùng tạo hàng tỷ nội dung trênweb Do đó, dữ liệu lớn rất nhanh vượt qua giới hạn phần cứng cần phải giảiquyết bằng bài toán phân tán

Ghi chú: Một mệnh đề khá thú vị về non-relational data store: "select fun, profit from real_world where relational=false;".

2.2.3 Tốt hơn SQL

Các hệ CSDL quan hệ (RDBM) hiện tại bộc lộ những yếu kém trongnhững tác vụ như đánh chỉ mục một lượng lớn dữ liệu, phân trang, hoặc phânphối luồng dữ liệu media (phim, ảnh, nhạc, ) CSDL quan hệ được thiết kế chonhững mô hình dữ liệu không quá lớn trong khi các dịch vụ mạng xã hội lại cómột lượng dữ liệu cực lớn và cập nhật liên tục do số lượng người dùng quánhiều

Thế hệ CSDL mới - NoSQL - giảm thiểu tối đa các phép tính toán, tác vụđọc-ghi liên quan kết hợp với xử lý theo lô (batch processing) đảm bảo đượcyêu cầu xử lý dữ liệu của các dịch vụ mạng xã hội Hệ CSDL này có thể lưu trữ,

xử lý từ lượng rất nhỏ đến hàng petabytes dữ liệu với khả năng chịu tải, chịu lỗicao nhưng chỉ đòi hỏi về tài nguyên phần cứng thấp

NoSQL thiết kế đơn giản, nhẹ, gọn hơn so với RDBMs Ngoài memorycached, dữ liệu nhỏ,… các NoSQL dạng này đặc biệt thích hợp cho thiết bị cầmnơ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 Khikhối lượng dữ liệu cần lưu trữ và lượng vào/ra cực lớn, RDBM đòi hỏi khắt khe

và cao về phần cứng, chi phí thiết lập, vận hành đắt thì các mô hình lưu trữ phântán trong NoSQL trở nên vượt trội Thiết kế đặc biệt tối ưu về hiệu suất, tác vụđọc - ghi, ít đòi hỏi về phần cứng mạnh và đồng nhất, dễ dàng thêm bớt cácnode không ảnh hưởng tới toàn hệ thống …

Trang 15

Các mô hình dữ liệu đặc thù của NoSQL cũng cấp API tự nhiên hơn sovới việc dùng RDBM.

Những ràng buộc về giấy phép sử dụng cùng với một khoản phí khôngnhỏ cũng là ưu thế Chấp nhận NoSQL đồng nghĩa với việc bạn tham gia vàothế giới nguồn mở nơi mà bạn có khả năng tùy biến mạnh mẽ các sản phẩm, thưviện theo đúng mục đích của mình

Bảng dưới đây đưa ra một số so sánh giữa RDBM và NoSQL

Hiệu suất

đọc-ghi

Kém do thiết kế để đảmbảo sự vào/ra liên tục của dữliệu

Tốt với mô hình xử lý lô

và những tối ưu về đọc-ghi dữliệu

Thay đổi số

node trong hệ thống

Phải shutdown cả hệthống

Việc thay đổi số node phứctạp

Không cần phải shutdown

2.2.4 Một số thuật ngữ liên quan.

Non-relational: relational - ràng buộc - thuật ngữ sử dụng đến các mối

quan hệ giữa các bảng trong cơ sở dữ liệu quan hệ (RDBMs) sử dụng mô hình

Trang 16

khóa gồm 2 loại khóa: khóa chính và khóa phụ (primary key + foreign key) đểràng buộc dữ liệu nhằm thể hiện tính nhất quán dữ liệu từ các bảng khác nhau.Non-relational là khái niệm không sử dụng các ràng buộc dữ liệu cho nhất quán

dữ liệu ở NoSQL database

Distributed storage: mô hình lưu trữ phân tán các file hoặc dữ liệu ra

nhiều máy tính khác nhau trong mạng LAN hoặc Internet dưới sự kiểm soátcủa phần mềm Eventual consistency (nhất quán cuối): tính nhất quán của dữliệu không cần phải đảm bảo ngay tức khắc sau mỗi phép write Một hệ thốngphân tán chấp nhận những ảnh hưởng theo phương thức lan truyền và sau mộtkhoảng thời gian (không phải ngay tức khắc), thay đổi sẽ đi đến mọi điểm trong

hệ thống, tức là cuối cùng (eventually) dữ liệu trên hệ thống sẽ trở lại trạng tháinhất quán

Vertical scalable (khả năng mở rộng chiều dọc): Khi dữ liệu lớn về

lượng, phương pháp tăng cường khả năng lưu trữ và xử lý bằng việc cải tiếnphần mềm và cải thiện phần cứng trên một máy tính đơn lẻ được gọi là khảnăng mở rộng chiều dọc Ví dụ việc tăng cường CPUs, cải thiện đĩa cứng, bộnhớ trong một máy tính, cho DBMs nằm trong phạm trù này Khả năng mởrộng chiều dọc còn có một thuật ngữ khác scale up

Horizontal scalable (khả năng mở rộng chiều ngang): Khi dữ liệu lớn về

lượng, phương pháp tăng cường khả năng lưu trữ và xử lý là dùng nhiều máytính phân tán Phân tán dữ liệu được hỗ trợ bởi phần mềm tức cơ sở dữ liệu

Trong khi giá thành phần cứng ngày càng giảm, tốc độ xử lý, bộ nhớngày càng tăng thì horizontal scalable là một lựa chọn đúng đắn Hàng trămmáy tính nhỏ được chập lại tạo thành một hệ thống tính toán mạnh hơn nhiều sovới vi xử lý RISC truyền thống đơn lẻ Mô hình này tiếp tục được hỗ trợ bởi cáccông nghệ kết nối Myrinet và InfiniBand Từ đó chúng ta có thể quản lý, bảo trì

từ xa, xây dựng batch procession (xử lý đồng loạt tập lệnh) tốt hơn Do nhữngđòi hỏi về tốc độ xử lý I/O cao, lượng cực lớn dữ liệu, scale horizontally sẽ

Trang 17

thúc đẩy các công nghệ lưu trữ mới phát triển giống như object storage devices(OSD).

2.3 Kiến trúc

2.3.1 Sơ lược.

Các RDBMs hiện tại đã bộc lộ những yếu kém như việc đánh chỉ mụcmộ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 ) Cơ sở dữ liệu quan hệ được thiết kế cho những mô hình dữ liệunhỏ thường xuyên đọc viết trong khi các Social Network Services lại có mộtlượng dữ liệu cực lớn và cập nhật liên tục do số lượng người dùng quá nhiều ởmột thời điểm Thiết kế trên Distributed NoSQL giảm thiểu tối đa các phép tínhtoán, I/O liên quan kết hợp với batch processing đủ đảm bảo được yêu cầu xử lý

dữ liệu của các mạng dịch vụ dữ liệu cộng đồng này Facebook, Amazon lànhững ví dụ điểm hình

Về cơ bản, các thiết kế của NoSQL lựa chọn mô hình lưu trữ tập dữ liệutheo cặp giá trị keyvalue Khái niệm node được sử dụng trong quản lý dữ liệuphân tán Với các hệ thống phân tán, việc lưu trữ có chấp nhận trùng lặp dữ liệu.Một request truy vấn tới data có thể gửi tới nhiều máy cùng lúc, khi một máynào nó bị chết cũng không ảnh hưởng nhiều tới toàn bộ hệ thống Để đảm bảotính real time trong các hệ thống xử lý lượng lớn, thông thường người ta sẽ táchbiệtdatabase ra làm 2 hoặc nhiều database Một database nhỏ đảm bảo vào raliên tục, khi đạt tới ngưỡng thời gian hoặc dung lượng, database nhỏ sẽ đượcgộp (merge) vào database lớn có thiết kế tối ưu cho phép đọc (read operation)

Mô hình đó cho phép tăng cường hiệu suất I/O - một trong những nguyên nhânchính khiến performance trở nên kém

2.3.2 Một số đặc điểm.

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

Trang 18

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ới toà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ậ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 gianlan 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

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ốngcũ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)

Phi quan hệ (hay không ràng buộc): relational - ràng buộc - thuật ngữ sửdụng đến các mối quan hệ giữa các bảng trong cơ sở dữ liệu quan hệ (RDBM)

sử dụng mô hình gồm 2 loại khóa: khóa chính và khóa phụ (primary key +foreign key) để ràng buộc dữ liệu nhằm thể hiện tính nhất quán dữ liệu từ cácbảng khác nhau Non-relational là khái niệm không sử dụng các ràng buộc dữliệu cho nhất quán dữ liệu

Lưu trữ phân tán: mô hình lưu trữ phân tán các tập tin hoặc dữ liệu ranhiều máy khác nhau trong mạng LAN hoặc Internet dưới sự kiểm soát củaphần mềm

Trang 19

Nhất quán cuối: tính nhất quán của dữ liệu không cần phải đảm bảo ngaytức khắc sau mỗi phép ghi Một hệ thống phân tán chấp nhận những ảnh hưởngtheo phương thức lan truyền và sau một khoảng thời gian (không phải ngay tứckhắc), thay đổi sẽ đi đến mọi điểm trong hệ thống để cuối cùng dữ liệu trên hệthống sẽ trở lại trạng thái nhất quán.

Triển khai đơn giản, dễ nâng cấp và mở rộng

Mô hình dữ liệu và truy vấn linh hoạt …

2.3.3 What is NoSQL (technically speaking)?

Có nhiều cách định nghĩa khác nhau và ở đây CTO của Amazon, WernerVogels đề cập đến hệ thống Dynamo của họ đã gọi nó là một "highly availablekey-value store" Google gọi là BigTable để nhấn mạnh đây là "distributedstorage system for managing structured data" (hệ thống lưu trữ và quản lý dữliệu cấu trúc có phân tán)

Nó có thể xử lý một lượng dữ liệu cực lớn trong thời gian có hạn.Hypertable, một open source column-based database trên mô hình BigTableđược sử dụng cho local search engine của Zvents Inc có thể ghi tới 1 tỷ cell dữliệu mỗi ngày (theo Doug Judd một kỹ sư của Zvents) Trong khi đó BigTablekết hợp với MapReduce có thể xử lý tới 20 petabytes dữ liệu mỗi ngày

Bằng việc bỏ qua thông dịch trong SQL cùng với những truy vấn rườm

rà, NoSQL cho ta một kiến trúc tối ưu về tốc độ thực thi (ghi và truy vấn dữliệu) Việc sử dụng các ràng buộc quan hệ cùng truy vấn SQL có vẻ thân thiện

và thích hợp với phần đông dữ liệu Tuy nhiên, nếu dữ liệu quá đơn giản, cácthủ tục SQL sẽ không cần thiết (theo Curt Monash - một nhà phân tích cơ sở dữliệu, một blogger)

Raffaele Sena, một senior computer scientist ở Adobe Systems Inc đã nóirằng ConnectNow Web collaboration service của họ sử dụng Java clusteringsoftware từ Terracotta thay cho cơ sở dữ liệu quan hệ đã khiến "hệ thống của họ

Trang 20

Các thiết kế database có tính đặc thù (như document-oriented database)

sẽ lược bỏ được tầng chuyển đổi sang mô hình lưu trữ quan hệ từ interface của

nó đồng thời khiến giao tiếp tương tác trở nên tự nhiên hơn

Không quá cần thiết Đồng ý rằng RDBMs cung cấp một mô hình tuyệt

vời để đảm bảo tính toàn vẹn dữ liệu Tuy nhiên, rất nhiều người lựa chọnNoSQL đã nói rằng chúng không quá cần thiết cho nhu cầu của họ Như trong

dự án ConnectNow của Adobe, dữ liệu người dùng trong một session không cầnthiết phải lưu lại, chúng sẽ bị xóa khi người dùng logoff Vì vậy, một keyvaluememory storage là đủ dùng

Thiết kế NoSQL chấp nhận tính nhất quán yếu và có thể không dùng đến

‘transaction’ Với những ứng dụng đòi hỏi sự chặt chẽ của dữ liệu thì cần

‘transaction’ đảm bảo tính toàn vẹn, cơ sở dữ liệu truyền thống là lựa chọn thíchhợp hơn NoSQL thích hợp cho các mô hình lưu trữ dữ liệu có tính đặc thù nhưobject oriented, document oriented, xml database,…

Thường chúng ta sử dụng rất hạn chế những khả năng mà các CSDLRDBM cung cấp nhưng vẫn phải trả phí cho nó Nếu không cần đến các tínhnăng cao cấp, không cần các chức năng của SQL hoặc rất ghét viết các câu lệnhSQL thì hãy nghĩ đến NoSQL

Trong nhiều thập kỷ, mô hình dữ liệu chiếm ưu thế về lượng sử dụng để phát triển ứng dụng là mô hình dữ liệu quan hệ được sử dụng trong các cơ sở dữ

Trang 21

liệu quan hệ, ví dụ như Oracle, DB2, SQL Server, MySQL và PostgreSQL Mãi cho đến cuối những năm 2000, các mô hình dữ liệu khác mới bắt đầu được đưa vào áp dụng và sử dụng nhiều hơn Để phân biệt và phân loại các cơ sở dữ liệu

và mô hình dữ liệu mới này, từ "NoSQL" đã được đặt ra Thông thường, thuật ngữ "NoSQL" được sử dụng tương đương với "phi quan hệ"

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

3.1 Thiết kế lược đồ

Với MongoDB, chúng ta ít phải “chuẩn hóa” hơn so với khi làm việc vớilược đồ quan hệ vì trong MongoDB không có khái niệm liên kết (join) Nóichung, với mỗi đối tượng (object) mức cao nhất, ta sẽ có một bộ sưu tập(collection) dữ liệu

Một bộ sưu tập không phải cho tất cả các lớp (class), thay vào đó, các đốitượng sẽ được nhúng vào đó

Hình 1-2 minh họa có 2 bộ sưu tập: students và courses Các văn bảnstudent được nhúng văn bản address và văn bản score Trong đó, văn bản Scoređược tham chiếu đến Courses

Hình 3 1 Minh họa bộ sưu tập

Trang 22

So sánh với lược đồ quan hệ: ta cần lưu Score vào bảng riêng và dùngkhóa ngoài liên kết với Student.

3.1.1 Nhúng hay Tham chiếu

Một câu hỏi quan trọng trong thiết kế lược đồ Mongo là: “Đối tượng này

có cần một bộ sưu tập của riêng nó không hay nên nhúng vào trong các đốitượng trong các bộ sưu tập khác?” Trong cơ sở dữ liệu quan hệ, mỗi tiểu mục cóthể trở thành một bảng riêng biệt Trong Mongo, nó không được khuyến cáo,việc nhúng các đối tượng hiệu quả hơn nhiều Chúng ta cũng có thể đặt ra câuhỏi “Tại sao tôi không muốn nhúng đối tượng này?”

Tại sao tham chiếu lại chậm Ta xem ví dụ sau Chúng ta có một đốitượng Student và cần thực hiện:

Các đối tượng “lớp thứ nhất” là các đối tượng ở mức cao nhất, có

bộ sưu tập của riêng mình

Các đối tượng miêu tả chi tiết các mục thường được nhúngCác đối tượng mà theo mô hình đối tượng có chứa quan hệ nóichung nên được nhúng

Quan hệ nhiều – nhiều thường được tham chiếu

Trang 23

Các bộ sưu tập chỉ với một vài đối tượng có thể tồn tại một cách antoàn giống như bộ sưu tập riêng lẻ, được lưu trữ nhanh chóng trong bộnhớ máy chủ ứng dụng.

Các đối tượng nhúng khó khăn để tham chiếu hơn là các đối tượngmức cao

Sẽ khó khăn hơn để có một cái nhìn mức hệ thống đối với các đối tượngnhúng Ví dụ: Sẽ dễ thực hiện truy vấn tìm 100 sinh viên có điểm caonhất hơn nếu Score không bị nhúng

Nếu dữ liệu được nhúng lớn, có thể đạt đến giới hạn kích thước của mộtđối tượng

Nếu hiệu suất là quan trọng, hãy nhúng

Một số ví dụ

Customer/Order/ Order Line-Item: Customers, Orders nên có một bộ sưutập riêng Line-Items nên là một mảng các mục cần mua và được nhúng trongđối tượng Order

Hệ thống Blog: Posts cần có bộ sưu tập riêng Post Author có thể có bộsưu tập riêng hoặc nếu đơn giản chỉ là địa chỉ mail của tác giả thì chothành một trường trong Posts Comments được nhúng trong Posts

3.1.2 Lựa chọn chỉ mục

Một khía cạnh thứ hai khi thiết kế lược đồ là việc lựa chọn chỉ mục Việcđánh chỉ mục làm cho việc thực hiện truy vấn nhanh hơn Một truy vấn bìnhthường cần vài phút, có thể được thực hiện ngay lập tức với việc sử dụng chỉmục

Trong MongoDB:

Trường _id được đánh chỉ mục tự động

Ngày đăng: 14/06/2020, 21:17

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] "Core APIs," 15 1 2019. [Online]. Available: https://docs.moodle.org/dev/Core_APIs. [Accessed 7 5 2019] Sách, tạp chí
Tiêu đề: Core APIs
[2] "Building Database Clusters with MongoDB," [Online]. Available: https://www.linode.com/docs/databases/mongodb/build-database-clusters-with-mongodb/ Sách, tạp chí
Tiêu đề: Building Database Clusters with MongoDB
[3] "Ubuntu.com," [Online]. Available: https://ubuntu.com/download/alternative-downloads#alternate-ubuntu-server-installer Sách, tạp chí
Tiêu đề: Ubuntu.com
[5] "Cluster| Node.js," [Online]. Available: https://nodejs.org/api/cluster.html Sách, tạp chí
Tiêu đề: Cluster| Node.js
[6] "Getting Started with MongoDB, Node.js and Restify," [Online]. Available: https://www.mongodb.com/blog/post/getting-started-with-mongodb-nodejs-and-restify Sách, tạp chí
Tiêu đề: Getting Started with MongoDB, Node.js and Restify
[7] "Creating a MongoDB Replica Set," [Online]. Available: https://www.linode.com/docs/databases/mongodb/create-a-mongodb-replica-set/ Sách, tạp chí
Tiêu đề: Creating a MongoDB Replica Set
[8] "Configure mongod and mongos for TLS/SSL," [Online]. Available: https://docs.mongodb.com/manual/tutorial/configure-ssl/ Sách, tạp chí
Tiêu đề: Configure mongod and mongos for TLS/SSL
[9] "MongoDB Tools," [Online]. Available: https://docs.mongodb.com/tools/ Sách, tạp chí
Tiêu đề: MongoDB Tools
[10] "The MongoDB 4.2 Manual," [Online]. Available: https://docs.mongodb.com/manual/ Sách, tạp chí
Tiêu đề: The MongoDB 4.2 Manual
[4] H. t. S. Y. Server. [Online]. Available: https://www.linode.com/docs/security/securing-your-server/ Link

TỪ KHÓA LIÊN QUAN

w