Tải bản đầy đủ (.docx) (89 trang)

Mạng xã hội chia sẻ ảnh và video

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.31 MB, 89 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THƠNG TIN
KHOA CƠNG NGHỆ PHẦN MỀM

BÁO CÁO CUỐI KỲ
Mơn học: ĐỒ ÁN 1

ĐỀ TÀI

MẠNG XÃ HỘI CHIA SẺ ẢNH VÀ VIDEO

Giảng viên hướng dẫn
Sinh viên thực hiện 1
Mã sinh viên 1
Sinh viên thực hiện 2
Mã sinh viên 2
Bộ môn

:
:
:
:
:
:

ThS. Thái Thụy Hàn Uyển
Phạm Thị Thu Trang
20522041
Nguyễn Trần Cẩm Tiên
20522011


Phát triển phần mềm

TPHCM, tháng 6 năm 2023


BẢNG GHI NHẬN THAY ĐỔI TÀI LIỆU
Ngày

Phiên bản

Mô tả

15/03/2023

1.0

Khởi tạo

04/05/2023

1.1

Use-case Diagram & Activity
Diagram

21/06/2023

1.2

Hoàn tất


Tác giả

2


MỤC LỤC
Chương 1: GIỚI THIỆU ĐỀ TÀI.............................................................................7
1.1. Tổng quan:......................................................................................................7
1.1. Mục đích:........................................................................................................7
1.1.1. Khái niệm:...................................................................................................7
1.1.2. Mục đích:.....................................................................................................7
1.1.3. Đối tượng sử dụng:......................................................................................7
1.2. Case-study tham khảo:....................................................................................8
1.3. Mơi trường phát triển:.....................................................................................8
1.4. Mơ tả quy trình thực hiện các cơng việc chính:..............................................8
Chương 2: CƠ SỞ LÝ THUYẾT...........................................................................10
2.1. Ngơn ngữ lập trình Javascript:......................................................................10
2.1.1. Javascript là gì?.........................................................................................10
2.1.2. Cách thức hoạt động của Javascript trên trang web:..................................11
2.2. Ngôn ngữ lập trình Typescript:.....................................................................12
2.2.1. Typescript là gì?........................................................................................12
2.2.2. Đặc điểm:..................................................................................................13
2.3. Hệ quản trị cơ sở dữ liệu MongoDB:............................................................16
2.3.1. MongoDB là gì?........................................................................................16
2.3.2. Đặc điểm:..................................................................................................17
2.3.4. Nhược điểm:..............................................................................................20
2.4. NodeJS:........................................................................................................20
2.4.1. NodeJS là gì?.............................................................................................20
2.4.2. Cấu trúc của NodeJS:.................................................................................21

2.4.3. Ưu điểm:....................................................................................................24
2.4.4. Nhược điểm:..............................................................................................24
2.5. ReactJS:........................................................................................................24
2.5.1. ReactJS là gì?............................................................................................24
2.5.2. Những thành phần chính của ReactJS:.......................................................25
2.5.3. Ưu điểm:....................................................................................................27
2.5.4. Nhược điểm:..............................................................................................28
3


Chương 3: XÁC ĐỊNH VÀ MƠ HÌNH HĨA U CẦU PHẦN MỀM................29
3.1. Yêu cầu nghiệp vụ:.......................................................................................29
3.1.1. Mục đích hệ thống.....................................................................................29
3.1.2. Mơ tả quy trình:.........................................................................................29
3.2. u cầu chức năng:......................................................................................30
3.3. u cầu phi chức năng:................................................................................30
3.4. Yêu cầu hiệu suất:.........................................................................................30
3.5. Yêu cầu tiện dụng:........................................................................................30
3.6. Yêu cầu tương thích:.....................................................................................31
3.7. Yêu cầu bảo mật:..........................................................................................31
3.8. Yêu cầu an tồn:...........................................................................................32
3.9. u cầu cơng nghệ:......................................................................................32
3.10. Sơ đồ Use-case:..........................................................................................32
3.10.1. Sơ đồ Use-case:.......................................................................................32
3.10.2. Danh sách các actor:................................................................................34
3.10.3. Danh sách các Use-case:..........................................................................34
3.11. Thiết kế Activity Diagram:.........................................................................35
3.11.1. Activity Diagram “Đăng nhập”:..............................................................35
3.11.2. Activity Diagram “Quản lý hồ sơ cá nhân”:............................................36
3.11.3. Activity Diagram “Tương tác với bài đăng”:...........................................37

3.11.4. Activity Diagram “Tạo bài đăng”:...........................................................38
3.11.5. Activity Diagram “Theo dõi người dùng”:..............................................39
3.11.6. Activity Diagram “Nhắn tin”:..................................................................39
3.12. Thiết kế Sequence Diagram:.......................................................................40
3.12.1. Sequence Diagram “Đăng nhập”:............................................................40
3.12.2. Sequence Diagram “Quản lý hồ sơ cá nhân”:..........................................41
3.12.3. Sequence Diagram “Tương tác với bài đăng”:.........................................42
3.12.4. Sequence Diagram “Tạo bài đăng”:.........................................................43
3.12.5. Sequence Diagram "Theo dõi người dùng”:............................................44
3.12.6. Sequence Diagram "Nhắn tin”:................................................................45
3.13. Thiết kế Class Diagram:.............................................................................46
3.13.1. Tổng quan Class Diagram:......................................................................46
3.13.2. Đặc tả chi tiết Class Diagram:.................................................................46
Chương 4: THIẾT KẾ HỆ THỐNG.......................................................................52
4


4.1. Kiến trúc hệ thống:.......................................................................................52
4.2. Mô tả các thành phần của hệ thống:..............................................................52
4.3. Quá trình hoạt động của hệ thống:................................................................52
Chương 5: THIẾT KẾ GIAO DIỆN.......................................................................54
5.1. Màn hình Đăng nhập:...................................................................................54
5.2. Màn hình Đăng ký:.......................................................................................55
5.3. Màn hình Xác thực OTP:..............................................................................55
5.4. Màn hình Quên mật khẩu:............................................................................56
5.5. Màn hình Tạo mật khẩu mới:........................................................................56
5.6. Màn hình Trang chủ:....................................................................................57
5.6.1. Tổng quan:.................................................................................................57
5.6.4. Bài đăng:....................................................................................................60
5.7. Khung Tìm kiếm:..........................................................................................65

5.7.1. Kết quả tìm kiếm:......................................................................................65
5.7.2. Tìm kiếm gần đây:.....................................................................................66
5.8. Khung Thơng báo:........................................................................................67
5.9. Màn hình Đổi mật khẩu:...............................................................................68
5.10. Màn hình Bài đăng chi tiết:.........................................................................69
5.10.1. Tổng quan:...............................................................................................69
5.10.2. Chia sẻ bài đăng:......................................................................................70
5.11. Màn hình Tạo bài đăng:..............................................................................72
5.11.1. Tổng quan:...............................................................................................72
5.11.2. Chỉnh sửa ảnh:.........................................................................................74
5.11.3. Cắt ảnh:....................................................................................................75
5.11.4. Sửa màu ảnh:...........................................................................................76
5.11.5. Thêm filter:..............................................................................................76
5.11.6. Chèn chữ:.................................................................................................77
5.12. Màn hình hồ sơ cá nhân:.............................................................................79
5.13. Màn hình Chỉnh sửa hồ sơ:.........................................................................81
5.13.1. Tổng quan:...............................................................................................81
5.13.2. Màn hình Chỉnh sửa ảnh đại diện:...........................................................82
5.14. Màn hình Tin nhắn:....................................................................................83
5.15. Màn hình Danh sách story..........................................................................85
5.16. Màn hình Tạo story:...................................................................................85
5


5.17. Màn hình Tạo story chữ:.............................................................................87
5.18. Màn hình Tạo story hình ảnh/video:...........................................................87
5.18.1. Tổng quan:...............................................................................................87
5.18.2. Màn hình Cắt ảnh:...................................................................................88
5.18.3. Màn hỉnh Chỉnh sửa màu ảnh:.................................................................88
5.18.4. Màn hình Thêm filter:..............................................................................89

5.18.5. Màn hình Thêm chữ:...............................................................................89
Giao diện màn hình Thêm chữ trong trạng thái chỉnh sửa chữ...........................90
Bảng chọn font.....................................................................................................90
Chương 6: KẾT LUẬN..........................................................................................91
6.1. Kết quả đạt được của đồ án:.........................................................................91
6.2. Hạn chế của đồ án:........................................................................................91
6.3. Hướng phát triển của đồ án:..........................................................................91
TÀI LIỆU THAM KHẢO.......................................................................................92

6


Chương 1:
GIỚI THIỆU ĐỀ TÀI
1.1. Tổng quan:
InStare là một trang web mạng xã hội tập trung vào nội dung trực quan như hình
ảnh và video, là một nơi để mọi người kết nối, thể hiện bản thân, lan tỏa nguồn cảm
hứng đến với mọi người xung quanh. Với giao diện thân thiện và công cụ chỉnh sửa
ảnh, InStare cho phép bạn chia sẻ những khoảnh khắc, sự sáng tạo và sở thích của
mình với người theo dõi.
2.1. Mục đích:
2.1.1. Khái niệm:
Mạng xã hội là một nền tảng trực tuyến cho phép các cá nhân và tổ chức tương tác
với nhau thông qua việc chia sẻ thông tin, ý kiến, nội dung, hình ảnh và video. Nó
cho phép người dùng kết nối với những người khác, đồng thời tạo ra một cộng đồng
trực tuyến với những người có cùng sở thích, quan điểm và hoạt động. Mạng xã hội
cũng cung cấp các công cụ để quản lý mối quan hệ, tạo thương hiệu, quảng cáo và
kinh doanh trực tuyến.
2.1.2. Mục đích:
-


Đem đến một cộng đồng có thể đưa những người cùng sở thích, sở trường
đến với nhau, cùng nhau chia sẻ và tạo dựng mối quan hệ.

-

Cung cấp một nền tảng cho mọi người giao tiếp với nhau qua tin nhắn.

-

Chia sẻ hình ảnh và video đến lượng lớn người dùng.

-

Cung cấp các tính năng và cơng cụ để nâng cao tầm nhìn, tạo giá trị cho cộng
đồng và đóng góp vào cuộc sống của người dùng.

-

Thiết kế và phát triển một ứng dụng web chất lượng cao, đáp ứng các yêu
cầu của người dùng và đảm bảo tính ổn định và an tồn.

-

Tối ưu hóa trải nghiệm người dùng bằng cách xây dựng một hệ thống trực
quan, dễ sử dụng, cải thiện tính năng, hiệu suất, giao diện.

-

Thiết kế và triển khai một hệ thống lưu trữ và quản lý dữ liệu hiệu quả.


2.1.3. Đối tượng sử dụng:
Đối tượng sử dụng của mạng xã hội có thể là bất kỳ ai (thông thường là từ 13 tuổi
trở lên), bao gồm các cá nhân, tổ chức, doanh nghiệp hoặc cộng đồng. Mạng xã hội
7


đã trở thành một phương tiện truyền thông mạnh mẽ để kết nối và tương tác với
những người có cùng sở thích, hoạt động và quan điểm. Nó được sử dụng để chia sẻ
thông tin, đưa ra ý kiến, giải trí, tạo mối quan hệ kinh doanh, quảng cáo và nhiều
mục đích khác. Người dùng có thể tùy chỉnh trang cá nhân của mình và lựa chọn
những người bạn muốn kết nối với để xây dựng một mạng lưới cá nhân hoặc cộng
đồng trực tuyến.
1.2. Case-study tham khảo:
-

Instagram

-

Facebook

-

Twitter

1.3. Môi trường phát triển:
-

Hệ điều hành: Windows 10.


-

Cơ sở dữ liệu: MongoDB.

-

Công cụ phân tích, thiết kế: Figma, draw.io, StarUML,…

-

IDE: Visual Studio Code.

-

Mơi trường làm việc nhóm: Notion, Google Drive, Microsoft Teams,
Facebook Messenger.

-

Các framework sử dụng: NodeJS, NestJS, ReactJS.

-

Ngơn ngữ lập trình: JavaScript, TypeScript.

-

Quản lý phiên bản: Git.


1.4. Mơ tả quy trình thực hiện các cơng việc chính:
Bước 1: Xác định các u cầu:


-

Phân tích khả thi quy mơ thực hiện.

-

Tìm hiểu quy trình nghiệp vụ.

-

Tham khảo và trải nghiệm các ứng dụng liên quan.

-

Khảo sát người dùng qua mạng.

-

Thu thập thông tin yêu cầu.
Bước 2: Thiết kế hệ thống:





-


Vẽ sơ đồ Use-case: phân tích nghiệp vụ tổng quan.

-

Vẽ Sequence Diagram
Bước 3: Thiết kế dữ liệu
8


-

Thiết kế dữ liệu tương ứng với từng loại yêu cầu của phần mềm để đảm bảo
được tính đúng đắn và tính tiến hóa với phần mềm, có hiệu quả về mặt truy
xuất và lưu trữ

-

Xác định và lập danh sách các bảng dữ liệu cần thiết cho các yêu cầu của
phần mềm

-

Xây dựng sơ đồ logic cụ thể của phần mềm
Bước 4: Thiết kế giao diện


-

Lập ra danh sách các màn hình khi người dùng tương tác với phần mềm


-

Mơ tả các đối tượng trên từng màn hình

-

Xác định những chức năng hiển thị trên từng màn hình
Bước 5: Code và kiểm thử


-

Code trình bày theo mơ hình 3 lớp và được phân chia theo các nhiệm vụ yêu
cầu.

-

Testcase rõ ràng để kiểm tra tính hiệu quả của hệ thống.

9


Chương 2:
CƠ SỞ LÝ THUYẾT
2.1. Ngơn ngữ lập trình Javascript:
2.1.1. Javascript là gì?
JavaScript là ngơn ngữ lập trình phổ biến dùng để tạo ra các trang web tương tác.
Được tích hợp và nhúng vào HTML giúp website trở nên sống động hơn. JavaScript
đóng vai trị như một phần của trang web, thực thi cho phép Client-Side Script từ

phía người dùng cũng như phía máy chủ (Nodejs) tạo ra các trang web động.

JavaScript là một ngơn ngữ lập trình thơng dịch với khả năng hướng đến đối tượng.
Là một trong 3 ngơn ngữ chính trong lập trình web và có mối liên hệ lẫn nhau để
xây dựng một website sống động, chun nghiệp, bạn có thể nhìn tổng quan như
sau:

 HTML: Cung cấp cấu trúc cơ bản, hỗ trợ trong việc xây dựng layout, thêm
nội dung dễ dàng trên website.

 CSS: Được sử dụng để kiểm soát và hỗ trợ việc định dạng thiết kế, bố cục,
style, màu sắc,…

 JavaScript: Tạo nên những nội dung “động” trên website.


10


2.1.2. Cách thức hoạt động của Javascript trên trang web:
JavaScript thường sẽ được nhúng trực tiếp vào một trang web hoặc được tham
chiếu qua file .js riêng. JavaScript là ngôn ngữ từ phía client nên script sẽ được tải
về máy client khi truy cập và được xử lý tại đó. Thay vì tải về máy server và sau khi
xử lý xong mới phản hồi kết quả đến client.

Cách thức hoạt động của Typescript trên trang web
2.1.3. Ưu điểm:
JavaScript có các ưu điểm được xem là vượt trội so với các đối thủ khác trong các
trường hợp thực tế như:



Chương trình JavaScript rất dễ học.



Lỗi JavaScript dễ phát hiện và sẽ giúp bạn sửa lỗi nhanh hơn.



Các trình duyệt web có thể dịch nó bằng HTML mà khơng cần một compiler.



JS hoạt động trên rất nhiều nền tảng và trình duyệt khác nhau.



Được đánh giá là ngơn ngữ lập trình nhẹ, nhanh so với các ngơn ngữ khác.



JS có thể được gắn trên một số element hoặc các events của trang web.



Khi website có sử dụng JS thì sẽ giúp cho trang web đó tương tác và tăng trải
nghiệm người dùng khi truy cập.




Bạn có thể tận dụng JavaScript để kiểm tra các input thay vì kiểm tra thủ
cơng thơng qua việc truy xuất database.

11




Giao diện phong phú gồm các thành phần Drag and Drop, Slider để cung cấp
một Rich Interface (Giao diện giàu tính năng).

2.1.4. Nhược điểm:
Mặt khác, ngồi những ưu điểm nhưng mọi ngơn ngữ lập trình khác đều có những
nhược điểm riêng của nó như:


Dễ bị khai thác từ những hacker và scammer.



Có thể được dụng để thực thi mã độc trên máy tính của người dùng.



JS code snippet lớn.



Các thiết bị khác nhau có thể thực hiện JS khác nhau dẫn đến khơng đồng
nhất.




Vì tính bảo mật nên client-side JavaScript không cho phép đọc và ghi các
file.



JS không được hỗ trợ khi sử dụng trong kết nối mạng.



JavaScript khơng có khả năng đa luồng hoặc đa xử lý.

2.2. Ngôn ngữ lập trình Typescript:
2.2.1. Typescript là gì?
TypeScript là một mã nguồn mở được phát triển và xây dựng bởi Microsoft. Đây là
dự án được nâng cấp từ Javascript nhằm bổ sung tính năng kiểu tĩnh và lớp hướng
đối tượng trở nên nhanh chóng, ổn định hơn.
Mặc dù ra đời sau CoffeeScript và Dart nhưng TypeScript vẫn nhận được phản hồi
vượt trội của nhiều lập trình viên bởi tính năng vận hành vượt trội.

12


Typescript là gì?
Người phát triển ra TypeScript là Anders Hejlsberg. Người đã góp cơng lớn trong
việc tạo ra nhiều ngơn ngữ lập trình hàng đầu như: Delphi, Turbo Pascal & C#.
Hiện nay, mã nguồn mở này được sử dụng tại nhiều ứng dụng chạy ở client-side
như: Angular, NodeJS.

Tính năng classes, modules của TypeScript được tích hợp đầy đủ khơng hề kém
cạnh ECMAScript 2015 – ES6. Khơng dừng lại ở đó, Typescript cịn nâng cấp
phiên bản của mình để ứng dụng nhiều kỹ thuật đời mới từ ECMAScript.
2.2.2. Đặc điểm:


Nhiều Framework lựa chọn: Mới đây nhiều Javascript Framework đã khuyến
khích người dùng của mình nên sử dụng TypeScript để phát triển, sử dụng dễ
dàng, tối ưu hơn. Ví dụ: Ionic 2.0 và AngularJS 2.0.



Dễ phát triển các dự án lớn: TypeScript tích hợp vơ số kỹ thuật hiện đại, đảm
bảo tính lập trình hướng đối tượng chính xác vơ cùng nhanh chóng.



Mã nguồn mở: TypeScript giúp người dùng có thể thoải mái sử dụng, phục
vụ cơng việc của mình hồn tồn miễn phí, khơng hề mất phí. Đồng thời cịn
hỗ trợ cộng đồng.

13




Hỗ trợ nhiều tính năng của JavaScript: Những chức năng hiện đại, đời mới
tại JavaScript đều được TypeScript cập nhật và cung cấp đầy đủ. Có thể kể
tới ECMAScript 2015 – ES6.




TypeScript là JavaScript: Khả năng biên dịch tạo ra những đoạn mã
JavaScript của TypeScript cực kỳ linh hoạt và ổn định. Chính vì thế, lập trình
viên có thể chạy TypeScript ở bất cứ đâu miễn là có hỗ trợ biên dịch
JavaScript.

Đặc điểm của Typescript
2.2.3. Ưu điểm:
Với vơ số tính năng hiện đại, tới nay TypeScript đã mang đến cho người dùng vô số
trải nghiệm nhờ vào hàng loạt ưu điểm cực kỳ nổi bật. Đảm bảo đáp ứng tối ưu nhu
cầu sử dụng đa dạng của mọi lập trình viên như sau:


Vận hành miễn phí, tiết kiệm thời gian sử dụng nhờ vào IDE và trình biên
dịch vượt trội.



Giảm thiểu phần trăm va chạm lỗi trong suốt quá trình vận hành.



Đảm bảo tính hoạt động ổn định – thuận tiện.



Thao tác mượt mà, nhanh chóng, vơ cùng đơn giản, dễ sử dụng.




TypeScript hỗ trợ các bước chỉnh sửa code tiện lợi hơn nhờ vào lệnh Rename
Symbol, Find All Occurrences và RegEx.
14




Giúp người dùng tái cấu trúc, nâng cấp hệ thống, phần mềm và ứng dụng
vượt trội hơn nhờ vào tính xử lý thông minh.



Hạn chế thử nghiệm Boilerplate rất hiệu quả, gia tăng xác suất hồn thành
cơng việc.



TypeScript cịn hợp nhất mã code và đánh giá chính xác khi biên dịch cực kỳ
dễ dàng, đơn giản.



Hỗ trợ tối ưu hóa quy trình làm việc của người dùng, hạn chế tính nhảy bước
rồi thực hiện sai thao tác.

Ưu điểm của Typescript
2.2.4. Nhược điểm:
Bên cạnh những ưu điểm đầy nổi bật, tuy nhiên TypeScript vẫn còn tồn tại một số
nhược điểm nhất định trong suốt quá trình lập trình viên thao tác, ứng dụng như sau:



Người dùng cần biên dịch đuôi .js tệp TypeScript tại nền tảng Node.js.



TypeScript cần đảm bảo máy chủ Node.js, webpack và trình thử nghiệm hoạt
động ổn định.



Cần thêm Typedef mỗi khi apply Redux, Styled-Component và React.



TypeScript không vận hành độc lập hay thay thế bất kỳ vai trị chính nào của
JavaScript.



TypeScript chỉ nâng cấp những nhược điểm còn hạn chế của JavaScript.
15


2.3. Hệ quản trị cơ sở dữ liệu MongoDB:
2.3.1. MongoDB là gì?


MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL(*)
hàng đầu, được hàng triệu người sử dụng. MongoDB được viết bằng C++.




Ngoài ra, MongoDB là một cơ sở dữ liệu đa nền tảng, hoạt động trên các
khái niệm Collection và Document, nó cung cấp hiệu suất cao, tính khả dụng
cao và khả năng mở rộng dễ dàng.

(*) NoSQL là 1 dạng CSDL mã nguồn mở không sử dụng Transact-SQL để truy vấn
thông tin. NoSQL viết tắt bởi: None-Relational SQL, hay có nơi thường gọi là NotOnly SQL. CSDL này được phát triển trên Javascript Framework với kiểu dữ liệu
JSON. (Cú pháp của JSON là “key:value”) NoSQL ra đời như là 1 mảnh vá cho
những khuyết điểm và thiếu xót cũng như hạn chế của mơ hình dữ liệu quan hệ
RDBMS về tốc độ, tính năng, khả năng mở rộng, memory cache,...

16


2.3.2. Đặc điểm:



MongoDB hoạt động dưới một tiến trình ngầm service, luôn mở một cổng
(Cổng mặc định là 27017) để lắng nghe các yêu cầu truy vấn, thao tác từ các
ứng dụng gửi vào sau đó mới tiến hành xử lý.



Mỗi một bản ghi của MongoDB được tự động gắn thêm một field có tên
“_id” thuộc kiểu dữ liệu ObjectId mà nó quy định để xác định được tính duy
nhất của bản ghi này so với bản ghi khác, cũng như phục vụ các thao tác tìm
kiếm và truy vấn thông tin về sau. Trường dữ liệu “_id” luôn được tự động

đánh index (chỉ mục) để tốc độ truy vấn thơng tin đạt hiệu suất cao nhất.



Mỗi khi có một truy vấn dữ liệu, bản ghi được cache (ghi đệm) lên bộ nhớ
Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc
từ ổ cứng.



Khi có yêu cầu thêm/sửa/xóa bản ghi, để đảm bảo hiệu suất của ứng dụng
mặc định MongoDB sẽ chưa cập nhật xuống ổ cứng ngay, mà sau 60 giây
MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng.
17


2.3.3. Ưu điểm:


Ít schema hơn: Vì schema được sinh ra là để nhóm các đối tượng vào 1 cụm,
dễ quản lý. Ví dụ như tạo 1 schema tên là Students chẳng hạn thì chỉ có
những gì liên quan đến student thì mới được cho vào schema này. Trong khi
đó trong mongodb thì chỉ 1 collection ta có thể chứa nhiều document khác
nhau . Với mỗi document thì số trường, nội dung, kích thước lại có thể khác
nhau.



Cấu trúc của một đối tượng rõ ràng.




Khơng có các Join phức tạp.



Khả năng mở rộng cực lớn: việc mở rộng dữ liệu mà khơng phải lo đến các
vấn đề như khóa ngoại, khóa chính, kiểm tra ràng buộc, ... MongoDB cho
phép thực hiện replication và sharding nên việc mở rộng cũng thuận lợi hơn.

18




Sử dụng bộ nhớ trong để lưu giữ cửa sổ làm việc cho phép truy cập dữ liệu
nhanh hơn. Việc cập nhật được thực hiện nhanh gọn nhờ update tại chỗ (inplace).

19


2.3.4. Nhược điểm:


Dữ liệu được caching, lấy RAM làm trọng tâm hoạt động vì vậy khi hoạt
động yêu cầu một bộ nhớ RAM lớn



Như đã giới thiệu ở trên, mọi thay đổi về dữ liệu mặc định đều chưa được ghi

xuống ổ cứng ngay lập tức vì vậy khả năng bị mất dữ liệu từ nguyên nhân
mất điện đột xuất là rất cao.

2.4. NodeJS:
2.4.1. NodeJS là gì?
Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở
tại California, Hoa Kỳ. Đây là một nền tảng (platform) phát triển độc lập dựa trên
V8 JavaScript engine. Đây là một trình thơng dịch thực thi mã JavaScript cho phép
tạo các ứng dụng web như video clip và diễn đàn, đặc biệt có thể mở rộng nhanh
chóng và dễ dàng cũng như thu hẹp phạm vi hoạt động của các trang mạng mạng xã
hội.
Đây được xem là một lợi thế khi NodeJS có thể hoạt động trên nhiều nền tảng hệ
điều hành khác nhau, từ Windows, Linux đến OS X. NodeJS cung cấp một thư viện

20



×