1. Trang chủ
  2. » Cao đẳng - Đại học

ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)

52 12 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 52
Dung lượng 1,16 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đồng thời Photome cũng là một mạng xã hội hình ảnh dùng để giải trí hướng đến những người yêu thích chụp ảnh…  Hình thức phát triển: App mobile  Công nghệ sử dụng: + Frontend: React

Trang 1

1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

ĐỒ ÁN 1 MẠNG XÃ HỘI PHOTOME DÀNH CHO THỢ CHỤP ẢNH VÀ NGƯỜI CÓ NHU CẦU CHỤP

ẢNH, MẪU ẢNH

Giảng viên hướng dẫn: TH.S NGUYỄN CÔNG HOAN

Sinh viên thực hiện: HÀ NHẬT LINH – MSV: 18520086

PHẠM VŨ LÊ MINH – MSV: 18520103

Tp Hồ Chí Minh, Tháng 7 năm 2021

Trang 2

2

Trang 3

LỜI NÓI ĐẦU

Tài liệu này được tạo ra bởi yêu cầu của lớp SE121.L21, Trường Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh, học kỳ II năm học 2020-

2021

Báo cáo này bao gồm các thông tin từ việc khảo sát và tham khảo các nền tảng mạng xã hội, các tài liệu thiết kế và đặc tả của phần mềm mạng xã hội bao gồm các sơ đồ Use-case, các thực hiện hóa cơ sở dữ liệu, giao diện…

Cách đọc tài liệu: Nội dung tài liệu được đưa vào các mục, và được đánh số thứ tự

từ trên xuống, chi tiết xem thêm tại mục lục

Chúng em cảm ơn thầy Nguyễn Công Hoan đã hỗ trợ và hướng dẫn để nhóm có thể hoàn thành tốt đồ án

Trang 4

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

Người nhận xét (Ký tên và ghi rõ họ tên)

Trang 6

2.4 Các khái niệm cơ bản 20

4.3 Lợi ích sử dụng firebase và lý do sử dụng firebase vào việc lưu trữ ảnh 25

Trang 8

I GIỚI THIỆU BÀI TOÁN CẦN GIẢI QUYẾT, MÔ TẢ QUY TRÌNH THỰC

HIỆN CÁC CÔNG VIỆC CHÍNH

 Xây dựng một mạng xã hội cho thợ chụp ảnh, mẫu ảnh và người có nhu cầu chụp ảnh

 Xác định đối tượng hướng đến:

Người dùng: Thợ chụp ảnh, mẫu ảnh, người sở hữu mẫu ảnh, người có nhu cầu chụp ảnh, người có niềm đam mê với nhiếp ảnh

 Mục đích: Tạo ra một môi trường nhiếp ảnh hiện đại Ở đó mọi người có thể tập chung vào nhiếp ảnh Tạo điều kiện thuận lợi nhất để mọi người có thể tìm kiếm cơ hội của mình, liên lạc và cộng tác cùng nhau thông qua mạng xã hội Photome Đồng thời Photome cũng là một mạng xã hội hình ảnh dùng để giải trí hướng đến những người yêu thích chụp ảnh…

 Hình thức phát triển: App mobile

 Công nghệ sử dụng:

+ Frontend: React Native + Backend: NodeJS, Express, MongoDB, Firebase

Hiện tại các hoạt động chụp ảnh, nhiếp ảnh đều là các hình thức tự phát, không có

sự gắn kết giữa những người yêu thích với nhau lại thành một cộng đồng lớn Hay nếu có gắn kết thông qua một mạng xã hội lớn nào khác, thì các hoạt động nhiếp ảnh sẻ bị pha loãng bởi tính chất mạng xã hội đa phương tiện Những người dùng yêu chụp ảnh và có nhu cầu về chụp ảnh khó có thể sàng lọc các đối tượng trên những trang mạng xã hội lớn đồng thời bị những vấn đề khác gây loãng kết quả

Có một số ứng dụng mạng xã hội cho nhiếp ảnh gia đã được phát triển, nhằm tạo không gian cho những người yêu thích chụp ảnh Tuy nhiên những ứng dụng này chỉ dừng lại ở việc chia sẻ ảnh và tạo sự gắn kết giữa cộng đồng người chụp ảnh, chứ chưa tạo được

sự phân hóa và nhu cầu của những thực thể trong mạng xã hội

Trang 9

Nắm bắt được yêu cầu đó Những người dùng cần có những bức ảnh đẹp Chụp ảnh không chỉ là để vui mà nó còn là một nghề nghiệp Tạo thêm nhiều công việc cho những mẫu ảnh bán chuyên và chuyên nghiệp Cũng như tạo được không gian nhiếp ảnh lành mạnh Chúng em đã thống nhất chọn đề tài Photome mạng xã hội cho thợ chụp ảnh, mẫu ảnh và người có nhu cầu chụp ảnh

App được xây dựng bao gồm các nội dung cơ bản:

 Tạo tài khoản cá nhân, profile cho cá nhân để giới thiệu bản thân (như CV)

 Up các bài đăng của mình(Ảnh và các status trạng thái)

 Tương tác (like , comment ) với các bài viết của người khác

 Tìm kiếm những người dùng khác nhằm liên lạc hay follow

 Xem thông báo những người đã thực hiện tương tác với bài viết của mình

 Xem các bài viết, đăng ngẫu nhiên trong trang home và từ đó nhận biết được những bài viết, người dùng cần để ý

Các bước xây dựng App mobile:

 Xác định yêu cầu, mô hình hoá

Trang 10

II CÔNG NGHỆ

1 React Native

1.1 Khái niệm React Native

Được phát triển bởi Facebook, React Native là một framework hướng đến phát triển ứng dụng di động đa nền tảng

Với sự trợ giúp của React Native, lập trình viên (developer) có thể sử dụng JavaScript

để tạo ra mobile apps (ứng dụng di động) hỗ trợ cho cả nền tảng Android và iOS

Instagram, Facebook, Skype,… là những ứng dụng nổi bật sử dụng React Native

1.2.1 Hiệu suất tuyệt vời

React native có thể không nhanh như các ứng dụng gốc thực sự được xây dựng bằng các ngôn ngữ quen thuộc như Java, Objective-C và C # Tuy nhiên, bạn sẽ có được hiệu suất gần như ngôn ngữ đấy vì nó cung cấp cho bạn các thành phần gốc, Chế độ xem và Văn bản

Ứng dụng dành cho thiết bị di động dựa trên React Native không phải là ứng dụng web HTML5, hybrid hoặc di động Thay vào đó, nó là một ứng dụng di động thực sự

Bạn có thể nâng hiệu suất ứng dụng React Native của mình lên một tầm cao mới bằng cách tối ưu hóa ứng dụng của bạn bằng mã gốc Có, React Native cũng cho phép bạn sử dụng

mã gốc Để có hiệu suất tối đa, bạn có thể xây dựng một số tính năng trong ứng dụng của mình bằng mã gốc và một số tính năng với React Native

1.2.2 Giao diện người dùng phong phú

React Native cho phép bạn tạo các UI độc đáo, bắt mắt thông qua các thành phần khai báo được xây dựng sẵn, chẳng hạn như Picker, Nút, Thanh trượt, Chuyển đổi, v.v Bạn cũng

có thể tạo các thành phần của riêng bạn với TouchableNativeFeedback và TouchableOpacity

Có nhiều thành phần dành riêng cho iOS và Android có sẵn để giúp thiết bị hoạt động hiệu quả trên điện thoại di động Android và iOS

Trang 11

1.2.3 Phát triển ứng dụng nhanh

React Native cung cấp cho bạn các thành phần cho văn bản, hình ảnh, đầu vào bàn phím, danh sách có thể cuộn, thanh tiến trình, hình động, bảng tạm, liên kết, v.v Các thành phần này tăng tốc đáng kể quá trình phát triển ứng dụng và tính năng Tải lại nóng cũng giúp bạn tiết kiệm rất nhiều thời gian vì nó cho phép bạn tải lại ứng dụng của mình mà không cần biên dịch lại toàn bộ mã

Phản ứng thư viện bản địa như Redux (để xử lý trạng thái ứng dụng của bạn) và Phản ứng tuyệt vời bản địa (danh sách các thành phần và bản trình diễn) cũng sẽ giúp bạn hoàn thành công việc phát triển ứng dụng di động của mình nhanh hơn

Công cụ phát triển như Hạt nhân để viết mã, Yoga để xây dựng bố trí, Lính gác để theo dõi lỗi và sự cố, và Công cụ phát triển React để gỡ lỗi làm cho quá trình phát triển React Native dễ dàng hơn và nhanh hơn rất nhiều Các công cụ React Native tuyệt vời khác bao gồm

Mã VS, Đốt cháy, Hội chợ triển lãm, và Bugsnag

1.2.4 Phát triển đa nền tảng

Mã một lần, sử dụng nó ở khắp mọi nơi Tiết kiệm thời gian và tiền bạc bằng cách xây

Trang 12

dựng các ứng dụng đa nền tảng Nhưng hãy nhớ rằng bạn vẫn cần thực hiện một số điều chỉnh dành riêng cho nền tảng

1.2.5 Hỗ trợ cộng đồng mạnh mẽ

Hơn 2.000 người đóng góp với hơn 85.000 ngôi sao trên GitHub

Các công ty như Callstack, Biệt thự phần mềm, Microsoft, và Màu đỏ vô hạn đã đóng góp cho khuôn khổ này Bạn sẽ tìm thấy rất nhiều thành phần và thư viện React Native được tạo bởi cộng đồng các nhà phát triển trên các trang web như Mã thông báo và Thư mục gốc

Nhận trợ giúp về StackOverflow, Reddit hoặc là Bộ giải mã Bạn luôn luôn tìm người giúp bạn Bạn cũng có thể nhận được sự giúp đỡ từ Cộng đồng bất hòa Reactiflux, các Phản ứng nhóm Facebook gốc, và Phản ứng cộng đồng Spectrum bản địa

1.2.6 Dễ học

Các tài liệu chính thức thân thiện với người mới bắt đầu và có ví dụ mã Bên cạnh các

Trang 13

tài liệu chính thức, bạn cũng có thể thử các cách sau để có được thực hành

1.3.1 Kiến trúc cũ

Thực chất, React Native là một giải pháp platform-agnostic (không phụ thuộc nền tảng) Trong phạm vi này, mục tiêu chính của framework là cho phép các developer viết code bằng Javascript với ReactJS trong khi ở bên dưới React Native sử dụng các cơ chế riêng của

nó để biên dịch các React Element để phía hệ điều hành có thể hiểu được Điều này có nghĩa là:

- Hiển thị chính xác giao diện người dùng

- Khả năng truy cập đến các thành phần native của hệ điều hành

Thông thường, đối với hệ điều hành Android/iOS, cơ chế hoạt động sẽ như sau:

Có 3 luồng chạy song song và riêng biệt trong mỗi ứng dụng React Native:

● JS thread: là nơi tất cả code Javascript được đọc và biên dịch, nơi xử lý hầu hết các logic nghiệp vụ của ứng dụng Metro sẽ đóng gói tất cả code Javascript thành một file duy nhất Phần code này sẽ được chuyển tới công cụ JavascriptCore (JSC) để có thể chạy được

Trang 14

● Native thread: là nơi xử lý code native Nó giao tiếp với JS Thread bất cứ khi nào có nhu cầu cần thay đổi UI hoặc truy cập các hàm native Chúng ta có thể chia Native Thread thành Native UI và Native Modules Tất cả các Native Modules đều được khởi động khi chúng ta sử dụng ứng dụng Điều đó có nghĩa là module Bluetooth sẽ luôn luôn ở trạng thái kích hoạt bởi React Native kể cả khi không có nhu cầu sử dụng

● Shadow Thread: là nơi các layout sẽ được tính toán Nó sử dụng Layout Engine riêng của Facebook được gọi là Yoga nhằm tính toán flexbox layout, sau đó gửi kết quả về phía Native UI

Để giao tiếp giữa JS thread và Native thread chúng ta sẽ sử dụng một Bridge Phía bên dưới, Module C++ này hầu hết được xây dựng xung quanh bằng một hàng đợi bất đồng bộ (asynchronous queue) Bất cứ khi nào nó nhận được dữ liệu từ một trong hai phía (JS thread hoặc Native thread), nó sẽ tuần tự hóa dữ liệu dưới dạng JSON và chuyển nó qua hàng đợi, cuối cùng được giải mã khi nó tới nơi

Điều này có nghĩa là tất cả các thread đều dựa trên chuỗi tín hiệu JSON được truyền bất đồng bộ qua Bridge, và chúng sẽ được gửi tới một trong hai phía với mong muốn (nhưng không chắc là đảm bảo) sẽ nhận được phản hồi trong tương lai Bạn cũng có thể sẽ gặp phải vấn đề tắc nghẽn thông tin và không nhận được phản hồi

Một ví dụ phổ biến cho biết lý do tại sao điều này lại tạo ra các vấn đề về hiệu suất khi được nhìn thấy khi cuộn một danh sách dữ liệu lớn: Bất cứ khi nào sự kiện onScroll xảy ra trên Native thread, thông tin sẽ được gửi không đồng bộ đến JS thread, nhưng Native thread không chờ JS thread thực hiện xong mà nó lại gửi trở lại theo cách khác Điều này tạo ra một

sự delay, sẽ có một khoảng trống trước khi thông tin xuất hiện trên màn hình

Tương tự như vậy, việc tính toán hiển thị layout cần phải trải qua nhiều vòng trước khi nó

có thể được hiển thị trên màn hình, vì nó cần phải đi qua Yoga engine trước khi có thể được tính bởi Native thread và tất nhiên chúng cũng sẽ phải đi qua Bridge để tới JS Thread

Trang 15

Chúng ta có thể nhận thấy cách gửi dữ liệu JSON một cách bất đồng bộ sẽ tạo ra vấn đề

về hiệu suất Nhưng còn cách nào khác để Javascript của chúng ta giao tiếp với Native code? Đây là nơi JSI phát huy tác dụng

1.3.2 Kiến trúc mới

Việc tái kiến trúc của React Native sẽ dần loại bỏ Bridge và thay thế nó bằng một thành phần mới có tên là Javascript Interface (JSI)

JSI có một vài cải tiến mới rất thú vị, đầu tiên là JS bundle không còn phụ thuộc vào

JS core nữa Nói cách khác, JSC engine giờ đây có thể dễ dàng hoán đổi với các JavaScript engine khác - có khả năng hoạt động tốt hơn - như Chrome Engine V8 chẳng hạn

Cải tiến thứ hai của kiến trúc mới này là Bằng cách sử dụng JSI, JavaScript có thể giữ tham chiếu đến C++ Host Object và truy cập phương thức trên chúng Từ đó JavaScript và các thành phần Native sẽ nhận thức và giao tiếp được lẫn nhau

Nói cách khác, JSI sẽ cho phép khả năng tương tác hoàn toàn giữa tất cả các thread Với khái niệm chia sẻ quyền sở hữu (shared ownership), code JavaScript có thể giao tiếp với các thành phần Native trực tiếp từ JS thread và bỏ qua việc tuần tự hóa thông điệp dạng JSON giữa các thành phần, loại bỏ tất cả các vấn đề tắc nghẽn và bất đồng bộ trên Bridge

Trang 16

Ngoài việc cải thiện đáng kể hiệu suất giao tiếp giữa các thread với nhau, kiến trúc mới này cũng cho phép kiểm soát trực tiếp các Native modules Có nghĩa là chúng ta hoàn toàn có thể sử dụng các Native modules khi chúng ta cần chúng, không cần kích hoạt tất cả khi khởi chạy ứng dụng Điều này mang lại sự cải thiện hiệu suất hết sức rõ rệt

Cơ chế mới này có khả năng linh hoạt, cũng có thể có lợi cho nhiều trường hợp sử dụng khác nhau Chẳng hạn như bây giờ chúng ta có sức mạnh của C++ trong tay, thật dễ dàng để thấy React Native có thể được sử dụng trong một hệ thống rất lớn

Trang 17

1.4 Mô tả tổng quát codebase

1.4.1 Firebase

Thư mục này chứa firebase config và các hàm để liên kết với filebase và hỗ trợ đăng ảnh lên firebase

Trang 18

1.4.2 Server

Thư mục này chứa tất cả các API , Schema và các file config kết nối cơ sở dữ liệu Mongodb

● Các API để thực hiện truy xuất và các thao tác cần thiết với database

● Schema để quy định và cấu trúc định dạng database cần lưu

● Các file config để hỗ trợ việc kết nối với mongodb

1.4.3 SRC

Thư mục này bao gồm:

● Asset chứa tất cả image và font cần thiết cho ứng dụng

● Các components, screen, để tạo frontend hình dạng chính của các màn hình và các hàm

xử lý dữ liệu ở trong

● Navigations dùng để điều hướng các màn hình

● Styles để quy định format của một đối tượng cụ thể

2 Mongodb

MongoDB (bắt nguồn từ “humongous”) là một hệ cơ sở dữ liệu NoSQL mã nguồn mở

Thay cho việc lưu trữ dữ liệu vào các bảng có quan hệ với nhau như truyền thống, MongoDB lưu các dữ liệu cấu trúc dưới dạng giống với JSON(JavaScript Object Notation) và gọi tên là BSON Dự án được bắt đầu triển khai vào tháng 10 năm 2007 bởi 10gen trong khi công ty này đang xây dựng một nền tảng như là dịch vụ (Platform as a Service) giống như Google App Engine Phải đến năm 2009, dự án này được tách độc lập Hệ thống có thể chạy trên Windows, Linux, OS X và Solaris Nó được một số tổ chức sử dụng trong thực tế như:

Craigslist : Công ty làm việc trong lịch vực môi giới quảng cáo trên các website khác (giống adMicro của Việt Nam) MongoDB giúp cho công ty này quản lý hàng tỉ các bản ghi quảng cáo thuận tiện và nhanh chóng

Foursquare là một mạng xã hội gắn các thông tin địa lý Công ty này cần lưu dữ liệu của rất rất nhiều vị trí của các địa điểm như quán cafe, nhà hàng, điểm giải trí, lịch sử, … và

Trang 19

ghi lại những nơi mà người sử dụng đã đi qua

CERN : Trung tâm nghiên cứu năng lượng nguyên tử của Châu Âu, sử dụng MongoDB

để lưu trữ lại các kết quả, dữ liệu thí nghiệm của mình Đây là một lượng dữ liệu khổng lồ sẽ dùng để sử dụng trong tương lai

MTV Networks, Disney Interactive Media Group, bit.ly, The New York Times, The Guardian, SourceForge, Barclays, …

2.2 Khái niệm Mongodb:

2.2.1 Mongodb là gì:

MongoDB là một chương trình cơ sở dữ liệu mã nguồn mở được thiết kế theo kiểu hướng đối tượng trong đó các bảng được cấu trúc một cách linh hoạt cho phép các dữ liệu lưu trên bảng không cần phải tuân theo một dạng cấu trúc nhất định nào Chinh do cấu trúc linh hoạt này nên MongoDB có thể được dùng để lưu trữ các dữ liệu có cấu trúc phức tạp và đa dạng và không cố định (hay còn gọi là Big Data)

Tuy nhiên khi đưa ra định nghĩa như ở trên tôi đã sử dụng khái niệm bảng trong các cơ

sở dữ liệu có quan hệ để bạn có thể dễ hiểu Trên thực tế thì MongoDB sử dụng thuật ngữ khác là collection hay bộ sưu tập thay vì bảng Các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server ) sử dụng các bảng để lưu dữ liệu Các bảng này được cấu trúc với một số lượng cột (column) nhất định và các cột này cũng được định nghĩa với kiểu dữ liệu nhất định Ngược lại MongoDB lưu document (hay tài liệu tương tự như các record trong MySQL hay SQL Server) vào các collection với định dạng JSON hay Javascript Object Notation Do đó khi truy vấn dữ liệu hay cập nhật dữ liệu của document trong MongoDB chúng ta sử dụng cú pháp theo kiểu hướng đối tượng

2.2.2 Kiến trúc tổng quát

Một MongoDB Server sẽ chứa nhiều database Mỗi database lại chứa một hoặc nhiều collection Đây là một tập các documents, về mặt logic thì chúng gần tương tự như các table trong CSDL quan hệ Tuy nhiên, điểm hay ở đây là ta không cần phải định nghĩa trước cấu

Trang 20

trúc của dữ liệu trước khi thao tác thêm, sửa dữ liệu… Một document là một đơn vị dữ liệu – một bản ghi (không lớn hơn 16MB) Mỗi chúng lại chứa một tập các trước hoặc các cặp key – value Key là một chuỗi ký tự, dùng để truy xuất giá trị dạng : string, integer, double, …

Cấu trúc có vẻ khá giống JSON, tuy nhiên, khi lưu trữ document này ra database, MongoDB sẽ serialize dữ liệu thành một dạng mã hóa nhị phân đặc biệt – BSON Ưu điểm của BSON là hiệu quả hơn các dạng format trung gian như XML hay JSON cả hệ tiêu thụ bộ nhớ lẫn hiệu năng xử lý BSON hỗ trợ toàn bộ dạng dữ liệu mà JSON hỗ trợ (string, integer, double, Boolean, array, object, null) và thêm một số dạng dữ liệu đặc biệt như regular expression, object ID, date, binary, code

Trang 21

2.3 Chức năng, vai trò của Mongodb

2.3.1 Chức năng:

● Truy vấn: Đây được xem là tính năng tốt nhất của MongoDB Nó có tác dụng giúp các trường truy vấn phạm vi, kết hợp cùng việc tìm kiếm biểu thức nhằm trả về kết quả tài liệu cụ thể với kích thước nhất định Ngoài ra, các trường dùng trong MongoDB còn được dùng để lập chỉ mục chính, phụ

● Lưu trữ tệp: Khi tìm hiểu hệ cơ sở dữ liệu MongoDB thì bạn sẽ thấy, tính năng lưu trữ tệp được dùng như một hệ thống tệp (gọi là GridFS) đóng vai trò cân bằng tải, đồng thời, sao chép dữ liệu trên nhiều máy tính Cụ thể, GridFS chia một tệp ra làm nhiều phần và lưu trữ thành các tài liệu riêng biệt Sau đó, người dùng dễ dàng truy cập GridFS thông qua Mongofiles hay các plugin sử dụng cho Nginx và Lighttpd

● Tập hợp: Tính năng này chính là chương trình mang đến ba giải pháp để thực hiện tập hợp gồm Aggregation Pipeline, Mapreduce và Single-purpose Aggregation Trong đó, Aggregation Pipeline được đánh giá là có hiệu suất tốt nhất

● Nhân rộng: MongoDB cung cấp Replica Set cho phép nhân 2 hoặc nhiều bản sao của dữ liệu Đồng thời, mỗi bản sao lại đóng vai trò chính và phụ

- Khi nhân rộng, toàn bộ dữ liệu khi ghi và đọc được thực hiện trên bản sao chính

- Bản sao thứ cấp sẽ dùng bản sao tích hợp để có thể duy trì các bản sao dữ liệu

Trang 22

Trong trường hợp có bất kỳ bản sao chính nào bị thất bại thì Replica set sẽ chọn một bản

sao thứ cấp để thay thế làm bản sao chính tiếp theo Trong quá trình nhân rộng, Replica thứ cấp được tùy ý chọn các hoạt động nhưng dữ liệu cuối cùng vẫn phải tuân theo mặc định

● Cân bằng tải: MongoDB sử dụng Sharding nhằm chia tỷ lệ theo chiều ngang và xác định dữ liệu phân phối trong collection Điều này giúp người dùng có thể chọn một Shard key

Nói tóm lại, MongoDB cân bằng tải bằng cách dựa vào các Shard key để chia dữ liệu

thành các phạm vi và phân phối đồng đều Chúng có thể chạy trên nhiều máy chủ khác nhau và thực hiện chức năng sao chép dữ liệu hay cân bằng tải nhằm giữ hệ thống hoạt động liên tục trong trường hợp phát sinh lỗi về phần cứng

2.3.2 Vai trò:

● Là Nosql dễ dàng tiếp cận và sử dụng cho các ứng dụng

● Các thao tác thêm sửa xóa đơn giản với mông

● Được mọi người ưa chuộng rộng rãi

● Phát triển tốt và có những chức năng nổi bật

2.4.1 Database

Database là một container vật lý cho các collection Mỗi DB được thiết lập cho riêng

nó một danh sách các files hệ thống files Một máy chủ MongoDB đơn thường có nhiều DB

2.4.2 Collection

Collection là một nhóm các documents của MongoDB Nó tương đương với một table trong RDBMS Một Collection tồn tại trong một cơ sở dữ liệu duy nhất Các collection ko tạo nên một schema Documents trong collection có thể có các fields khác nhau Thông thường, tất cả các documents trong collections có mục đích khá giống nhau hoặc liên quan tới nhau

2.4.3 Document

Một document là một tập hợp các cặp key-value Documents có schema động Schema động có nghĩa là documents trong cùng một collection không cần phải có cùng một nhóm các fields hay cấu trúc giống nhau, và các fields phổ biến trong các documents của collection có

Trang 23

thể chứa các loại dữ liệu khác nhau

MongoDB cung cấp 2 phương thức để chèn document vào một collection

● db.collection.insertOne(): chèn một tài liệu mới vào một collection Nếu document không có trường _id , MongoDB sẽ tự động thêm trường _id với value kiểu ObjectId

● db.collection.insertMany(): insert nhiều document vào một collection, truyền vào phương thức là mảng các document

Read operation truy xuất documents từ một collection

Để lấy ra tất cả các document trong collection, truyền vào một document trống vào phương thức find

Ngoài ra còn các điều kiện cụ thể hơn để truy xuất cụ thể hơn

Trang 24

Delete operation xóa bỏ document từ một collection

Để xóa tất cả các tài liệu từ một collection, truyền một document filter {} tới phương thức db.collection.deleteMany()

Ví dụ sau xóa tất cả các document của collection inventory

Xóa tất cả các document thỏa mãn điều kiện

Trang 25

Bạn có thể chỉ định các tiêu chí hoặc bộ lọc xác định các tài liệu cần xóa

Để chỉ định điều kiện bằng, sử dụng biểu thức <field>:<value>

Có thể sử dụng query operators để chỉ định các điều kiện:

Xóa chỉ một document thỏa mãn điều kiện

Để xóa chỉ một document phù hợp với điều kiện( trường hợp có nhiều document thỏa mãn thì sẽ xóa document đầu tiên), sử dụng db.collection.deleteOne()

Ví dụ sau xóa document đầu tiên mà có status bằng "D"

3 NodeJs

NodeJS được phát triển từ Javascript vào năm 2009 bởi Ryan Dahl NodeJS có cách thức hoạt động chủ yếu trên Server sử dụng để xây dựng cho các ứng dụng realtime NodeJS dùng mô hình I/O lập trình dựa theo sự kiện non-blocking

Chính vì vậy, NodeJS tương đối gọn nhẹ, hiệu quả và là một công cụ hoàn hảo dành cho mọi ứng dụng chuyên sâu về dữ liệu dựa theo khoảng thời gian thực khi chạy trên những thiết bị phân tán NodeJs thường xuyên được dùng cho mục đích xây dựng một số ứng dụng như: Ad Server, Websocket server, Fast File Upload Client, RESTful API, Cloud Services, Any Real-time Data Application

● NodeJS là một Platform mà không phải là một Framework mà Chính vì vậy, nó cho phép chúng ta có thể xây dựng cho các website một cách độc lập và nhanh chóng hơn

● NodeJS thường sẽ chạy trên đa nền tảng phía Server nên nó có thể thực hiện chạy ở bất

kỳ các máy như: Mac – Window – Linux

● NodeJS không được xem là một ngôn ngữ lập trình, nên những người mới bắt đầu làm quen với NodeJS thì không thể học ngay được nếu như không nắm chắc kiến thức lập trình căn bản như: các giao thức, Javascript,… Tuy nhiên, cộng đồng NodeJS thường rất lớn và nó sẵn sàng support cho bạn mọi lúc mọi nơi

Trang 26

● NodeJS được xem là một máy chủ đơn luồng và không có khả năng hỗ trợ đa luồng

● Phần core của NodeJS thường được biết bằng ngôn ngữ C++ nên nó hiệu năng cung như tốc độ xử lý tương đối cao Nhờ vậy, hầu hết các ứng dụng NodeJS đều có khả năng đáp ứng được thời gian thực chạy trên đa nền tảng, đa thiết bị,…

Các thành phần của NodeJs

NodeJS là một trong những thành phần quan trọng để xây dựng các ứng dụng realtime Chính vì vậy, lập trình viên cần phải biết được các ứng dụng của NodeJS để việc áp dụng sẽ được đơn giản hóa

● NodeJS có thể tạo, mở, đọc, ghi, xóa và đóng các tập tin ngay khi đang truy cập trên máy chủ

● Tạo ra nội dung cho các trang web động

● NodeJS thực hiện thu thập các dữ liệu theo yêu cầu

Ngày đăng: 05/09/2021, 20:46

HÌNH ẢNH LIÊN QUAN

ReactNative cung cấp cho bạn các thành phần cho văn bản, hình ảnh, đầu vào bàn phím, danh sách có thể cuộn, thanh tiến trình, hình động, bảng tạm, liên kết, v.v - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
eact Native cung cấp cho bạn các thành phần cho văn bản, hình ảnh, đầu vào bàn phím, danh sách có thể cuộn, thanh tiến trình, hình động, bảng tạm, liên kết, v.v (Trang 11)
III. XÁC ĐỊNH MÔ HÌNH HÓA YÊU CẦU 1. Phân loại các yêu cầu phần mềm  - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
1. Phân loại các yêu cầu phần mềm (Trang 28)
Mô hình Client-Serve r: - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
h ình Client-Serve r: (Trang 31)
STT Tên màn hình Ý nghĩa/Ghi chú Độ phức tạp  - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
n màn hình Ý nghĩa/Ghi chú Độ phức tạp (Trang 36)
2. Mô tả chi tiết các màn hình 2.1  Màn hình đăng ký 2.1 Màn hình đăng ký  - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2. Mô tả chi tiết các màn hình 2.1 Màn hình đăng ký 2.1 Màn hình đăng ký (Trang 37)
2. Mô tả chi tiết các màn hình 2.1  Màn hình đăng ký 2.1 Màn hình đăng ký  - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2. Mô tả chi tiết các màn hình 2.1 Màn hình đăng ký 2.1 Màn hình đăng ký (Trang 37)
2.2 Màn hình đăng nhập - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2.2 Màn hình đăng nhập (Trang 38)
2.2 Màn hình đăng nhập - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2.2 Màn hình đăng nhập (Trang 38)
2.3 Màn hình home - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2.3 Màn hình home (Trang 39)
2.4 Màn hình notification - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2.4 Màn hình notification (Trang 41)
2.5 Màn hình search - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2.5 Màn hình search (Trang 42)
2.6 Màn hình MyAccount - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2.6 Màn hình MyAccount (Trang 43)
2.7 Màn hình PostNewfeed - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2.7 Màn hình PostNewfeed (Trang 44)
1 Reverse Button Quay lại màn hình chính - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
1 Reverse Button Quay lại màn hình chính (Trang 45)
2.8 Màn hình EditProfile - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2.8 Màn hình EditProfile (Trang 46)
2.9 Màn hình comment - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2.9 Màn hình comment (Trang 47)
2.9 Màn hình comment - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2.9 Màn hình comment (Trang 47)
2.10 Màn hình trang cá nhân người dùng khác - ĐỒ án MẠNG xã hội PHOTOME DÀNH CHO THỢ CHỤP ẢNH và NGƯỜI có NHU cầu CHỤP ẢNH, mẫu ẢNH (đồ án SE121 l21 PMCL)
2.10 Màn hình trang cá nhân người dùng khác (Trang 49)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w