Bài tập lớn tìm hiểu lập trình mongodb năm 2024

MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) phổ biến được sử dụng trong các ứng dụng web và di động. Nó được phát triển bởi MongoDB Inc. và được xây dựng dựa trên mô hình lưu trữ dữ liệu JSON (JavaScript Object Notation).ột schema rất linh hoMongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) phổ biến được sử dụng trong các ứng dụng web và di động. Nó được phát triển bởi MongoDB Inc. và được xây dựng dựa trên mô hình lưu trữ dữ liệu JSON (JavaScript Object Notation).

MongoDB lưu trữ dữ liệu dưới dạng các tài liệu JSON (BSON - Binary JSON). Dữ liệu được tổ chức thành các bộ sưu tập (collections), tương tự như các bảng trong cơ sở dữ liệu quan hệ. Mỗi tài liệu trong bộ sưu tập là một đối tượng JSON độc lập, không cần tuân thủ cấu trúc cố định. MongoDB sử dụng một ngôn ngữ truy vấn linh hoạt để tìm kiếm và truy xuất dữ liệu. Bạn có thể sử dụng các truy vấn đơn giản hoặc truy vấn phức tạp để tìm kiếm dữ liệu theo các tiêu chí khác nhau. MongoDB cũng hỗ trợ các phép toán như thêm, sửa, xóa dữ liệu một cách dễ dàng. MongoDB có thể chạy trên một máy chủ đơn lẻ hoặc trong một môi trường phân tán. Bạn có thể cấu hình và quản lý các cụm máy chủ MongoDB để tăng khả năng chịu tải và đảm bảo sự tin cậy của hệ thống.

Tóm lại, MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ mạnh mẽ, linh hoạt và dễ sử dụng. Nó cung cấp các tính năng tìm kiếm mạnh mẽ, khả năng mở rộng cao và tích hợp tốt với nhiều ngôn ngữ lập trình. MongoDB là một lựa chọn tuyệt vời cho các ứng dụng web và di động có yêu cầu lưu trữ dữ liệu linh hoạt và mở rộng.

Bài tập lớn tìm hiểu lập trình mongodb năm 2024

Tài liệu hướng dẫn lập trình MongoDB nâng cao dành cho lập trình viên cung cấp những kiến thức và kỹ năng cần thiết để phát triển ứng dụng di động sử dụng MongoDB một cách chuyên sâu. Dưới đây là một số lợi ích của tài liệu này:

  • Nắm vững kiến thức MongoDB: Tài liệu sẽ giúp lập trình viên nắm vững các khái niệm cơ bản của MongoDB, bao gồm cách thức hoạt động của MongoDB, cấu trúc dự án, quản lý trạng thái ứng dụng và các thành phần UI.
  • Hiểu rõ về các thành phần và API của MongoDB: Tài liệu sẽ cung cấp hướng dẫn chi tiết về các thành phần và API cốt lõi của MongoDB như View, Text, StyleSheet, FlatList, AsyncStorage và nhiều hơn nữa. Bạn sẽ hiểu rõ cách sử dụng và tận dụng các thành phần và API này để xây dựng ứng dụng di động phức tạp.
  • Tiếp cận các kỹ thuật lập trình nâng cao: Tài liệu sẽ đưa ra các kỹ thuật lập trình nâng cao như quản lý trạng thái ứng dụng với Redux hoặc MobX, xử lý điều hướng và định tuyến, tương tác với các API ngoại vi như máy ảnh, GPS và các dịch vụ mạng, tối ưu hóa hiệu suất ứng dụng và kiểm thử tự động.
  • Hướng dẫn về quy trình phát triển và triển khai ứng dụng: Tài liệu sẽ cung cấp các quy trình phát triển và triển khai ứng dụng sử dụng MongoDB, bao gồm cách xây dựng và chạy ứng dụng trên các thiết bị di động, kiểm thử và gỡ lỗi, tối ưu hóa và triển khai ứng dụng lên các cửa hàng ứng dụng (App Store, Google Play).
  • Ví dụ và bài tập thực hành: Tài liệu cung cấp các ví dụ và bài tập thực hành giúp lập trình viên áp dụng những kiến thức đã học vào thực tế. Điều này giúp củng cố và nâng cao khả năng lập trình MongoDB của bạn.

Để tải về tài liệu miễn phí này và tận hưởng nguồn tài nguyên quý báu này, bạn có thể truy cập trang web Devwork.vn và khám phá thêm nhiều tài liệu và tài nguyên hữu ích khác cho việc phát triển phần mềm.

BaiTapLon MongoDb

0% found this document useful (0 votes)

223 views

32 pages

Bai tap lon Mongo DB Bai tap lon ve NoSQL

Original Title

BaiTapLon_MongoDb.ppt

Copyright

© © All Rights Reserved

Available Formats

PDF, TXT or read online from Scribd

Share this document

Did you find this document useful?

0% found this document useful (0 votes)

223 views32 pages

BaiTapLon MongoDb

Jump to Page

You are on page 1of 32

Reward Your Curiosity

Everything you want to read.

Anytime. Anywhere. Any device.

No Commitment. Cancel anytime.

Bài tập lớn tìm hiểu lập trình mongodb năm 2024

Lớp: 144943 Học phần: Lưu trữ và xử lý dữ liệu lớn Mã học phần: IT Giảng viên hướng dẫn: TS. Trần Việt Trung Danh sách thành viên nhóm: Họ và tên Mã số sinh viên Nguyễn Quốc Nhật Minh 20200408 Bùi Lâm Thanh 20204606 Trần Nhật Hoàng 20204559 Nguyễn Mạnh Dũng 20204730 Trần Quốc Anh 20204652 Hà N ội, 01/

Mục lục

  • LỜI NÓI ĐẦU
  • I. Khái quát công nghệ sử dụng
    • 1. Apache Kafka
    • 1. Apache Spark
      • a) Giới thiệu
      • b) Những ưu điểm nổi bật của Spark
    • 1. Elasticsearch
      • a) Giới thiệu
      • b) Ưu điểm của Elasticsearch
    • 1. Kibana
    • 1. MongoDB Cluster
      • a) Sơ lược về MongoDB
      • b) MongoDB Shard Cluster?
    • 1. Docker
      • a) Docker là gì?
      • b) Ưu điểm của Docker?
  • II. Xây dựng chương trình và hệ thống
    • 2 Luồng dữ liệu của hệ thống
    • 2 Quá trình thực hiện
      • 2.2 Khởi động Docker-compose.............................................................
      • 2.2 Crawl dữ liệu
      • 2.2 Tạo topic kafka
      • 2.2 Thiết lập MongoDB cluster
      • 2.2 Triển khai hệ thống với spark
      • 2.2 Biểu diễn dữ liệu bằng Kibana
  • III. Nhận xét , đánh giá và hướng phát triển
  • Tài liệu tham khảo

I. Khái quát công ngh ệ sử dụng

1. Apache Kafka

Apache Kafka là một kho dữ liệu phân tán được tối ưu hóa để thu nạp và xử lý dữ liệu truyền phát theo thời gian thực. Dữ liệu truyền phát là dữ liệu được tạo ra liên tục từ hàng nghìn nguồn dữ liệu khác nhau, các nguồn này thường gửi các bản ghi dữ liệu đồng thời. Nền tảng truyền phát cần phải xử lý luồng dữ liệu liên tục này và xử lý dữ liệu theo trình tự và tăng dần. Kafka cung cấp ba chức năng chính cho người dùng:

  • Xuất bản và đăng ký các luồng bản ghi
  • Lưu trữ hiệu quả các luồng bản ghi theo thứ tự tạo bản ghi
  • Xử lý các luồng bản ghi trong thời gian thực Kafka chủ yếu được dùng để xây dựng các quy trình dữ liệu truyền phát trong thời gian thực và các ứng dụng thích ứng với luồng dữ liệu đó. Kafka kết hợp nhắn tin, lưu trữ và xử lý luồng nhằm hỗ trợ hoạt động lưu trữ, phân tích cả dữ liệu lịch sử lẫn dữ liệu trong thời gian thực.

Cấu trúc của kafka bao gồm các thành phần chính sau:

  • Producer: Một producer có thể là bất kì ứng dụng nào có chức năng publish message vào một topic.
  • Messages: Messages đơn thuần là byte array và developer có thể sử dụng chúng để lưu bất kì object với bất kì format nào - thông thường là String, JSON và Avro.
  • Topic: Một topic là một category hoặc feed name nơi mà record được publish.
  • Partitions: Các topic được chia nhỏ vào các đoạn khác nhau, các đoạn này được gọi là partition
  • Consumer: Một consumer có thể là bất kì ứng dụng nào có chức năng subscribe vào một topic và tiêu thụ các tin nhắn.
  • Broker: Kafka cluster là một set các server, mỗi một set này được gọi là 1 broker.
  • Zookeeper: được dùng để quản lý và bố trí các broker.

1. Apache Spark

a) Giới thiệu

Apache Spark là một framework mã nguồn mở được sử dụng để xử lý dữ liệu trên quy mô lớn. Nó cung cấp một giao diện cho việc lập trình tính toán đồng thời trên các cụm máy tính với khả năng chịu lỗi. Khả năng tính toán phân tán của Apache Spark làm cho nó trở thành một công cụ phù hợp cho việc làm việc với dữ liệu lớn và Machine Learning. Spark giúp giải quyết những vấn đề liên quan đến việc tính toán trên các tập dữ liệu khổng lồ bằng cách loại bỏ một số khó khăn lập trình thông qua một API dễ sử dụng. Điều này giúp cho các nhà phát triển tập trung vào các công việc quan trọng hơn trong việc xử lý và tính toán trên dữ liệu phân tán.

Spark được đóng gói với các thư viện cấp cao, bao gồm hỗ trợ truy vấn SQL, truyền dữ liệu trực tuyến, học máy và xử lý đồ thị. Các thư viện tiêu chuẩn này làm tăng năng suất của nhà phát triển và có thể được kết hợp liền mạch để tạo ra các quy trình làm việc phức tạp.

1. Elasticsearch

a) Giới thiệu

Elasticsearch là một hệ thống tìm kiếm và phân tích dữ liệu phân tán mã nguồn mở, được xây dựng trên nền tảng Apache Lucene. Nó cung cấp một cách mạnh mẽ và linh hoạt để lưu trữ, tìm kiếm và phân tích dữ liệu trong quy mô lớn và thời gian thực. Elasticsearch hoạt động bằng cách lưu trữ dữ liệu vào các "nút" phân tán, tạo thành một cụm Elasticsearch. Mỗi nút chứa một phần của dữ liệu và có khả năng xử lý và tìm kiếm dữ liệu độc lập. Khi dữ liệu được thêm hoặc cập nhật, Elasticsearch tự động phân bổ và phân tán dữ liệu trên các nút, đảm bảo hiệu suất cao và khả năng mở rộng. Một trong những điểm mạnh chính của Elasticsearch là khả năng tìm kiếm nhanh chóng và chính xác. Nó sử dụng cơ chế tìm kiếm ngược (inverted index) dựa trên Apache Lucene, cho phép tìm kiếm dựa trên từ khóa, văn bản, phạm vi thời gian và nhiều tiêu chí khác. Elasticsearch cung cấp một API RESTful dễ sử dụng để truy vấn dữ liệu và trả về kết quả trong thời gian thực.

Ngoài tìm kiếm, Elasticsearch còn cung cấp các tính năng phân tích và khám phá dữ liệu mạnh mẽ. Với Elasticsearch, ta có thể thực hiện các tác vụ như tạo đồ thị, tạo bảng điều khiển, thống kê, phân loại, và phân tích các xu hướng dữ liệu. Nó hỗ trợ các công cụ và thư viện phổ biến như Kibana và Logstash, để tạo ra một giải pháp đầy đủ cho việc thu thập, xử lý và trực quan hóa dữ liệu.

b) Những ưu điểm nổi bật của Spark
  • Hiệu suất tìm kiếm và truy vấn nhanh chóng: Elasticsearch sử dụng cơ chế tìm kiếm ngược và phân tán dữ liệu để đảm bảo tìm kiếm và truy vấn dữ liệu nhanh chóng, kể cả với dữ liệu lớn.
  • Khả năng mở rộng: Elasticsearch có thể mở rộng dễ dàng bằng cách thêm nút vào cụm, giúp xử lý tải cao và mở rộng dữ liệu theo nhu cầu.
  • Phân tích và khám phá dữ liệu linh hoạt: Elasticsearch cung cấp các tính năng phân tích mạnh mẽ để tìm hiểu và khám phá dữ liệu, từ việc tạo biểu đồ đến phân loại và phân tích xu hướng.
  • Dễ dàng tích hợp: Elasticsearch có giao diện API RESTful dễ sử dụng, cho phép tích hợp dễ dàng với các ứng dụng và công cụ khác.
  • Cộng đồng rộng lớn: Elasticsearch là một dự án mã nguồn mở phát triển bởi một cộng đồng đông đảo, điều này đảm bảo có sự hỗ trợ, cải thiện và phát triển liên tục từ cộng đồng người dùng. Tóm lại, Elasticsearch là một hệ thống tìm kiếm và phân tích dữ liệu phân tán mạnh mẽ, cung cấp tốc độ tìm kiếm nhanh chóng, khả năng mở rộng, tính linh hoạt trong phân tích dữ liệu và tích hợp dễ dàng. Điều này làm cho Elasticsearch trở thành một công cụ quan trọng trong việc xử lý và tìm kiếm dữ liệu trong các ứng dụng từ việc giám sát hệ thống, phân tích log, tìm kiếm sản phẩm đến khám phá dữ liệu và nhiều ứng dụng khác.

1. Kibana

Kibana là một công cụ trực quan hóa và phân tích dữ liệu mã nguồn mở, được thiết kế để làm việc cùng với Elasticsearch. Nó cung cấp một giao diện người dùng đơn giản và mạnh mẽ để khám phá, trực quan hóa và chia sẻ thông tin từ dữ liệu được lưu trữ trong Elasticsearch. Nó cho phép ta tạo các biểu đồ, đồ thị, bảng điều khiển và báo cáo tùy chỉnh để hiểu rõ hơn về dữ liệu của mình. Bằng cách tương tác với dữ liệu trong Elasticsearch, ta có thể thực hiện các truy vấn, lọc dữ liệu, phân tích xu

MongoDB lần đầu ra đời bởi MongoDB Inc., tại thời điểm đó là thế hệ 10, vào tháng Mười năm 2007, nó là một phần của sản phẩm PaaS (Platform as a Service) tương tự như Windows Azure và Google App Engine. Sau đó nó đã được chuyển thành nguồn mở từ năm 2009. MongoDB đã trở thành một trong những NoSQL database nổi trội nhất bấy giờ, được dùng làm backend cho rất nhiều website như eBay, SourceForge và The New York Times. Các feature của MongoDB gồm có:

  • Query: hỗ trợ search bằng field, các phép search thông thường, regular expression searches, và range queries.
  • Indexing: bất kì field nào trong BSON document cũng có thể được index.
  • Replication: có ý nghĩa là “nhân bản”, là có một phiên bản giống hệt phiên bản đang tồn tại, đang sử dụng. Với cơ sở dữ liệu, nhu cầu lưu trữ lớn, đòi hỏi cơ sở dữ liệu toàn vẹn, không bị mất mát trước những sự cố ngoài dự đoán là rất cao. Vì vậy, người ta nghĩ ra khái niệm “nhân bản”, tạo một phiên bản cơ sở dữ liệu giống hệt cơ sở dữ liệu đang tồn tại, và lưu trữ ở một nơi khác, đề phòng có sự cố.
  • Aggregation: Các Aggregation operation xử lý các bản ghi dữ liệu và trả về kết quả đã được tính toán. Các phép toán tập hợp nhóm các giá trị từ nhiều Document lại với nhau, và có thể thực hiện nhiều phép toán đa dạng trên dữ liệu đã được nhóm đó để trả về một kết quả duy nhất. Trong SQL, count(*) và GROUP BY là tương đương với Aggregation trong MongoDB.
  • Lưu trữ file: MongoDB được dùng như một hệ thống file tận dụng những function trên và hoạt động như một cách phân phối qua sharding.
b) MongoDB Shard Cluster?

MongoDB Shard Cluster là một kiểu triển khai MongoDB được thiết kế để mở rộng khả năng chịu tải của hệ thống cơ sở dữ liệu MongoDB bằng cách phân chia dữ liệu và phân phối chúng trên nhiều máy chủ (shard). Cụ thể, mục tiêu của MongoDB Shard Cluster là tăng cường khả năng mở rộng ngang của hệ thống, cho phép xử lý lượng dữ liệu lớn và cung cấp hiệu suất cao. Dưới đây là một số thành phần của MongoDB Shard Cluster:

  • Mongos: Đây thực ra là một query router, cung cấp một giao diện tương tác giữa ứng dụng và các sharded cluster.
  • Mongod: Nó xử lý các yêu cầu dữ liệu, quản lý quyền truy cập dữ liệu và thực hiện các hoạt động quản lý nền
  • Shard: Mỗi shard chứa đựng một tập nhỏ các data đã sharded, từ phiên bản 3 trở lên, shards phải được cấu hình chạy replicaset nếu muốn trở thành một phần của cluster.
  • Config server: Config server chứa đựng metadata và cấu hình cho cluster, từ phiên bản 3 trở lên config server phải deploy dưới dạng replicaset.
  • Replicaset (Primary, secondary): Một replica set trong MongoDB là một nhóm các tiến trình của mongodb duy trì cùng một bộ dữ liệu. Các replica
  • Môi trường chạy và kh ả năng mở rộng: Bạn có thể chia nhỏ những chức năng của ứng dụng thành các container riêng lẻ. Ví dụng Database chạy trên một container và Redis cache có thể chạy trên một container khác trong khi ứng dụng Node lại chạy trên một cái khác nữa. Với Docker, rất dễ để liên kết các container với nhau để tạo thành một ứng dụng, làm cho nó dễ dàng scale, update các thành phần độc lập với nhau.

II. Xây dựng chương trình và h ệ thố ng

2 Luồng dữ liệu của hệ thống

Luồng dữ liệu của hệ thống chúng em xây dựng gồm 4 quá trình:

  • Thu thập dữ liệu trên website The Movie Database.
  • Lưu dữ liệu vào Kafka.
  • Lọc, làm sạch dữ liệu trên Kafka bằng Spark. Sau đó lưu thành 2 bản: 1 bản lưu trên MongoDB, 1 bản lưu gửi vào Elasticsearch.
  • Biểu diễn dữ liệu trên Elasticsearch dưới dạng biểu đồ, đồ thị, danh sách bảng sử dụng Kibana.

2 .2 Quá trình th ực hiện

2.2 Khởi động Docker-compose.............................................................

STT Tên container Image Ports Ghi chú 1 spark-master bitnami/spark:3. 4040: 6066: 7077: 8080: Mã nguồn chương trình được mount vào bên trong spark-master để submit do lỗi gặp phải khi submit job từ local machine. 2 spark-worker- 1 bitnami/spark:3.2 8081: 3 spark-worker- 2 bitnami/spark:3.2 8082:

  • Router_mongos: Query router, chịu trách nhiệm định tuyến tới các shard phù hợp.
  • Shard1svr1, shard1svr2, shard1svr3, shard2svr1, shard2svr2, shard2svr3: Các shard server dùng để lưu trữ dữ liệu.
2.2 Crawl dữ liệu

Chúng em sử dụng API của trang web The Movie Database để crawl dữ liệu về các bộ phim. Đây là một dự án cộng đồng lớn được phát triển bởi cộng đồng người hâm mộ phim, cung cấp thông tin chi tiết về phim, bao gồm các bộ phim truyền hình, bộ phim ngắn, và nhiều loại nội dung khác.

2.2 Tạo topic kafka

Tiến hành tạo 2 topic “movie” và “actor” có 3 partition và 2 replication factor:

2.2 Thiết lập MongoDB cluster

Tạo các ReplicaSet cfgsvr, shard1, shard2:

Thêm các shard vào cluster Tạo schema và shard collection

Dữ liệu trong database:

Explain query:

2.2 Triển khai hệ thống với spark

Hệ thống bao gồm 2 producer và 2 consumer cho dữ liệu movie và actor. Producer sẽ crawl liên tục và đẩy các message vào 2 topic movie và actor của kafka. Các consumer sẽ liên tục lắng nghe, nhận dữ liệu và xử lý chúng. Spark cluster gồm 2 worker như hình dưới: