Tiểu luận: Kết hợp Node.js và MongoDB trong xây dựng hệ quản trị cơ sở dữ liệu thời gian thực

Chuyên khảo kinh tế phân tích Tiểu luận kết hợp nodejs với mongodb cho bài toán xây dựng hệ quản trị cơ sở dữ liệu thời gian thực, đánh giá các khía cạnh quan trọng, đề xuất hướng

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

đồ án tốt nghiệp

2021

79
0
0

Phí lưu trữ

30 Point

Mục lục chi tiết

1. CHƯƠNG 1: KIẾN THỨC NỀN TẢNG

1.1. Cơ sở dữ liệu hướng tài liệu

1.2. Giao thức HTTP

1.2.1. Giới thiệu HTTP

1.2.2. Lịch sử phát triển

1.2.3. Nguyên lý hoạt động của HTTP

1.2.4. Uniform Resource Locator (URL)

1.3. Giao thức TCP/IP

1.4. Giao thức HTTP 2

1.4.1. Giới thiệu HTTP 2

1.4.2. Nguyên lí hoạt động

1.4.3. Giới thiệu Socket

1.4.4. Nguyên lí hoạt động của Socket

1.4.5. Phân loại Socket

1.4.6. Giới thiệu Web Socket

1.4.7. Cấu trúc của Web Socket

1.4.8. Các thuộc tính của WebSocket

1.4.9. Các sự kiện WebSocket

1.4.10. Các phương thức của WebSocket

1.5. Giới thiệu MongoDB

1.5.1. Một số câu lệnh cơ bản trên MongoDB

1.5.2. Ưu điểm của MongoDB

1.5.3. Nhược điểm của MongoDB

1.5.4. Các ứng dụng cần MongoDB

1.6. Những ứng dụng nên viết bằng Nodejs

1.7. Cài đặt NodeJs

1.8. Giới thiệu Express

1.9. Cài đặt Express

1.10. Giới thiệu RestFul API

1.11. Đặc điểm của Resful API

1.12. Giới thiệu Angular

1.13. Các tính năng cơ bản

2. CHƯƠNG 2: KẾT HỢP NODEJS VỚI MONGODB

2.1. Cơ sở dữ liệu thời gian thực

2.1.1. Giới thiệu về cơ sở dữ liệu thời gian thực

2.1.2. So sánh cơ sở dữ liệu thời gian thực và cơ sở dữ liệu truyền thống

2.1.3. Một số ứng dụng

2.2. Sử dụng MongoDB như cơ sở dữ liệu thời gian thực với NodeJS

2.2.1. Thư viện SocketIO

2.2.2. So sánh MongoDb với Firebase

2.2.3. Sử dụng thư viện SocketIO xây dựng ứng dụng cơ sở dữ liệu thời gian thực

2.3. Thiết lập cấu hình

3. CHƯƠNG 3: THỬ NGHIỆM HỆ THỐNG

3.1. Phát biểu bài toán

3.2. Xác định yêu cầu của hệ thống

3.2.1. Yêu cầu phi chức năng

3.2.2. Yêu cầu chức năng

3.3. Xác định các tác nhân, các UC sử dụng và biểu đồ UC

3.3.1. Các UseCase sử dụng

3.3.2. Biểu đồ các use case

3.3.3. Biểu đồ use case tổng quát

3.3.4. Biểu đồ Use case đăng nhập

3.3.5. Biểu đồ use case quản lý lái xe

3.3.6. Biểu đồ use case quản lý đầu xe

3.3.7. Biểu đồ use case quản lý mooc xe

3.3.8. Biểu đồ use case quản lý tuyến đường

3.3.9. Biểu đồ use case quản lý lệnh điều xe

3.3.10. Biểu đồ use case quản lý điều khiển xe

3.4. Biểu đồ tuần tự

3.4.1. Biểu đồ tuần tự chức năng đăng nhập

3.4.2. Biểu đồ tuần tự cho chức năng thêm lái xe

3.4.3. Biểu đồ tuần tự cho chức năng sửa lái xe

3.4.4. Biểu đồ tuần tự cho chức năng xóa lái xe

3.4.5. Biểu đồ tuần tự cho chức năng thêm tuyến đường

3.4.6. Biểu đồ tuần tự cho chức năng sửa tuyến đường

3.4.7. Biểu đồ tuần tự cho chức năng xóa tuyến đường

3.4.8. Biểu đồ tuần tự cho chức năng thêm đầu xe

3.4.9. Biểu đồ tuần tự cho chức năng sửa đầu xe

3.4.10. Biểu đồ tuần tự cho chức năng xóa đầu xe

3.4.11. Biểu đồ tuần tự cho chức năng thêm mooc xe

3.4.12. Biểu đồ tuần tự cho chức năng sửa mooc xe

3.4.13. Biểu đồ tuần tự cho chức năng xóa mooc xe

3.4.14. Biểu đồ tuần tự cho chức năng thêm lệnh điều xe

3.4.15. Biểu đồ tuần tự cho chức năng sửa lệnh điều xe

3.4.16. Biểu đồ tuần tự cho chức năng xóa lệnh điều xe

3.4.17. Biểu đồ tuần tự cho chức năng thêm điều khiển xe

3.4.18. Biểu đồ tuần tự cho chức năng sửa điều khiển xe

3.4.19. Biểu đồ tuần tự cho chức năng xóa điều khiển xe

3.5. Xây dựng cơ sở dữ liệu

3.6. Giao diện chương trình

3.6.1. Giao diện danh sách đầu xe

3.6.2. Giao diện danh sách mooc xe

3.6.3. Giao diện danh sách lái xe

3.6.4. Giao diện danh sách tuyến đường

Tóm tắt

I. Giới thiệu

Trong bối cảnh công nghệ thông tin phát triển nhanh chóng, việc xây dựng hệ quản trị cơ sở dữ liệu thời gian thực trở thành một yêu cầu thiết yếu. Đề tài này tập trung vào việc kết hợp Node.jsMongoDB để phát triển một hệ thống quản lý dữ liệu hiệu quả. MongoDB là một cơ sở dữ liệu NoSQL mạnh mẽ, cho phép lưu trữ và truy xuất dữ liệu theo cách linh hoạt và nhanh chóng. Sự kết hợp này không chỉ giúp cải thiện hiệu suất mà còn tối ưu hóa chi phí vận hành. Việc sử dụng Node.js với khả năng xử lý bất đồng bộ giúp tăng tốc độ phản hồi của hệ thống, đáp ứng nhu cầu ngày càng cao của người dùng.

II. Kiến thức nền tảng

Chương này trình bày các kiến thức cơ bản về cơ sở dữ liệugiao thức HTTP. Cơ sở dữ liệu hướng tài liệu như MongoDB cho phép lưu trữ dữ liệu dưới dạng JSON, giúp việc truy cập và xử lý dữ liệu trở nên nhanh chóng và hiệu quả hơn so với các hệ quản trị cơ sở dữ liệu quan hệ. Giao thức HTTP đã được nâng cấp lên phiên bản 2.0, cho phép truyền tải dữ liệu hai chiều, điều này rất quan trọng trong việc phát triển các ứng dụng web hiện đại. Việc hiểu rõ về các giao thức và cơ sở dữ liệu là nền tảng để xây dựng hệ thống quản lý dữ liệu thời gian thực.

2.1 Cơ sở dữ liệu hướng tài liệu

Cơ sở dữ liệu hướng tài liệu cho phép lưu trữ dữ liệu một cách tự do, không theo một lược đồ cố định. Mỗi bản ghi có thể có cấu trúc khác nhau, điều này giúp cho việc mở rộng và thay đổi dữ liệu trở nên dễ dàng hơn. MongoDB là một ví dụ điển hình cho loại cơ sở dữ liệu này, với khả năng lưu trữ dữ liệu dưới dạng tài liệu JSON, giúp cho việc truy cập và xử lý dữ liệu trở nên nhanh chóng và hiệu quả.

2.2 Giao thức HTTP

Giao thức HTTP là một trong những giao thức chuẩn để trao đổi dữ liệu trên Internet. Phiên bản HTTP/2.0 đã cải thiện đáng kể tốc độ và hiệu suất truyền tải dữ liệu. Nguyên lý hoạt động của HTTP dựa trên mô hình Client-Server, nơi mà các yêu cầu từ client được gửi đến server và nhận phản hồi. Việc hiểu rõ về giao thức này là rất quan trọng trong việc phát triển các ứng dụng web hiện đại.

III. Kết hợp Node

Chương này trình bày chi tiết về việc kết hợp Node.js với MongoDB để xây dựng hệ quản trị cơ sở dữ liệu thời gian thực. Việc sử dụng Socket.IO cho phép tạo ra các ứng dụng có khả năng phản hồi nhanh chóng, giúp người dùng có trải nghiệm tốt hơn. Node.js với khả năng xử lý bất đồng bộ giúp tối ưu hóa hiệu suất của hệ thống, trong khi MongoDB cung cấp một nền tảng dữ liệu linh hoạt và mạnh mẽ. Sự kết hợp này không chỉ giúp cải thiện hiệu suất mà còn giảm thiểu chi phí phát triển và bảo trì hệ thống.

3.1 Sử dụng MongoDB như cơ sở dữ liệu thời gian thực

Việc sử dụng MongoDB như một cơ sở dữ liệu thời gian thực cho phép hệ thống xử lý dữ liệu nhanh chóng và hiệu quả. MongoDB hỗ trợ các thao tác CRUD (Create, Read, Update, Delete) một cách linh hoạt, giúp cho việc quản lý dữ liệu trở nên dễ dàng hơn. Sự kết hợp với Node.jsSocket.IO tạo ra một môi trường phát triển mạnh mẽ, cho phép xây dựng các ứng dụng web có khả năng phản hồi tức thì.

3.2 Thử nghiệm hệ thống

Chương này trình bày các thử nghiệm thực tế với hệ thống được xây dựng. Các bài toán quản lý xe công ten nơ được sử dụng để minh họa cho khả năng của hệ thống. Các biểu đồ use case và biểu đồ tuần tự được sử dụng để mô tả các chức năng của hệ thống, từ đó đánh giá hiệu suất và khả năng mở rộng của hệ thống trong thực tế.

01/02/2025

Trích đoạn nội dung tài liệu

Đặt vấn đề Các hệ thống phần mềm hiện nay đòi hỏi chạy trên đa nền tảng, hiệu quả, tương tác thân thiện với người dùng. Phần mềm phát triển trên nền Web là một trong những loại ứng dụng đáp ứng được các yêu cầu khắt khe đó. Tuy nhiên, các yếu tố quan trọng anh hướng đến hiệu năng của các ứng dụng Web là việc trao đổi dữ liệu dựa trên Internet và cụ thể là trên giao thức HTTP và xử lý dữ liệu trong các hệ quản trị cơ sở dữ liệu. Do khoa học phát triển, những hạn chế kể trên đã được khắc phục.

Giao thức HTTP đã được nâng cấp thành HTTP 2.0 truyền hai chiều (bidirection), các hệ quản trị cơ sở dữ liệu hướng đến xử lý dữ liệu theo thời gian thực, đặc biệt là sự ra đời cảu hệ quản trị cơ sở dữ liệu NoSQL (Not only SQL) đã cải thiện tốc độ xử lý dữ liệu đáng kể. Trong đó điển hình là hệ quản trị cơ sở dữ liệu MongoDB. MongoDB là một hệ quản trị cơ sở dữ liệu hướng tài liệu. Nghĩa là dữ liệu không chỉ chứa trong các bảng như cơ sở dữ liệu quan hệ mà được lưu trữ ở dạng JSON.

Điều này giúp cho việc truy cập và xử lý nhanh hơn rất nhiều so với các hệ quản trị cơ sở dữ liệu quan hệ. Trong chương này, khóa luận trình bày kiến thức nền tảng liên quan để làm cơ sở cho các nội dung tiếp theo 1. Cơ sở dữ liệu hướng tài liệu Cơ sở dữ liệu hướng tài liệu (Document Oriented Database) là cơ sở dữ liệu lưu trữ dữ liệu một cách tự do không theo một lược đồ nhất định. Mỗi bản ghi không cần phải có cấu trúc cố định, các bản ghi khách nhau có thể có nhiều cột khách nhau.

Loại dữ liệu trong mỗi cột bản ghi cũng có thể khác nhau. Một cột có thể có nhiều hơn một mảng và các bản ghi có thể có cấu trúc lồng nhau. Dữ liệu được đóng gói thành từng tài liệu, tài liệu có thể lưu dưới dạng JSON, XML, v. Ví dụ: { “_id”: ObjectId("5fe87df4ccac7508fc2c52a4") “name: “Roanldo” “position”: “striker” } <contact> 2 Tieu luan <firstname>Bob</firstname> <lastname>Smith</lastname> <phone type="Cell"> (123) 555-0178</phone> <phone type="Work"> (890) 555-0133</phone> <address> <type>Home</type> <street1>123 Back St.</street1> <city>Boys</city> <state>AR</state> <zip>32225</zip> <country>US</country> </address> </contact> Khi phát sinh việc chèn dữ liệu, tức là thêm một trường mới thì ta chỉ cần bổ sung một trường vào đối tượng JSON/XML là được chứ nó không cố định như số cột trong bảng của cơ sở dữ liệu quan hệ.

Một số hệ quản trị cơ sở dữ liệu hướng tài liệu như MongoDB, CouchDB, Elasticsearch, v. Giao thức HTTP 1.1 Giới thiệu HTTP Giao thức HTTP là một trong các giao thức chuẩn sử dụng để trao đổi dữ liệu trên Internet, giao thức này được dùng để trao đổi thông tin giữa bên cung cấp dịch vụ (Web server) và bên sử dụng dịch vụ (Web client) trong mô hình Client/Server. Giao thức HTTP là một giao thức thuộc tầng ứng dụng, nằm trên cặp giao thức tầng giao vận & tầng mạng là TCP/IP. Lịch sử phát triển  Giao thức HTTP và chuẩn HTML được Tim Berners-Lee đề xuất vào năm năm 1989 tại CERN và được các tổ chức IETF và World Wide Web Consortium (W3C) công nhận và đã công bố ra hàng loạt các phiên bản RFC (Request for Comments).

 Phiên bản đầu tiên của HTTP là HTTP v0.  Vào giữa thập niên 90, David Ragger đã tăng tính bảo mật, mở rộng các thẻ meta-rich decription và thêm các phương thức khác cung với các trường header nhằm mục đích biểu diễn được đa dạng các loại dữ liệu.  Giao thức HTTP từ lúc công bố đến nay đã trải qua nhiều phiên bản 1.3), đến ngày nay là phiên bản 2. 3 Tieu luan  HTTP/2 được công bố trong bản RFC 7540 vào tháng 7 năm 2015.

Nguyên lý hoạt động của HTTP Hình 1. 1: Nguyên lý hoạt động của HTTP Header: Chứa các thông tin về địa chỉ xuất phát của gói, địa chỉ đích đến và các thông tin như loại dữ liệu, dung lượng dữ liệu. Payload: Chứa các gói dữ liệu cần được truyền tải. Footer: Chứa các thông tin dùng để phát hiện và chỉnh sửa lỗi trong quá trình truyền.

Các hệ thống sử dụng giao thức HTTP hoạt động theo nguyên lý Client – Server. Theo nguyên lý này các thiết bị đóng vai trò làm máy khách (Client) sẽ gửi yêu cầu đến máy chủ (Server) và chờ đợi phản hồi thông tin từ máy chủ. Giao thức HTTP là một giao thức phi trạng thái (stateless protocol). Hay nói cách khác, yêu cầu hiện tại (request) không biết những gì đã xảy ra trong yêu cầu trước đó.

HTTP cho phép tạo các yêu cầu gửi và nhận các kiểu dữ liệu, do đó cho phép xây dựng hệ thống độc lập với dữ liệu được truyển. Uniform Resource Locator (URL) Một URL (Uniform Resource Locator) được sử dụng để xác định duy nhất một tài nguyên trên Web. Một URL có cấu trúc như sau: Protocol://hostname:port/path-and-file-name Trong một URL có 4 thành phần: - Protocol: giao thức tầng ứng dụng được sử dụng bởi client và server - Hostname: tên DNS domain - Port: Cổng TCP để server lắng nghe request từ client - Path-and-file-name: Tên và vị trí của tài nguyên yêu cầu 4 Tieu luan 1. Giao thức TCP/IP Hình 1.

2: Kiến trúc giao thức TCP/IP so với OSI Các giao thức được phân chia thành các tầng, Trong đó TCP/IP có 4 tầng mỗi tầng lại sử dụng các giao thức ở tầng dưới để đạt đc mục đích của mình.  Layer 1: Network Access Layer Network Access Layer: Quy ước về cách thức dữ liệu được gửi qua mạng bởi các thiết bị phần cứng trực tiếp giao tiếp với môi trường mạng, chẳng hạn như cáp đồng trục, cáp quang hay dây đồng xoắn đôi. Các giao thức bao gồm trong Network Access Layer là Ethernet, Token Ring, FDDI, X.25, Frame Relay…  Layer 2: Internet Layer Internet Layer: Đóng gói dữ liệu vào các gói chúng lại dưới dạng các gói tin thông giao thức Internet Protocol, chứa địa chỉ nguồn và đích (địa chỉ logic hoặc địa chỉ IP) được sử dụng để chuyển tiếp các gói tin giữa các máy chủ và qua các mạng. Mục đích của Transport Layer là cho phép các thiết bị trên máy chủ nguồn và đích đến trao đổi dữ liệu.

Transport Layer sẽ xác định mức độ service và trạng thái của kết nối được sử dụng khi vận chuyển dữ liệu.  Layer 3: Transport Layer Mục đích của Transport Layer là cho phép các thiết bị trên máy chủ nguồn và đích đến trao đổi dữ liệu với nhau. Service và trạng thái kết nối được sử dụng khi vận chuyển sẽ được Transport Layer xác định mức độ nào Khi dùng trình duyệt truy cập Web bạn sẽ thường gặp các thông báo lỗi khác nhau như sau: - Lỗi 404 hay Http 404 tức là lỗi không tồn tại địa chỉ bạn đang truy cập - Lỗi 401: lỗi này bạn truy cập vào nơi yêu cầu xác thực, nhưng không vượt qua được sẽ có lỗi này. 5 Tieu luan - Lỗi 500: lỗi này thường do Web server mà bạn truy cập bị lỗi nên không thể truy cập vào được.

- Ngoài ra Http 200 tức là bạn truy cập thành công. Giao thức HTTP 2. Giới thiệu HTTP 2.0 HTTP/2 là cuộc cách mạng giao thức truyền siêu văn bản (Hypertext Transfer Protocol) (HTTP) mới nhất tính đến thời điểm này. HTTP là giao thức mạng được sử dụng để yêu cầu và nhận page cùng dữ liệu trên môi trường World Wide Web.

Công nghệ mới này đang dần thay thế chuẩn HTTP/1.1 đã được sử dụng rộng rãi trong hơn hai thập kỷ gần đây 1. Nguyên lí hoạt động HTTP/1.1 đã ra đời gần 20 năm và với các ứng dụng web (web application) như hiện nay, giao thức này đang trở nên lạc hậu.0 ra đời với rất nhiều những nâng cấp. Ghép kênh (Multiplexed) HTTP có một vấn đề gọi là head-of-line blocking, chỉ có phép được thực hiện với mỗi kết nối.1 đã cố gắng giải quyết vấn đề này bằng các luồng song song (pipelining), nhưng không thể giải quyết triệt để (ví dụ một truy vấn mà bị lỗi không nhận được phản hồi sẽ làm gián đoạn toàn bộ các truy vấn tiếp theo). Hơn nữa, cơ chế luồng song song (pipelining) cũng rất phức tạp trong vận hành bởi vì cần phải xử lý các truy vấn thật cẩn thận mới đảm bảo được phản hồi tương ứng với truy vấn.

Client buộc phải sử dụng một cách chuẩn đoán để xác định cần gửi truy vấn nào vào kết nối nào. Vì thông thường, một trang web cần tới 10 (có thể hơn) các kết nối, nên hiệu suất có thể bị ảnh hưởng nghiêm trọng khi có những truy vấn lỗi. Multiplexing giải quyết vấn đề này bằng cách cho phép nhiều truy vấn và phản hồi cùng một lúc. Về phía client, chỉ cần một kết nối đến máy chủ là có thể tải toàn bộ dữ liệu cần thiết.

Chính cơ chế gửi và nhận dữ liệu của HTTP/2.0 giúp nó dễ dàng triển khai multiplexing.0 cho phép client và server chia nhỏ dữ liệu thành các frame hoàn toàn độc lập với nhau. Chúng có thể được gửi và nhận song song, xen kẽ nhau và ghép nối lại thành những thông điệp hoàn chỉnh tại đích đến. Điều này giúp việc gửi và nhận dữ liệu cực kỳ hiệu quả mà không hề gặp phải head-of- line blocking như HTTP/1.1 vì các frame hoàn toàn độc lập với nhau. 6 Tieu luan HTTP/2.0 sử dụng dữ liệu nhị phân Dữ liệu nhị phân rõ ràng là dữ liệu dễ xử lý nhất đối với máy tính.1 sử dụng dữ liệu dạng văn bản (Nó sẽ được mã hoá bởi máy tính, và tiếp tục được mã hoá ở những tầng dưới).

Dữ liệu nhị phân cho phép chúng ta phân tích nó dễ dàng hơn, nó dễ được nén hơn và quan trong nhất là nó không dư thừa. Dữ liệu dang văn bản của HTTP/1.1 thường xuyên có những thứ không cần thiết như dấu cách, các dấu xuống dòng… Cũng vì vậy với HTTP/2.0, chúng ta có một phương thức duy nhất để phân tích dữ liệu, trong khi HTTP/1.1 có tới 4 cách khác nhau.1 sử dụng văn bản nên một gói tin của nó chứa rất nhiều thông tin và bắt buộc phải sử dụng dấu xuống dòng để ngăn cách.0 thì hoàn toàn khác, mọi giao tiếp của client và máy chủ đều được chia thành các thông điệp và đơn vị truyền tin (frame), tất cả chúng đều là dữ liệu binary. Có nhiều loại frame khác nhau như HEADER, DATA, SETTINGS… Bằng việc sử dụng dữ liệu nhị phân, chúng ta có một số khái niệm sau trong giao tiếp HTTP/2.0  Stream: Một dòng dữ liệu hai chiều trong một kết nối, trong 1 stream có thể có nhiều thông điệp (message)  Message (thông điệp): Một chuỗi các frame (đơn vị truyền tin) có liên quan đến nhau để hoàn thành một truy vấn hoặc phản hồi.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Bài viết "Xây dựng hệ quản trị cơ sở dữ liệu thời gian thực với Node.js và MongoDB" cung cấp cái nhìn sâu sắc về cách thiết lập và quản lý một hệ thống cơ sở dữ liệu thời gian thực, sử dụng Node.js và MongoDB. Tác giả trình bày các bước cụ thể để xây dựng hệ thống, từ việc cài đặt môi trường phát triển đến việc tối ưu hóa hiệu suất. Đặc biệt, bài viết nhấn mạnh lợi ích của việc sử dụng MongoDB trong việc xử lý dữ liệu lớn và khả năng mở rộng của hệ thống, giúp người đọc hiểu rõ hơn về cách thức hoạt động của các ứng dụng hiện đại.

Nếu bạn muốn mở rộng kiến thức của mình về các chủ đề liên quan, hãy tham khảo bài viết Luận văn thạc sĩ khoa học máy tính xây dựng ứng dụng monocular full slam, nơi bạn có thể tìm hiểu về các ứng dụng trong lĩnh vực thị giác máy tính. Ngoài ra, bài viết Nghiên cứu xây dựng cloud storage và vpn trong điện toán đám mây sử dụng devstack luận văn thạc sĩ sẽ giúp bạn nắm bắt cách thức lưu trữ và bảo mật dữ liệu trong môi trường đám mây. Cuối cùng, bài viết Luận văn tốt nghiệp khoa học máy tính xây dựng hệ thống quản lý khóa học dựa trên moodle framework sẽ cung cấp thêm thông tin về việc phát triển các hệ thống quản lý học tập, một ứng dụng thực tiễn của công nghệ cơ sở dữ liệu. Những tài liệu này sẽ giúp bạn có cái nhìn toàn diện hơn về các ứng dụng công nghệ trong lĩnh vực cơ sở dữ liệu và phát triển phần mềm.