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). Show 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. 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:
Để 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 TitleBaiTapLon_MongoDb.ppt Copyright© © All Rights Reserved Available FormatsPDF, TXT or read online from Scribd Share this documentDid 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 CuriosityEverything you want to read. Anytime. Anywhere. Any device. No Commitment. Cancel anytime. 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
I. Khái quát công ngh ệ sử dụng1. Apache KafkaApache 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:
Cấu trúc của kafka bao gồm các thành phần chính sau:
1. Apache Sparka) Giới thiệuApache 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. Elasticsearcha) Giới thiệuElasticsearch 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
1. KibanaKibana 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ó:
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:
II. Xây dựng chương trình và h ệ thố ng2 Luồng dữ liệu của hệ thốngLuồng dữ liệu của hệ thống chúng em xây dựng gồm 4 quá trình:
2 .2 Quá trình th ực hiện2.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:
2.2 Crawl dữ liệuChú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 kafkaTiến hành tạo 2 topic “movie” và “actor” có 3 partition và 2 replication factor: 2.2 Thiết lập MongoDB clusterTạ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 sparkHệ 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: |