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 3MỞ ĐẦ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 4LỜ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 5NHẬN XÉT
(Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 6MỤ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 7DANH 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 8CHƯƠ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 9mớ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 10Chị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 11Hệ 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 12CHƯƠ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 13hệ 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 14sở 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 15Cá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 16khó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 17thú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 18High 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 19Nhấ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 20Cá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 21liệ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 22So 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 23Cá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