BiagData ( Dữ Liẹu lớn ) và tổng qun về MongoDB

39 1 0
BiagData ( Dữ Liẹu lớn ) và tổng qun về MongoDB

Đ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

Trong thời đại công nghệ số phát triển như hiện nay, dữ liệu ngày càng trở nên quan trọng. Các ứng dụng web và di động hiện đại thường cần lưu trữ và truy vấn một lượng lớn dữ liệu. Dữ liệu đóng vai trò là nền tảng của các ứng dụng web và di động hiện đại. Dữ liệu được sử dụng để lưu trữ thông tin về người dùng, sản phẩm, dịch vụ, và các khía cạnh khác của doanh nghiệp. Dữ liệu được sử dụng để cung cấp các tính năng và trải nghiệm cho người dùng. Dữ liệu được sử dụng để phân tích và ra quyết định. Từ đó các ứng dụng web và di động hiện tại thường cần luuw trữ và truy vấn một lượng lớn dữ liệu. Như một ứng dụng thương mại như Shopee cần lưu trữ những thông tin về sản phẩm, đơn hàng và người dùng hay một ứng dụng mạng xã hội cần lưu trữ thông tin về Người dùng bài đăng và bình luận , v… v. Thực trạng NoSQL ngày nay cho thấy sự phổ biến và đa dạng của các cơ sở dữ liệu NoSQL trong nhiều lĩnh vực khác nhau. Nhiều công ty lớn như Google, Amazon, Facebook, Twitter và Netflix đều sử dụng NoSQL để lưu trữ và xử lý dữ liệu của họ. Ngoài ra, NoSQL cũng được sử dụng trong các ứng dụng di động, Internet vạn vật, chơi game và web hiệu suất cao. NoSQL cũng hỗ trợ polyglot persistence, tức nhiều kiểu lưu trữ cho phép lưu trữ nhiều loại cơ sở dữ liệu NoSQL khác nhau tùy thuộc vào nhu cầu của các ứng dụng cụ thể. NoSQL DBMS là một lựa chọn tốt cho lưu trữ và truy vấn Big Data, nó có thể xử lý các tập dữ liệu lớn và phức tạp một cách hiệu quả. Với các ưu điểm như : Linh hoạt, tính mở rộng tốt, tính khả dụng cao,… Khiến nó ngày càng phổ biến trong việc lưu trữ và truy vấn BigData. Thực trạng NoSQL ngày nay cho thấy sự phổ biến và đa dạng của các cơ sở dữ liệu NoSQL trong nhiều lĩnh vực khác nhau. Nhiều công ty lớn như Google, Amazon, Facebook, Twitter và Netflix đều sử dụng NoSQL để lưu trữ và xử lý dữ liệu của họ. Ngoài ra, NoSQL cũng được sử dụng trong các ứng dụng di động, Internet vạn vật, chơi game và web hiệu suất cao. NoSQL cũng hỗ trợ polyglot persistence, tức nhiều kiểu lưu trữ cho phép lưu trữ nhiều loại cơ sở dữ liệu NoSQL khác nhau tùy thuộc vào nhu cầu của các ứng dụng cụ thể. MongoDB được biết đến như là một hệ quản trị cơ sở dữ liệu NoSQL tốt nhất hiện nay . Được xây dựng dựa trên mô hình tài liệu lưu trữ dữ liệu dưới dạng các tài liệu, là một cấu trúc dữ liệu giống như JSON được sử dụng phổ biến cho các ứng dụng web và di động hiện đại. Trong bài báo cáo này nhóm mình sẽ giới thiệu cũng như làm rõ về MongoDB, bao gốm các khái niệm, MongoDB hoạt động như thế nào ? Cách sử dụng MongoDB ,v..v

Trang 1

Đại học Quốc Gia Hà Nội Trường Đại học Khoa học tự nhiên

Khoa : Toán Cơ Tin học

Trang 2

Giới thiệu

Tiêu đề : Tìm hiểu về MongoDB Môn học : Cơ Sở dữ liệu Giáo viên giảng dạy :

+ TS Nguyễn Tiến Dũng + Cô Trần Thị Hồng

Nhóm Thực hiện :

STT Họ và Tên Mã sinh viên Công việc Ghi chú

1 Nguyễn Đăng Thực 22001641 Báo cáo, Thuyết trình và nội dung

Trang 3

5 Giải pháp cho các thách thức khi sử dụng Big Data 6

Phần 3 : MongoDB – Cơ sở dữ liệu NoSQL 11

I) Giới thiệu chung về MongoDB 11

1 Sự ra đời của MongoDB 11

2 Hệ cơ sở dữ liệu MongoDB 11

3 Cách MongoDB lưu trữ dữ liệu 11

4 Thiết kế dữ liệu trong MongoDB 12

5 Các tính năng của MongoDB 14

6 Nguyên tắc hoạt động của MongoDB 15

II) Thao tác và cách sử dụng cùng MongoDB 16

1 Truy vấn trong MongoDB 16

Trang 4

Phần 1 : Đặt Vấn đề

Trong thời đại công nghệ số phát triển như hiện nay, dữ liệu ngày càng trở nên quan trọng Các ứng dụng web và di động hiện đại thường cần lưu trữ và truy vấn một lượng lớn dữ liệu

Dữ liệu đóng vai trò là nền tảng của các ứng dụng web và di động hiện đại Dữ liệu được sử dụng để lưu trữ thông tin về người dùng, sản phẩm, dịch vụ, và các khía cạnh khác của doanh nghiệp Dữ liệu được sử dụng để cung cấp các tính năng và trải nghiệm cho người dùng Dữ liệu được sử dụng để phân tích và ra quyết định

Từ đó các ứng dụng web và di động hiện tại thường cần luuw trữ và truy vấn một lượng lớn dữ liệu Như một ứng dụng thương mại như Shopee cần lưu trữ những thông tin về sản phẩm, đơn hàng và người dùng hay một ứng dụng mạng xã hội cần lưu trữ thông tin về Người dùng bài đăng và bình luận , v… v

Thực trạng NoSQL ngày nay cho thấy sự phổ biến và đa dạng của các cơ sở dữ liệu NoSQL trong nhiều lĩnh vực khác nhau Nhiều công ty lớn như Google, Amazon, Facebook, Twitter và Netflix đều sử dụng NoSQL để lưu trữ và xử lý dữ liệu của họ

Ngoài ra, NoSQL cũng được sử dụng trong các ứng dụng di động, Internet vạn vật, chơi game và web hiệu suất cao NoSQL cũng hỗ trợ polyglot persistence, tức nhiều kiểu lưu trữ cho phép lưu trữ nhiều loại cơ sở dữ liệu NoSQL khác nhau tùy thuộc vào nhu cầu của các ứng dụng cụ thể

NoSQL DBMS là một lựa chọn tốt cho lưu trữ và truy vấn Big Data, nó có thể xử lý các tập dữ liệu lớn và phức tạp một cách hiệu quả Với các ưu điểm như : Linh hoạt, tính mở rộng tốt, tính khả dụng cao,… Khiến nó ngày càng phổ biến trong việc lưu trữ và truy vấn BigData

Thực trạng NoSQL ngày nay cho thấy sự phổ biến và đa dạng của các cơ sở dữ liệu NoSQL trong nhiều lĩnh vực khác nhau Nhiều công ty lớn như Google, Amazon, Facebook, Twitter và Netflix đều sử dụng NoSQL để lưu trữ và xử lý dữ liệu của họ Ngoài ra, NoSQL cũng được sử dụng trong các ứng dụng di động, Internet vạn vật, chơi game và web hiệu suất cao NoSQL cũng hỗ trợ polyglot persistence, tức nhiều kiểu lưu trữ cho phép lưu trữ nhiều loại cơ sở dữ liệu NoSQL khác nhau tùy thuộc vào nhu cầu của các ứng dụng cụ thể

MongoDB được biết đến như là một hệ quản trị cơ sở dữ liệu NoSQL tốt nhất hiện nay Được xây dựng dựa trên mô hình tài liệu lưu trữ dữ liệu dưới dạng các tài liệu, là một cấu trúc dữ liệu giống như JSON được sử dụng phổ biến cho các ứng dụng web và di động hiện đại

Trong bài báo cáo này nhóm mình sẽ giới thiệu cũng như làm rõ về MongoDB, bao gốm các khái niệm, MongoDB hoạt động như thế nào ? Cách sử dụng MongoDB ,v v

Trang 5

Phần 2 : Tổng quan về BigData và NoSQL

I) BigData

1 Khái niệm

Theo wikipedia: Dữ liệu lớn (Big data) là một thuật ngữ chỉ bộ dữ liệu lớn hoặc phức tạp mà các phương pháp truyền thống không đủ các ứng dụng để xử lý dữ liệu này

Theo Gartner: Dữ liệu lớn là những nguồn thông tin có đặc điểm chung khối lượng lớn, tốc độ nhanh và dữ liệu định dạng dưới nhiều hình thức khác nhau, do đó muốn khai thác được đòi hỏi phải có hình thức xử lý mới để đưa ra quyết định, khám phá và tối ưu hóa quy trình

2 Đặc điểm :

- Volume (Khối lượng dữ liệu): Thu thập dữ liệu từ nhiều nguồn khác nhau, từ các giao dịch, thiết bị thông minh, thiết bị công nghiệp, video, hình ảnh, âm thanh, phương tiện truyền thông xã hội,

- Velocity (Vận tốc xử lý): Với sự phát triển của Internet of Things, tốc độ truyền dữ liệu vào các doanh nghiệp vô cùng nhanh và phải được xử lý kịp thời

- Variety (Dữ liệu đa dạng): Dữ liệu được thu thập ở nhiều định dạng khác nhau từ dữ liệu số, có cấu trúc trong cơ sở dữ liệu truyền thống đến tài liệu văn bản phi cấu trúc, email, video, âm thanh, dữ liệu mã chứng khoán và các giao dịch tài chính

+ Veracity (Độ chính xác): Vì đa dạng về các kiểu dữ liệu, nên sự không thống nhất của tập dữ liệu có thể cản trở các quy trình để xử lý và quản lý nó Do đó, độ chính xác của công nghệ này có thể đảm bảo giúp cho việc giảm bớt sự sai lệch đáng tiếc có thể xảy ra

+ Value (Mức độ giá trị của thông tin): Chất lượng dữ liệu của những dữ liệu lấy được có thể thay đổi rất nhiều, điều này sẽ ảnh hưởng rất mạnh đến việc phân tích chính xác những đấy Ta có thể xem đây là tính chất cũng là khái niệm mà những doanh nghiệp hay nhà nghiên cứu muốn sử dụng và khai thác Big Data phải nắm giữ và am hiểu nó đầu tiên

+ Variability (Tính biến thiên của dữ liệu): Tính biến thiên của dữ liệu phản ánh sự không nhất quán trong dữ liệu, đặc biệt là trong xử lý ngôn ngữ tự nhiên, cùng một từ vựng nhưng trong các ngữ cảnh khác nhau nó sẽ mang các ý nghĩa khác nhau Tính biến thiên của dữ liệu cũng còn được thể hiện qua sự biến thiên về kích thước và tốc độ dữ liệu được sinh ra, do dữ liệu được thu thập từ nhiều nguồn khác nhau.

3 Quá trình hình thành

Big Data đã hình thành từ thập niên 80-90 của thế kỉ XX

Trang 6

Năm 2005, sự ra đời của Hadoop và NoSQL đã đánh dấu một bước ngoặt quan trọng trong sự phát triển của Big Data Hadoop và NoSQL giúp cho việc lưu trữ và xử lý Big Data trở nên dễ dàng hơn và rẻ hơn Nhờ đó, Big Data đã trở nên phổ biến và được ứng dụng trong nhiều lĩnh vực khác nhau

Đến đầu thế kỷ 21, sự phát triển của công nghệ như ổ cứng dung lượng lớn và các ngôn ngữ lập trình mới đã giúp cho việc lưu trữ và xử lý Big Data trở nên dễ dàng hơn

Hiện nay, nhờ có Internet of Things mà khối lượng Big Data ngày càng lớn với tốc độ nạp vô cùng nhanh chóng Lý do là vì dữ liệu ngày nay không chỉ do con người tạo ra mà còn do máy móc tạo tự động Big Data đã trở thành một tài nguyên quý giá đối với các doanh nghiệp, đặc biệt là các doanh nghiệp thương mại điện tử, giúp doanh nghiệp tăng lợi thế cạnh tranh và phục vụ khách hàng tốt hơn

4 Thực trạng

Big Data là một tập dữ liệu có kích thước lớn, phức tạp và khó xử lý bằng các phương pháp truyền thống Big Data mang lại nhiều lợi ích to lớn cho doanh nghiệp, nhưng cũng có những thách thức cần được giải quyết

Các thách thức chính khi sử dụng Big Data bao gồm:

-Khối lượng dữ liệu lớn và tăng nhanh: Khối lượng dữ liệu được tạo ra mỗi ngày ngày càng lớn và tăng nhanh chóng Điều này gây ra khó khăn cho việc lưu trữ và xử lý dữ liệu

-Thời gian xử lý dữ liệu: Dữ liệu Big Data thường có cấu trúc phức tạp, đòi hỏi thời gian xử lý lâu

-Chất lượng dữ liệu: Dữ liệu Big Data thường có chất lượng không đồng nhất, có thể chứa nhiều dữ liệu lỗi Điều này gây khó khăn trong việc phân tích và khai thác dữ liệu

-Chi phí đầu tư: Đầu tư cho Big Data là một khoản chi phí lớn, đòi hỏi doanh nghiệp phải có nguồn lực tài chính dồi dào

-Kỹ năng và kiến thức: Không phải tất cả mọi người đều có đủ kỹ năng và kiến thức để sử dụng Big Data hiệu quả

-Quyền riêng tư: Việc sử dụng Big Data có thể gây xâm phạm quyền riêng tư của người dùng

-Chủ quan: Việc phụ thuộc quá nhiều vào dữ liệu từ Big Data có thể gây ra sự chủ quan trong phân tích và ra quyết định

5 Giải pháp cho các thách thức khi sử dụng Big Data

Trang 7

- Xây dựng hệ thống lưu trữ dữ liệu hiệu quả: Doanh nghiệp cần xây dựng hệ thống lưu trữ dữ liệu có khả năng mở rộng để đáp ứng nhu cầu lưu trữ ngày càng tăng của Big Data

- Sử dụng các công cụ và thuật toán xử lý dữ liệu tiên tiến: Doanh nghiệp cần sử dụng các công cụ và thuật toán xử lý dữ liệu tiên tiến để giảm thời gian xử lý dữ liệu

- Tăng cường chất lượng dữ liệu: Doanh nghiệp cần có các quy trình kiểm soát chất lượng dữ liệu để đảm bảo dữ liệu được thu thập và xử lý chính xác

- Đào tạo nhân viên về Big Data: Doanh nghiệp cần đào tạo nhân viên về Big Data để nâng cao kỹ năng và kiến thức sử dụng Big Data hiệu quả

- Thiết lập các chính sách bảo vệ quyền riêng tư: Doanh nghiệp cần thiết lập các chính sách bảo vệ quyền riêng tư để đảm bảo quyền riêng tư của người dùng

- Sử dụng Big Data một cách hợp lý: Doanh nghiệp cần sử dụng Big Data một cách hợp lý, tránh phụ thuộc quá nhiều vào dữ liệu từ Big Data

Với sự phát triển của công nghệ, các thách thức khi sử dụng Big Data đang dần được giải quyết Tuy nhiên, doanh nghiệp cần có sự chuẩn bị kỹ lưỡng để tận dụng tối đa lợi ích của Big Data và giảm thiểu rủi ro

6 Ứng dụng

Các lĩnh vực ứng dụng của Big Data bao gồm:

- Tài chính - ngân hàng: Big Data được sử dụng để phân tích và xác định các địa điểm tập trung nhiều nhu cầu của khách hàng tiềm năng, dự đoán lượng tiền mặt cần thiết, phát hiện các hoạt động gian lận, và nâng cao hệ thống ngân hàng kỹ thuật số

- Y tế, chăm sóc sức khỏe: Big Data được sử dụng để xác định phương hướng điều trị, theo dõi tình trạng bệnh nhân, lưu giữ các hồ sơ nhạy cảm được bảo mật, và dự báo trước các khu vực có nguy cơ bùng phát dịch bệnh nguy hiểm - Thương mại điện tử: Big Data được sử dụng để xác định sản phẩm được

xem nhiều nhất, phân tích hành vi, sở thích, sự quan tâm của khách hàng, và gửi mã ưu đãi cho khách hàng bỏ vào giỏ hàng nhưng không mua

- Digital Marketing: Big Data được sử dụng để xác định đối tượng mục tiêu, cá nhân hóa các hoạt động tìm kiếm, hiển thị quảng cáo phù hợp, và tạo báo cáo chi tiết sau mỗi chiến dịch quảng cáo

- Ngành công nghiệp: Big Data được sử dụng để phát triển phần mềm sản phẩm, tăng trải nghiệm khách hàng, thúc đẩy sự cải tiến mới, và ước tính số

Trang 8

lượng học sinh, sinh viên tuyển sinh hằng năm, quản lý hồ sơ học sinh, sinh viên, và ước tính được nhu cầu tuyển dụng cho các ngành nghề hàng năm

7 Các công nghệ dành cho Big Data

- Hệ sinh thái Hadoop: Cho phép xử lý phân tán các tập dữ liệu lớn trên các cụm máy tính (clusters of computers) thông qua mô hình lập trình đơn giản

- Apache Spark: Một công cụ tính toán nhanh và có mục đích chung để xử lý quy mô lớn dữ liệu

- Apache Kafka: Hệ thống nhắn tin phân tán lượng thông tin cao thường được sử dụng với Hadoop

- Data lakes: Các kho lưu trữ chứa khối lượng dữ liệu thô rất lớn ở định dạng gốc, được thiết kế để giúp người dùng dễ dàng truy cập vào một lượng lớn dữ liệu khi có nhu cầu

- In-memory databases: Hệ thống quản lý cơ sở dữ liệu chủ yếu dựa vào bộ nhớ chính (Ram), thay vì HDD

NoSQL Databases: Cơ sở dữ liệu NoSQL nêu ra những hạn chế, và lưu trữ và quản lý dữ liệu theo những cách cho phép tốc độ hoạt động cao và sự linh hoạt tuyệt vời Không giống như các cơ sở dữ liệu SQL, nhiều cơ sở dữ liệu NoSQL có thể được mở rộng theo chiều ngang trên hàng trăm hoặc hàng ngàn máy chủ

Các ứng dụng hiện đại phải đối mặt với một số thách thức có thể được giải quyết bằng cơ sở dữ liệu NoSQL Ví dụ, các ứng dụng xử lý một khối lượng dữ liệu lớn từ các nguồn khác nhau như phương tiện truyền thông xã hội, cảm biến thông minh và cơ sở dữ liệu của bên thứ ba Tất cả dữ liệu khác nhau này không phù hợp với mô hình quan hệ Việc thực thi các cấu trúc dạng bảng có thể dẫn đến dư thừa, sao chép dữ liệu và các vấn đề về hiệu suất trên quy mô lớn

Cơ sở dữ liệu NoSQL được công nhận rộng rãi vì khả năng dễ phát triển, chức năng cũng như hiệu năng ở quy mô lớn.Tổng quan về NoSQL được tổng hợp ở phần tiếp theo

II) NoSQL

1 Khái niệm

NoSQL là một công nghệ cơ sở dữ liệu lưu trữ và truy xuất dữ liệu phi quan hệ (non-relational Data Management System) với sơ đồ linh hoạt

2 Quá trình hình thành

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

Trang 9

Vào năm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL khi Johan Oskarsson của Last.fm muốn tổ chức 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ệ CSDL mới: một thế hệ CSDL không ràng buộc, phân tán, nguồn mở, khả năng mở rộng theo chiều ngang, có thể lưu trữ, xử lý từ một lượng rất nhỏ cho tới hàng petabytes dữ liệu trong hệ thống có độ 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

Dữ liệu và các mối quan hệ của nó được lưu trữ trong các bảng riêng biệt

Không định nghĩa schema

Dữ liệu phi cấu trúc và không thể đoán

Những ưu điểm chính của nosql là khả năng mở rộng và tính sẵn sàng cao

-NoSQL giải quyết được các vấn đề dữ liệu lớn(big data) về các hệ thống thông tin hoặc là phân tán dữ liệu

-Việc mở rộng phạm vi là mềm dẻo: NoSQL thay thế câu thần chú cũ của các nhà quản trị CSDL về việc ‘mở rộng phạm vi’ với một thứ mới: ‘mở rộng ra ngoài’ Thay vì phải bổ sung thêm những máy chủ lớn hơn để tải nhiều dữ liệu hơn, thì CSDL NoSQL cho phép một công ty phân tán tải qua nhiều máy chủ khi tải gia tăng

-High availability: Khả năng tự động sao chép trong MongoDB làm cho nó rất tốt trong mọi trường hợp vì trong trường hợp có bất kỳ lỗi nào, dữ liệu sẽ tự động sao chép về trạng thái nhất quán trước đó

b) Nhược điểm:

-Quản lý dữ liệu: Mục đích của các công cụ dữ liệu lớn là làm cho việc quản lý một lượng lớn dữ liệu trở nên đơn giản nhất Nhưng quản lý dữ liệu trong NoSQL

Trang 10

phức tạp hơn nhiều so với cơ sở dữ liệu quan hệ Đặc biệt, NoSQL nổi tiếng là khó cài đặt và thậm chí là để quản lý nó hằng ngày cũng tốn khá nhiều thời gian -Sao lưu dữ liệu: Sao lưu là một điểm yếu lớn đối với một số cơ sở dữ liệu NoSQL như MongoDB Nó không có cách tiếp cận để làm sao lưu dữ liệu một cách nhất quán

-Thiếu tính nhất quán: NoSQL đánh đổi sự nhất quán để ưu tiên tốc độ, hiệu suất hiệu quả hơn

-Trọng tâm hẹp: Cơ sở dữ liệu NoSQL có trọng tâm rất hẹp vì nó chủ yếu được thiết kế để lưu trữ nhưng nó cung cấp rất ít chức năng

-Mã nguồn mở: NoSQL là cơ sở dữ liệu mã nguồn mở và không có tiêu chuẩn đáng tin cậy cho NoSQL được nêu ra

-Không có lược đồ: Ngay cả khi bạn lấy dữ liệu ở dạng tự do, bạn hầu như luôn cần áp đặt các ràng buộc để làm cho nó hữu ích Với NoSQL, trách nhiệm sẽ được chuyển từ cơ sở dữ liệu sang nhà phát triển, lập trình ứng dụng

-Kỹ năng NoSQL: Một hạn chế khác đối với NoSQL là người sử dụng có thể sẽ thiếu các kỹ năng chuyên môn ở mức tương đối vì hệ thống này còn khá mới và không phải ai cũng biết sử dụng nó một cách thành thạo

5 Các dạng CSDL NoSQL

- Wide Column Store / Column Families: Hadoop/HBase – Apache, BigTable – Google, Cassandra - Facebook/Apache, Hypertable - Zvents Inc/Baidu, Cloudera, SciDB, Mnesia, Tablets,…

- Key-Value Store/Tuple store

- Key/value cache in RAM: memcached, Citrusleaf database, Velocity, Redis, Tuple space, - Key/value save on disk: Memcachedb, Berkeley DB, Tokyo Cabinet, Redis,

- Eventually Consistent Key Value Store: Amazon Dynamo, Voldemort, Dynomite, KAI, Cassandra, Hibari, Project Voldemort,…

- dOrdered key-value store: NMDB, Memcachedb, Berkeley DB,

- Distributed systems: Apache River, MEMBASE, Azure Table Storage, Amazon Dynamo, - Graph Database: Neo4J, Sones, AllegroGraph, Core Data, DEX, FlockDB, InfoGrid,

OpenLink Virtuoso,

- Document Store: Apache Jackrabbit, CouchDB, IBM Lotus Notes Storage Format (NSF), MongoDB, Terrastore, ThruDB, OrientDB, RavenDB,

Trang 11

Phần 3 : MongoDB – Cơ sở dữ liệu NoSQL

I) Giới thiệu chung về MongoDB 1 Sự ra đời của MongoDB

MongoDB được bắt đầu phát triển vào đầu năm 2007 khi công ty 10gen đang phát triển một nền tảng tương tự dịch vụ Azure của Microsoft Công ty 10gen là một công ty phần mềm có trụ sở tại New York, nay được đổi tên thành MongoDB Inc Việc phát triển ban đầu tập trung vào xây dựng PaaS (một nền tảng dịch vụ) nhưng sau đó vào năm 2009, MongoDB đã xuất hiện trên thị trường như một dự án mã nguồn mở máy chủ cơ sở dữ liệu và được duy trì bởi chính tổ chức này.[6]

Tháng 3 năm 2010, MongoDB Inc đã tung ra sản phẩm sẵn sàng đầu tiên của mình là phiên bản 1.4 Phiên bản ổn định tiếp theo của MongoDB là phiên bản 2.4.9 được phát hành vào ngày 10 tháng 1 năm 2014

Đầu năm 2015, phiên bản 3.0 được phát hành, cuối năm 2015 phiên 3.2 ra đời đi kèm với công cụ quản trị trên giao diện đồ họa MongoDB Compass

2 Hệ cơ sở dữ liệu MongoDB

MongoDB là một hệ thống quản lý cơ sở dữ liệu (DBMS) phi quan hệ (NoSQL) phổ biến được phát triển bởi MongoDB, Inc Nó lưu trữ dữ liệu trong các tài liệu JSON được gọi là BSON

(Binary JSON) và là một phần quan trọng của hệ sinh thái NoSQL cho các ứng dụng hiện đại

3 Cách MongoDB lưu trữ dữ liệu

MongoDB lưu trữ dữ liệu theo mô hình cơ sở dữ liệu NoSQL, có cấu trúc chủ yếu là JSON dưới dạng BSON (Binary JSON) Điều này cho phép MongoDB lưu trữ dữ liệu dưới dạng tài liệu, được gọi là "documents" Dữ liệu được tổ chức thành các bộ sưu tập ("collections"), mỗi bộ sưu tập có thể chứa nhiều tài liệu

Trang 12

- Database: MongoDB lưu trữ dữ liệu trong các cơ sở dữ liệu, mỗi cơ sở dữ liệu có thể chứa nhiều bộ sưu tập (collections)

- Collection: Đây là tập hợp các tài liệu, tương tự như bảng trong mô hình cơ sở dữ liệu quan hệ Mỗi bộ sưu tập có thể chứa nhiều tài liệu và không yêu cầu các tài liệu trong cùng một bộ sưu tập phải có cấu trúc dữ liệu giống nhau

- Document: Đây là một bản ghi dữ liệu JSON dưới dạng BSON, mô tả thông tin với các cặp key-value Các tài liệu trong một bộ sưu tập không cần phải có cấu trúc dữ liệu giống nhau Tài liệu có thể chứa các trường khác nhau và không cần phải tuân theo schema cố định - BSON( Binary JSON) : MongoDB sử dụng định dạng dữ liệu BSON (Binary JSON) để lưu

trữ và truy xuất dữ liệu BSON là một định dạng dữ liệu nhị phân tương tự JSON, nhưng hỗ trợ thêm các kiểu dữ liệu và mã hóa dữ liệu để tối ưu việc lưu trữ và tìm kiếm

4 Thiết kế dữ liệu trong MongoDB

Khi thiết kế các schema cho một cơ sở dữ liệu quan hệ, chúng ta thường chia dữ liệu thành các bảng, sao cho không bị nhân đôi dữ liệu

Trang 13

Nguồn: duthanhduoc.com

Dữ liệu người dùng được chia thành những bảng riêng biệt, và chúng có thể được JOINED với nhau bằng cách sử dụng khóa ngoại trong cột user_id của bảng Professions và Cars

Bây giờ chúng ta cùng xem lại ví dụ trên như thế nào khi thiết kế theo MongoDB nhé !

Nguồn: duthanhduoc.com

Bạn có thể thấy, thay vì chia nhỏ dữ liệu thành từng collection, chúng ta tận dụng lợi thế của MongoDB document có thể lưu trữ array và object bên trong User object Bây giờ chỉ với một query đơn giản, chúng ta có thể kéo tất cả dữ liệu về ứng dụng của chúng ta

Trang 14

MongoDB schema hoạt động khác với SQL Với kiểu thiết kế cơ sở dữ liệu theo MongoDB, chúng ta sẽ:

- Không có quy trình chính thức - Không có những thuật toán - Không có những quy tắc

Khi bạn thiết kế cơ sở dữ liệu bằng MongoDB, bạn chỉ cần quan tâm là thiết kế đó hoạt động tốt cho ứng dụng của bạn là được 2 App khác nhau, xử dụng data giống hệt nhau nhưng có thể nó sẽ có những schema khác nhau Đơn giản vì 2 app đó được sử dụng theo những cách khác

Trong MongoDB, bạn được phép lưu trữ dữ liệu dưới dạng tài liệu (document) mà không cần yêu cầu sự định nghĩa trước về cấu trúc của chúng, giống như trong hệ thống quản lý cơ sở dữ liệu phi quan hệ (NoSQL)

Bạn có thể lưu trữ các tài liệu với các fields và giá trị (values) khác nhau mà không cần tuân theo một cấu trúc cố định Do đó, việc thêm, xóa hoặc sửa đổi các fields, giá trị của tài liệu được thực hiện một cách dễ dàng mà không cần phải thực hiện các bước định nghĩa cấu trúc cơ sở dữ liệu trước

Tính năng schema-less giúp tăng tính linh hoạt và giảm thời gian phát triển các ứng dụng, đặc biệt là đối với các ứng dụng có tính chất thay đổi dữ liệu thường xuyên hoặc không có một cấu

MongoDB được thiết kế để lưu trữ dữ liệu dưới dạng tài liệu (document) thay vì các bảng (table) như trong hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) Mỗi tài liệu trong MongoDB được lưu trữ dưới một bản ghi độc lập bao gồm các fields (key-value pair) và giá trị tương ứng

c) Indexing

MongoDB tạo ra index để tăng tốc độ truy vấn và tìm kiếm dữ liệu trong cơ sở dữ liệu Khi tạo một index trên một field hoặc tập hợp fields, MongoDB sẽ tạo ra một cấu trúc dữ liệu tương ứng, sắp xếp và lưu trữ các giá trị của fields hoặc tập hợp các fields đó theo một thứ tự nhất định

Trang 15

Có nhiều loại Index khác nhau trong MongoDB, gồm: - Single Field Index: Index trên một Field duy nhất

- Compound Index: cho phép đánh dấu Index cho nhiều Field - Multikey Index: Index trên các mảng dữ liệu

- Text Index: Index dành riêng cho các tài liệu chứa văn bản

Việc thiết lập các Index phù hợp và tối ưu là một yếu tố quan trọng trong việc thiết kế và tối ưu hóa cơ sở dữ liệu MongoDB

d) Replication

Replication trong MongoDB là quá trình đồng bộ dữ liệu giữa các node trong một cluster MongoDB Một cluster MongoDB sẽ gồm một node primary và nhiều node secondary

Node primary là node chịu trách nhiệm ghi dữ liệu mới vào cơ sở dữ liệu, còn các node secondary chỉ đọc dữ liệu Khi một node primary bị lỗi hoặc ngừng hoạt động thì một node secondary sẽ được chuyển đổi thành node primary để tiếp tục đảm nhận việc ghi dữ liệu

Khi một node primary ghi dữ liệu mới vào cơ sở dữ liệu, nó sẽ đồng bộ dữ liệu mới này với các node secondary bằng cách sử dụng thủ tục replica set Replica set là một tập hợp các node trong cluster gồm có một node primary và các node secondary, cùng với quy tắc đảm bảo sự sẵn sàng, độ tin cậy và khả năng phục hồi

Với tính năng Replication, MongoDB có khả năng tự động sao lưu dữ liệu, đảm bảo độ tin cậy và khả năng phục hồi của cơ sở dữ liệu, đồng thời giúp tăng khả năng mở rộng của hệ thống

e) Sao lưu và phục hồi

MongoDB cung cấp tính năng sao lưu và phục hồi dữ liệu linh hoạt, cho phép lưu trữ các bản sao của dữ liệu và phục hồi dữ liệu trong trường hợp xảy ra sự cố

f) Bảo mật

MongoDB hỗ trợ nhiều tính năng bảo mật, bao gồm chứng thực người dùng (user authentication), mã hóa dữ liệu (data encryption) và kiểm soát quyền truy cập (access control)

6 Nguyên tắc hoạt động của MongoDB

Trang 16

Nguyên tắc hoạt động của MongoDB là dưới một tiến trình dịch vụ ngầm và mở một cổng (mặc định là cổng 27017), để có thể tiếp nhận các yêu cầu truy vấn, thao tác; sau đó tiến hành xử lý

Mỗi bản ghi của MongoDB (document) được gắn một trường có tên “_id” nhằm xác định tính duy nhất của bản ghi Có thể hiểu id này như tên gọi của một bản ghi và dùng phân biệt chúng với các bản ghi khác Đồng thời, nó còn được sử dụng cho mục đích truy vấn hoặc tìm kiếm thông tin Trường dữ liệu “_id” được tự động đánh chỉ mục (index) để đảm bảo tốc độ truy vấn đạt hiệu suất tối ưu

Mỗi truy vấn dữ liệu đều được ghi đệm lên bộ nhớ RAM nên các truy vấn sau đó sẽ diễn ra nhanh hơn Bởi nó không cần đọc dữ liệu từ ổ cứng

Khi thực hiện thêm, xóa hay sửa bản ghi thì MongoDB đều mất 60s để ghi các dữ liệu được thay đổi từ RAM xuống ổ cứng Điều này nhằm mục đích đảm bảo hiệu suất mặc định của chương trình

II) Thao tác và cách sử dụng cùng MongoDB 1 Truy vấn trong MongoDB

Trang 17

Thay vì dùng câu SELECT như trong SQL , trong MongoDB sẽ sử dụng phương thức find() để truy vấn dữ liệu với các tham số cần truy vấn

+ find(): Khi không truyền vào tham số bên trong hàm find() thì nó sẽ lấy tất cả document có bên trong collection đó dưới dạng object nhưng không theo một cấu trúc nào cả

Dựa vào chức năng của hàm find() thì chúng ta có thể so sánh nó tương đương như câu lệnh Select * from trong SQL

Cú pháp: db.collection_name.find()

Trong đó: collection_name là tên của collection muốn truy vấn

Và nếu muốn dữ liệu được trả về được hiển thị theo cấu trúc đã được định sẵn thì chỉ cần thêm hàm pretty() vào phía sau hàm find()

Trang 18

+ findOne(): Lấy ra một bản ghi duy nhất, trả về document đầu tiên

b) Truy vấn có điều kiện:

+ Lựa chọn các trường:

Cú pháp: db.collection_name.find(query, projection) Trong đó :

Collection_name : là tên collection của bạn query : không bắt buộc chỉ định những điều kiệu chúng ta muốn

projection : không bắt buộc Chỉ định các trường để trả về trong các tài liệu khớp với query trên, nếu projection rỗng thì trả về tất cả các trường, có dạng

{ field1: <value>, field2: <value> } - value có thể là bất kì sau đây:

- 1 hoặc true để trả về trường đó 0 hoặc false để loại trường đó toán tử projection khác Ví dụ: db.phongban.find({tenphg: 'Nghiên cứu'}, {maphg: 1});

Lấy trường maphg của các phongban có tenphg là Nghiên cứu

Trang 19

FROM phongban

WHERE tenphg LIKE “Nghiên cứu” db.diadiem_phg.find({}, {maphg: 0}); Lấy tất cả các trường ngoại trừ trường maphg đối với tất cả các văn bản

~ SQL: SELECT DIADIEM FROM DIADIEM_PHG ad.nhanvien.find({}, {honv: 1, tennv: 1, manv: 1});

Lấy một số trường trong nhanvien ~ SQL: SELECT HONV, TENNV, MANV FROM nhanvien

Lưu ý: Trường _id luôn luôn được trả về ngay cả khi không yêu cầu

+ Sắp xếp: Trả về các doccument trong collection được sắp xếp tăng dần tương ứng với

ORDER BY TENNV DESC

+ Giới hạn: Giới hạn số lượng document trong kết quả trả về

Cú pháp: db.collection_name.find().limit() Ví dụ: db.nhanvien.find().limit(10)

Giới hạn kết quả trả về chỉ 10 nhân viên ~ SQL: SELECT *

FROM nhanvien LIMIT 10

+, Bỏ qua: Trả về kết quả bỏ qua các document trước vị trí đó

Ngày đăng: 08/04/2024, 14:22

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan