Tải bản đầy đủ (.pdf) (65 trang)

Đồ án rút trích và trực quan hóa dữ liệu trong lĩnh vực bất động sản

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 (1.8 MB, 65 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

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

NGUYỄN CÔNG HIẾU – 18520743
VŨ CÁT - 18520515

ĐỒ ÁN 1
RÚT TRÍCH VÀ TRỰC QUAN HÓA DỮ LIỆU
TRONG LĨNH VỰC BẤT ĐỘNG SẢN
Extraction and data visualization in Real Estate

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

GIẢNG VIÊN HƯỚNG DẪN
ThS. TRẦN ANH DŨNG,
ThS. PHAN TRUNG HIẾU

TP. HỒ CHÍ MINH, NĂM 2021
1


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

CỘNG HỒ XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC

Độc Lập – Tự Do – Hạnh Phúc


CÔNG NGHỆ THÔNG TIN
________________________

________________________

ĐỀ CƯƠNG CHI TIẾT
Tên đề tài: Rút trích và trực quan hóa dữ liệu trong lĩnh vực bất động sản
Cán bộ hướng dẫn: Ths. Trần Anh Dũng, ThS. Phan Trung Hiếu
Thời gian thực hiện: Từ ngày 30/03/2021 đến ngày 30/06/2021
Sinh viên thực hiện:
1. Nguyễn Công Hiếu – 18520743
2. Vũ Cát - 18520515
Nội dung đề tài:
• Mục tiêu:
• Xây dựng hệ thống bao gồm những chức năng cơ bản của một trang thông tin bất động sản:
xem tin bất động sản, tìm kiếm thơng tin như: thông tin để liên lạc người bán, giá cả, địa chỉ,
thể hiện chi tiết thơng tin bất động sản.
• Xây dựng hệ thống cho phép người dùng có thể tìm kiếm, so sánh thơng tin một cách trực
quan dựa trên dữ liệu thu thập được từ các trang thông tin khác
• Xây dựng trang web thơng tin có các tin tức về thị trường bất động sản.
• Xây dựng hệ thống với các công nghệ mới như Nodejs, Reactjs, MongoDB. Nhóm em chọn
những cơng nghệ này vì chúng có tính bao quát rộng hơn, Nodejs hỗ trợ bất đồng bộ giúp
nhiều phương thức chạy động thời, MongoDB là một noSQL hỗ trợ dễ dàng trong việc thêm

2


dữ liệu, không cần khai báo biến mà sử dụng “key: value”, còn Reactjs là một frontend mới
nổi do facebook tạo ra, hỗ trợ rất nhiều thư viện, giúp dễ dàng trong việc xây dựng ứng dụng.
• Đối tượng: Những người có nhu cầu tìm kiếm và chia sẻ thơng tin bất động sản.

• Tính mới/ khác biệt về chức năng:
• Thêm ý tưởng:
Các trang bất động sản hiện nay đa số đều có phương thức hoạt động tương đồng ở các
hình thức chia sẻ thơng tin bất động sản, thơng tin được cung cấp tràn lan, một chiều,
khơng có tính xác thực, khơng có nhận xét từ người dùng. Đồng thời các trang web
hiện tại khơng có một hệ thống so sánh thơng tin một cách rõ ràng.
Vì thế nhóm em quyết định xây dựng trang web thơng tin bất động sản có thể thu thập
dữ liệu từ nhiều nguồn thông tin khác nhau, và hiển thị trực quan hóa cho người dùng
có thể nhận xét và dễ dàng lựa chọn theo nhu cầu của mình
Chúng em sẽ thêm chức năng recommend các thông tin bất động sản dựa trên lượt tìm
kiếm của người dùng hoặc có thể dựa trên thơng tin, địa chỉ người dùng để có các
thơng tin bất động sản cần thiết cho người dùng.
• Chọn lọc các chức năng:
Khảo sát qua các trang bất động sản lớn của Việt Nam hiện nay như diaoconline.vn,
batdongsan.com.vn, alonhadat.com.vn,… nhóm nhận thấy:
Khi tìm được một thơng tin bất động sản mình thích nhưng khách hàng khơng
thể nào lưu lại, mỗi lần muốn xem một thông tin khách hàng phải tìm đến đúng
thơng tin đó. Hạn chế trong việc tìm kiếm thơng tin. Vì thế ứng dụng của nhóm
có thêm phần danh sách ưa thích, khi người dùng thấy thích nơi nào có thể chọn
lưu vào danh sách để xem lại sau.
Các trang bất động sản đều trình bày theo hình thức đơn giản, khiến người dùng
dễ dàng sử dụng khi lần đầu vào trang web. Cũng vì thế mà nhóm cũng đã thiết
3


kế giao diện gọn gàng khơng rối mắc.
Nhóm em sẽ thu thập tất cả các thơng tin thật và chính chủ để hạn chế các thơng
tin rác và khơng chính xác khiến người tim kiếm sai sự thật.
Ngồi ra cịn các chức năng cơ bản của các trang bất động sản như tìm kiếm,
đăng tin, sửa tin, xem thơng tin chi tiết.

• Phạm vi:
• Phạm vi địa lý: Ứng dụng sử dụng tại Việt Nam.
• Phạm vi chức năng:
Quản lý người sử dụng.
Quản lý bài viết.
Quản lý thông tin bất động sản
Quản lý các biểu đồ
Quản lý tìm kiếm thơng tin (recommend bài viết)
• Phương pháp thực hiện:
• Làm việc cá nhân, sử dụng request để lấy thông tin từ những trang web cụ thể, lưu xuống
database và xuất lên cho người dùng thấy.
• Xậy dựng database với mongoDB.
• Xây dựng hệ thống Restful API với nodejs và express.
• Cơng nghệ sử dụng:
• ReacJs.
• MongoDB
• Nodejs
4


• ExpressJs
• Postman.
• PrimeReact, chartjs.
• Visual Code
Lí do sử dụng các công nghệ trên:
-

Nodejs là một backend bất đồng bộ, khiến các chức năng chạy xong xong với nhau, điều này
giúp ứng dụng chạy mượt hơn, khơng có những khoảng khắc ứng dụng gần như khơng làm
gì.


-

MongoDB là một noSQL, là một dạng dữ liệu mã nguồn mở, chúng ta có thể khai báo bất cứ
thứ gì mà khơng cần phải sợ sai kiểu dữ liệu vì MongoDB đọc theo dạng (key : value)

-

Reactjs là một frontend được nhiều phần mềm sử dụng vì tính phong phú và đa dạng, được
nhiều thư việc hỗ trợ, nên có thể tuỳ biến phần frontend trở nên đẹp hơn mà không thô cứng.

-

ExpressJs là công nghệ sử dụng ở dưới phần backend Nodejs, giúp xây dựng các API để gọi
tới MongoDB.

-

PrimeReact, chartjs là những thư viện hỗ trợ việc xây dựng biểu đồ để trực quan hóa dữ liệu
một cách dễ dàng.

-

Postman là một chương trình ngồi để kiểm tra các API một cách độc lập mà không cần phải
thao tác trên ứng dụng.

-

Visual Code là phần mềm để viết và thực thi các dịng lệnh.


• Kết quả mong đợi:
-

Hồn thiện ứng dụng web thu thập và chia sẻ thông tin bất động sản, đáp ứng đủ các nhu cầu
cơ bản.

-

Trực quan hóa dữ liệu thu thập được và hiển thị cho người dùng.

• Định hướng phát triển: Mở rộng thêm các trang web khác, thêm các tính năng mới tiện lợi
5


cho người dùng.

Kế hoạch thực hiện: (thời gian thực hiện trong 2 tuần)
STT

Cơng việc

Phase 1: Tìm hiểu và xây dựng ứng dụng web có

Thời gian thực hiện

Phân
cơng

4 tuần


backend và frontend
1

Sprint 1: Tìm hiểu các định nghĩa về Nodejs +
Express + Reactjs + mongodb
- Nodejs là gì?
- Express là gì?

1.1

- Reactjs là gì?

Tuần 1 – 2 (29/3/2021 –

Hiếu,

11/4/2021)

Cát

- Mongodb là gì?
- Cách kết hợp chúng lại với nhau
2

2.1

Sprint 2: Xây dựng ứng dụng cơ bản kết hợp
Nodejs + Express + Reactjs
- Xây dựng ứng dụng cơ bản để hiểu về luồng


Tuần 3 – 4 (12/4/2021 –

chạy của các ngôn ngữ, kết hợp 2 sever nodejs và

26/4/2020)
Cát

reactjs thành 1
Phase 2: Xây dựng ứng dụng thu nhập và chia sẻ

Hiếu,

8 tuần

thông tin của các trang web
3
3.1

Sprint 3: Xây dựng RESTful API với database
mongodb
- Tạo database và kết nối mongodb

Tuần 5 – 8 (2/5/2021 –

Hiếu
6


- Tạo API để lấy thông tin từ một đường link cụ


30/5/2021)

thể, xuất ra thông tin và trả về cho người dùng.
- Tạo API thêm, sửa, xoá các lĩnh vực.
4

Sprint 4: Xây dựng Frontend với Reactjs
- Tạo trang web với Reactjs

4.1

- Gọi các API từ Backend lên Frontend để sử dụng

Tuần 5 – 8 (2/5/2021 –
30/5/2021)

Cát

- Thiết kế và chỉnh sửa UI/UX
Phase 3: Kiểm thử và đánh giá
5
5.1

2 tuần

Sprint 5: Kiểm thử
- Kiểm thử

Tuần 9 - 10 (6/6/2021 –


Hiếu,

- Đánh giá

13/6/2021)

Cát

Xác nhận của CBHD

TP. HCM, ngày 29 tháng 03 năm 2021

(Ký tên và ghi rõ họ tên)

Sinh viên
(Ký tên và ghi rõ họ tên)

7


Lời cảm ơn
Đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến tập thể quý thầy cô Trường
Đại học Công nghệ thông tin – Đại học Quốc gia TP.HCM và quý thầy cô khoa Công
nghệ phần mềm đã giúp cho chúng em có những kiến thức cơ bản làm nền tảng để thực
hiện đề tài này.
Đặc biệt, nhóm tác giả xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới thầy
Trần Anh Dũng, người đã hướng dẫn tận tình, sửa chữa và đóng góp nhiều ý kiến quý
báu giúp tụi em hoàn thành báo cáo mơn học của mình.
Trong thời gian một học kỳ thực hiện đề tài, em đã vận dụng những kiến thức
nền tảng đã tích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những kiến thức

mới. Từ đó, em đã vận dụng tối đa những gì đã thu thập được để hoàn thành một báo cáo
đồ án tốt nhất. Tuy nhiên, trong q trình thực hiện khơng tránh khỏi những thiếu sót.
Chính vì vậy, em rất mong nhận được những sự góp ý từ phía các thầy/cơ nhằm hoàn
thiện những kiến thức mà em đã học tập và là hành trang để em thực hiện tiếp các đề tài
khác trong tương lai.

Xin chân thành cảm ơn quý thầy/cô!

1


NHẬN XÉT CỦA GIẢNG VIÊN
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...
………………………………………………………………………………………...

………………………………………………………………………………………...
………………………………………………………………………………………...

Giảng viên hướng dẫn

ThS. Trần Anh Dũng
2


MỤC LỤC
TÓM TẮT ĐỒ ÁN ............................................................................................................. 1
CHƯƠNG 1. TỔNG QUAN ............................................................................................. 2
1.1.

Đặt vấn đề ....................................................................................................... 2

1.2.

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

1.2.1. Giới thiệu hệ thống website “Rút trích và trực quan hóa thơng tin bất động
sản”

2

1.2.2. Khảo sát hệ thống liên quan ........................................................................ 3
1.3.

Mục tiêu và phạm vi đề tài............................................................................ 4


1.3.1. Mục tiêu ....................................................................................................... 4
1.3.2. Phạm vi ........................................................................................................ 4
1.3.3. Đối tượng sử dụng ....................................................................................... 5
1.3.4. Kết quả dự kiến............................................................................................ 5
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT ................................................................................. 6
2.1.

Nodejs ............................................................................................................. 6

2.1.1. Giới thiệu về Nodejs .................................................................................... 6
2.1.2. Tại sao nên sử dụng Nodejs......................................................................... 6
2.1.3. Áp dụng Nodejs vào đề tài .......................................................................... 7
2.2.

ExpressJS framework ................................................................................... 7

2.2.1. Giới thiệu về ExpressJS ............................................................................... 7
2.2.2. Tại sao nên sử dụng ExpressJS ................................................................... 9
2.2.3. Áp dụng ExpressJS vào đề tài ..................................................................... 9
2.3.

MongoDB ........................................................................................................ 9

2.3.1. Giới thiệu về MongoDB .............................................................................. 9
2.3.2. Tại sao nên sử dụng hệ quản trị cơ sở dữ liệu MongoDB ......................... 10
2.3.3. Áp dụng MongoDB vào đề tài................................................................... 11
2.4.

Reactjs........................................................................................................... 12


2.4.1. Giới thiệu về Reactjs ................................................................................. 12
1


2.4.2. Tại sao nên sử dụng Reactjs ...................................................................... 12
2.5.

Postman. ....................................................................................................... 14

2.5.1. Postman là gì? ............................................................................................ 14
2.5.2. Tại sao sử dụng Postman? ......................................................................... 15
2.5.3. Áp dụng Postman vào đồ án: ..................................................................... 15
CHƯƠNG 3. PHÁT BIỂU BÀI TOÁN ......................................................................... 16
3.1.

Giới thiệu hệ thống website “Rút trích và trực quan hóa thơng tin bất

động sản” .................................................................................................................. 16
3.2.

Khảo sát các hệ thống liên quan................................................................. 17

3.2.1. Website batdongsan.com.vn ...................................................................... 17
3.2.2. Website mogi.vn ........................................................................................ 18
3.2.3. Website alonhadat.com.vn......................................................................... 20
3.2.4. So sánh hệ thống với các website .............................................................. 22
3.3.

Yêu cầu hệ thống ......................................................................................... 24


3.3.1. Yêu cầu chức năng .................................................................................... 24
3.3.2. Yêu cầu phi chức năng .............................................................................. 25
CHƯƠNG 4. PHÂN TÍCH THIẾT KẾ HỆ THỐNG .................................................. 27
4.1.

Sơ đồ phân rã chức năng: ........................................................................... 27

4.2.

Sơ đồ Use-case: ............................................................................................ 28

4.2.1. Danh sách các Actor: ................................................................................. 29
4.2.2. Danh sách các Use-case: ........................................................................... 29
4.3.

Các sơ đồ và luồng hoạt động ..................................................................... 30

4.3.1. Đăng kí ...................................................................................................... 30
4.3.2. Đăng nhập: ................................................................................................. 32
4.3.3. Tìm kiếm: .................................................................................................. 34
4.3.4. Sắp xếp: ..................................................................................................... 36
4.3.5. Thiết lập biểu đồ: ....................................................................................... 38
4.4.

Thiết kế kiến trúc: ....................................................................................... 40

4.4.1. Mơ hình kiến trúc ...................................................................................... 40
2



4.4.2. Mô tả .......................................................................................................... 40
4.4.3. Thiết kế cơ sở dữ liệu: ............................................................................... 41
4.4.4. Thiết kế giao diện: ..................................................................................... 44
4.4.4.1.Màn hình đăng kí tài khoản: .................................................................. 44
4.4.4.2.Màn hình đăng nhập: ............................................................................. 45
4.4.4.3.Màn hình trang chủ:............................................................................... 46
4.4.4.4.Màn hình xem thơng tin tìm kiếm: ........................................................ 47
4.4.4.5.Màn hình xem chi tiết thơng tin bài viết: .............................................. 48
4.4.4.6.Màn hình xem thơng tin biểu đồ: .......................................................... 49
CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .............................................. 50
5.1. Kết luận: ............................................................................................................ 50
5.2. Hướng phát triển: ............................................................................................. 50
CHƯƠNG 6. TÀI LIỆU THAM KHẢO ....................................................................... 52

3


1


TÓM TẮT ĐỒ ÁN
- Tổng quan đề tài: đặt vấn đề, lý do chọn đề tài, phát biểu bài toán, mục tiêu và phạm vi

tiếp cận đề tài.
- Tìm hiểu thực trạng, thị trường, khả năng phát triển.
- Phân tích các dịch vụ hệ thống website thông tin bất động sản trên thị trường.
- Tìm hiểu và áp dụng các công nghệ, cấu trúc mới để xây dựng hệ thống chia sẻ thông
tin bất động sản.
- Phát triển hệ thống với các tính năng cơ bản dựa trên các hệ thống liên quan, thêm
những tính năng nâng cao để tăng tính tiện lợi cho người dùng và tạo sự khác biệt.

- Giải quyết bài toán về độ tin cậy của thơng tin bất động sản được chia sẻ, tăng tính
tương tác cho người dùng với hệ thống.
- Trình bày kết luận và hướng phát triển đồ án.

1


Chương 1. TỔNG QUAN
1.1. Đặt vấn đề
- Thị trường bất động sản là một trong những thị trường có vị trí và vai trị quan trọng đối
với nền kinh tế quốc dân, có quan hệ trực tiếp với các thị trường tài chính tiền tệ, thị
trường xây dựng, thị trường vật liệu xây dựng, thị trường lao động... Phát triển và quản lý
có hiệu quả thị trường này sẽ góp phần quan trọng vào quá trình thúc đẩy phát triển kinh
tế - xã hội, tạo khả năng thu hút các nguồn vốn đầu tư cho phát triển, đóng góp thiết thực
vào q trình phát triển đơ thị và nơng thơn bền vững theo hướng cơng nghiệp hố, hiện
đại hóa đất nước
- Với các kiến thức về công nghệ thông tin, ta có thể phát triển được 1 phần mềm hỗ trợ
các chức năng cung cấp các thông tin thật và giúp người bn bán và người mua có thể
trao đổi thuận tiện hơn. Ngồi ra cũng giúp người mua có thể tìm kiếm các thơng tin phù
hợp với nhu cầu của bản thân và tin tưởng vào các thông tin đăng trên website thay vì
thơng qua các cị đất khơng uy tin trên thị trường lúc bấy giờ.
1.2. Phát biểu bài tốn
1.2.1. Giới thiệu hệ thống website “Rút trích và trực quan hóa thơng tin bất
động sản”
- Hệ thống sẽ thu thập, rút trích có chọn lọc thơng tin bất động sản một cách hiệu quả bao
gồm: nội dung, giá cả, địa chỉ, thơng tin chi tiết, hình ảnh của bất động sản, ... của trang
bất động sản nổi tiếng hiện nay đó là: alonhadat.com.vn. Sau đó sắp xếp, trực quan hóa và
lưu trữ thơng tin một cách có hệ thống để dễ dàng sử dụng và chia sẻ thông tin tới khách
hàng một cách hợp lý (rõ ràng, dễ nhìn, dễ đọc) và có lợi ích đối với khách hàng.
- Hệ thống giúp khách hàng không phải đi đến từng trang web nêu trên để tìm kiếm thơng

tin khi cần thiết mà chỉ cần truy cập vào trang web là đủ.
- Website có cơng cụ tìm kiếm một cách hiệu quả giúp người dùng cần tìm một số thơng tin
một cách nhanh nhất có thể, ví dụ tìm theo: loại nhà đất, địa chỉ bất động sản, giá cả bất động

2


sản,...

- Website có cơng cụ trực quan dữ liệu một cách hiệu quả giúp người dùng so sánh thông
tin giữa các trang web một cách nhanh nhất có thể.
- Hệ thống cịn cho phép người dùng đăng thơng tin bất động sản của mình lên để chia sẻ
rộng rãi tới những người dùng khác và những khách hàng tìm năng.
- Trên mỗi tin tức được chia sẻ, hệ thống cho phép người dùng vào bày tỏ trạng thái như
Thích, Bình luận lên bài viết giúp bài viết có tính tin cậy hơn, khơng cịn là thơng tin từ
một chiều. Ngồi ra cịn có 2 icon thêm vào danh sách ưa thích hoặc bỏ khỏi danh sách
ưa thích. Tính năng này giúp người dùng khi thấy những thông tin nhà đất mà có hứng
thú sẽ lưu lại để tiện theo dõi.
- Ngồi ra, trên mỗi tin tức được chính người dùng chia sẻ trên hệ thống, người dùng sẽ
có quyền sửa hoặc xố tin tức đó nếu thấy nội dung cung cấp bị sai lệch, và người quản
trị là người có quyền sửa hoặc xố tồn bộ tin tức, để khi có ai đó báo cáo sai lệch về tin
tức nào, người quản trị sẽ trực tiếp sửa hoặc gỡ bỏ.

1.2.2. Khảo sát hệ thống liên quan
- Nhóm đã tham khảo nhiều hệ thống website bất động sản như batdongsan.com.vn.
- Hầu hết các website đề chia sẻ thông tin bất động sản, cho phép tìm kiếm loại hình bất động
sản mà người dùng quan tâm, cho phép đăng bài rao bán về bất động sản của người dùng
nhưng những thông tin website cung cấp đều mang tính một chiều, người dùng khơng có khả
năng xác thực tính an tồn hay đúng đắn của thơng tin, khiến cho việc tìm kiếm trở nên mơ
hồ. Chính vì lẽ đó hệ thống sẽ đưa chức năng cải thiện những vấn đề trên và đặc biệt hơn nữa

là thiết kế một website mang tính đột phá như một trang tin tức về bất động sản cho phép
người dùng có thể vừa tìm hiểu thị trường và có cả các thơng tin cụ thể và chính xác hơn.

3


1.3. Mục tiêu và phạm vi đề tài
1.3.1. Mục tiêu
- Xây dựng một website trên nền tảng web với mục đích chính là tìm kiếm, trực quan dữ

liệu và chia sẻ thông tin bất động sản.
- Xây dựng chức năng thêm vào danh sách ưu thích để tiện cho người dùng.
- Xây dựng server theo thời gian thực, cập nhật các thông tin bài viết người dùng đăng
hoặc chia sẻ.
- Xây dựng chức năng đăng thông tin bất động sản.
- Xây dựng chức năng cập nhật và xố thơng tin bất động sản.
- Xây dựng chức năng đăng nhập và hệ thống người dùng để tăng tính bảo mật.
- Xây dựng chức năng tìm kiếm thơng tin bất động sản cơ bản và nâng cao.
- Xây dựng chức năng sắp xếp với các yêu cầu cơ bản để giúp người dùng tiện trong lúc
tìm kiếm thơng tin.
1.3.2. Phạm vi
Sau khi tìm hiểu và nghiên cứu sơ bộ về nhu cầu sử dụng của người dùng, nhóm quyết
định phạm vi thực hiện đề tài như sau:
- Phạm vi địa lý: Ứng dụng được sử dụng tại Việt Nam
- Phạm vi chức năng:
• Quản lý thơng tin người dùng
• Quản lí thơng tin bất động sản
• Quản lí bài viết của người dùng
4



• Tìm kiếm thơng tin loại hình bất động sản
• Sắp xếp thơng tin bất động sản
• Cập nhật thơng tin bất động sản mới nhất
• Danh sách ưa thích
1.3.3. Đối tượng sử dụng
Các cá nhân có nhu cầu tìm kiếm và chia sẻ thông tin bất động sản.
1.3.4. Kết quả dự kiến
- Hồn thành website cung cấp thơng tin bất động sản.

- Hoàn thành chức năng cho phép người dùng lưu vào danh sách ưa thích.
- Hồn thành chức năng tìm kiếm và sắp xếp tin tức.
- Hồn thành chi tiết về 1 thông tin bất động sản.

5


Chương 2. CƠ SỞ LÝ THUYẾT
2.1. Nodejs
2.1.1. Giới thiệu về Nodejs
NodeJS là một nền tảng được xây dựng trên V8 JavaScript Engine – trình thơng dịch thực
thi mã JavaScript, giúp xây dựng các ứng dụng web một cách đơn giản và dễ dàng mở
rộng.
NodeJS được phát triển bởi Ryan Dahl vào năm 2009 và có thể chạy trên nhiều hệ điều
hành khác nhau: OS X, Microsoft Windows, Linux.
Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu
năng khá cao.
Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực.
Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới
công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể.

2.1.2. Tại sao nên sử dụng Nodejs
Các ứng dụng Nodejs được viết bằng javascript, ngôn ngữ này là một ngôn ngữ khá
thông dụng. Theo tác giả của ngơn ngữ Javascript, Ryan Dahl: “Javascript có những đặc
tính mà làm cho nó rất khác biệt so với các ngơn ngữ lập trình động cịn lại, cụ thể là nó
khơng có khái niệm về đa luồng, tất cả là đơn luồng và hướng sự kiện.”
Tốc độ xử lý nhanh. Nhờ cơ chế xử lý bất đồng độ (non-blocking), NodeJS có thể xử lý
hàng ngàn kết nối cùng lúc mà khơng gặp bất cứ khó khăn nào.
Dễ dàng mở rộng. Nếu bạn có nhu cầu phát triển website thì tính năng dễ dàng mở rộng
của NodeJS là một lợi thế cực kỳ quan trọng.
Các ứng dụng NodeJS đáp ứng tốt thời gian thực và chạy đa nền tảng, đa thiết bị.

6


Node.js sử dụng một mơ hình luồng duy nhất với sự kiện lặp. cơ chế tổ chức sự kiện giúp
các máy chủ để đáp ứng một cách không ngăn chặn và làm cho máy chủ cao khả năng
mở rộng như trái ngược với các máy chủ truyền thống mà tạo đề hạn chế để xử lý yêu
cầu. Node.js sử dụng một chương trình đơn luồng và các chương trình tương tự có thể
cung cấp dịch vụ cho một số lượng lớn hơn nhiều so với yêu cầu máy chủ truyền thống
như Apache HTTP Server.

Hình 2.1. Blocking I/O (trái) và Non-Blocking I/O (phải)

2.1.3. Áp dụng Nodejs vào đề tài
Trong hệ thống ứng dụng của nhóm, Nodejs được áp dụng để làm phần backend
cho hệ thống, vì những ưu điểm của Nodejs dành cho một ứng dụng nhỏ rất là tiện lợi đặc
biệt là tốc độ xử lí.
2.2. ExpressJS framework
2.2.1. Giới thiệu về ExpressJS
Express js là một Framework nhỏ, nhưng linh hoạt được xây dựng trên nền tảng của

Nodejs. Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile
Về các package hỗ trợ: Expressjs có vơ số các package hỗ trợ nên không phải lo lắng khi
làm việc với Framework này.
7


Về performance: Express cung cấp thêm về các tính năng (feature) để dev lập trình tốt
hơn. Chứ khơng làm giảm tốc độ của NodeJS.
Và hơn hết, các Framework nổi tiếng của NodeJS hiện nay đều sử dụng ExpressJS như
một core function, chẳng hạn: SailsJS, MEAN,....

Hình 2.2. Cấu trúc của ExpressJs
Root:
- App.js chứa các thơng tin về cấu hình, khai báo, các định nghĩa,... để ứng dụng của
chúng ta chạy trơn tru.
- Package.json chứa các package cho ứng dụng chạy, có chức năng tương tự như
composer.json hoặc Gemfile trong PHP hoặc RoR.
- Folder routes: chứa các route có trong ứng dụng
- Folder view: chứa view/template cho ứng dụng
- Folder public chứa các file css, js, images, ... cho ứng dụng

8


2.2.2. Tại sao nên sử dụng ExpressJS
Framework giúp cho việc phát triển ứng dụng được rút ngắn đi rất nhiều. Cũng như các
framework dựa trên những ngôn ngữ khác như Rails (Ruby); Django (Python); Laravel,
CakePHP (PHP)… Express được xây dựng dựa trên NodeJs. Vậy nó có ưu điểm gì để ta
lựa chọn cho việc phát triển ứng dụng.
Express hỗ trợ việc phát triển ứng dụng theo mơ hình MVC, mơ hình phổ biến cho việc

lập trình web hiện nay.
Cho phép định nghĩa Middleware hỗ trợ cho việc tổ chức và tái sử dụng code.
Định nghĩa routes và các request method đến server một cách dễ dàng.
Hỗ trợ REST API.
Và còn rất nhiều thứ mà framework này hỗ trợ.
2.2.3. Áp dụng ExpressJS vào đề tài
Trong hệ thống ứng dụng của nhóm, ExpressJS được áp dụng để làm phần
framework backend cho hệ thống, vì những ưu điểm của ExpressJS có dành cho một ứng
dụng nhỏ rất là tiện lợi đặc biệt là tốc độ xử lí, hỗ trợ Rest API, cộng đồng lớn mạnh.
2.3. MongoDB
2.3.1. Giới thiệu về MongoDB
MongoDB là phần mềm cơ sở dữ liệu mã nguồn mở NoSQL hỗ trợ đa nền tảng
được thiết kế theo hướng đối tượng. Vì thế, nó có thể dùng để lưu trữ dữ liệu có cấu trúc
phức tạp và đa dạng. Dữ liệu được gọi là Big Data. Đặc biệt, chương trình này lưu trữ dữ
liệu vào collection theo hướng tài liệu kiểu JSON thay vì bảng nên có hiệu suất cao và
tính khả dụng cao.
Trong khái niệm của MongoDB có nhắc đến NoSQL, vậy NoSQL (Non-Relational
SQL) là dạng cơ sở dữ liệu mã nguồn mở được ra đời như một mơ hình tiến bộ hơn về
9


tốc độ, tính năng,… so với hệ quản trị cơ sở dữ liệu quan hệ RDBMS. NoSQL có kiểu dữ
liệu JSON. Đây là dạng dữ liệu kiểu key và value cùng với hiệu suất nhanh và khả năng
mở rộng không bị ràng buộc bởi việc tạo khóa ngoại, khóa chính,… nên được ưa chuộng
và sử dụng rất phổ biến.
Với NoSQL, có thể mở rộng dữ liệu một cách thoải mái mà khơng phải lo lắng về
khóa ngoại hay là khóa chính, hoặc các cơng việc như là kiểm tra ràng buộc như hệ quản
trị cơ sở dữ liệu truyền thống.
Ưu điểm: NoSQL giải quyết được các vấn đề dữ liệu lớn (big data) về các hệ thống
thông tin hoặc là phân tán dữ liệu.

Nhược điểm: cũng từ ưu điểm trên, do không hạn chế việc mở rộng dữ liệu nên nó
tồn tại một số nhược điểm như là: sự phụ thuộc vào từng bản ghi, tính nhất quán hoặc là
đặc tính tồn vẹn dữ liệu.
2.3.2. Tại sao nên sử dụng hệ quản trị cơ sở dữ liệu MongoDB
Ưu điểm:
- Đầu tiên có thể nhắc đến là tính linh hoạt lưu trữ dữ liệu theo các kích cỡ khác nhau, dữ
liệu dưới dạng hướng tài liệu JSON nên bạn có thể chèn vào thoải mái bất cứ thơng tin gì
bạn muốn.
- Khác với RDBMS, dữ liệu trong đây khơng có sự ràng buộc và khơng có u cầu tn
theo khn khổ nhất định, điều này giúp bạn tiết kiệm thời gian cho việc kiểm tra sự thỏa
mãn về cấu trúc nếu muốn chèn, xóa, cập nhật hay thay đổi các dữ liệu trong bảng.
- MongoDB dễ dàng mở rộng hệ thống bằng cách thêm node vào cluster – cụm các node
chứa dữ liệu giao tiếp với nhau.
- Ưu điểm thứ tư là tốc độ truy vấn nhanh hơn nhiều so với hệ quản trị cơ sở dữ liệu quan
hệ RDBMS do dữ liệu truy vấn được cached lên bộ nhớ RAM để lượt truy vấn sau diễn ra
nhanh hơn mà không cần đọc từ ổ cứng.
10


- Cũng là một ưu điểm về hiệu suất truy vấn của MongoDB, trường dữ liệu “_id” luôn
được tự động đánh chỉ mục để đạt hiệu suất cao nhất.
Nhược điểm:
- Điều đầu tiên phải kể đến ở đây là MongoDB khơng có các tính chất ràng buộc như
trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận.
- MongoDB sử dụng sẽ hao tốn tài nguyên của hệ thống nhiều hơn RDBMS. Nhưng đến
thời điểm hiện tại thì vấn đề này khơng cịn là điều lo ngại nữa vì các máy tính mặt bằng
chung cấu hình đều khá cao.
Tại sao nên sử dụng MongoDB:
- Khi website có tính chất INSERT cao, bởi vì mặc định MongoDB có sẵn cơ chế ghi với
tốc độ cao và an toàn.

- Khi website ở dạng real-time nhiều, nghĩa là nhiều người cùng thao tác với ứng dụng
trong thời gian thực. Ví dụ như ứng dụng chat hay stream trực tuyến chẳng hạn.
- Với website có nhiều dữ liệu, giả sử ứng dụng web có đến 10 triệu bản ghi thì khá khó
khăn để query được với Mysql. Chọn MongoDB vì MongoDB có khả năng tìm kiếm
thơng tin liên quan cũng khá nhanh nên trường hợp này nên dùng nó.
2.3.3. Áp dụng MongoDB vào đề tài
Nhờ những tính năng nổi trội của MongoDB, nhóm đã sử dụng MongoDB dùng làm hệ
quản trị cơ sở dữ liệu chính. Server sử dụng MongoDB để lưu trữ toàn bộ dữ liệu, dữ liệu
này sẽ được server sử dụng REST API để gọi lên.

11


2.4. Reactjs
2.4.1. Giới thiệu về Reactjs
React.js là một thư viện Javascript đang nổi lên trong những năm gần đây với xu hướng
Single Page Application. Trong khi những framework khác cố gắng hướng đến một mơ
hình MVC hồn thiện thì React nổi bật với sự đơn giản và dễ dàng phối hợp với những
thư viện Javascript khác. Nếu như AngularJS là một Framework cho phép nhúng code
javasscript trong code html thông qua các attribute như ng-model, ng-repeat...thì với react
là một library cho phép nhúng code html trong code javascript nhờ vào JSX, có thể dễ
dàng lồng các đoạn HTML vào trong JS.Tích hợp giữa javascript và HTML vào trong
JSX làm cho các component dễ hiểu hơn.
React là một thư viện UI phát triển tại Facebook để hỗ trợ việc xây dựng những thành
phần (components) UI có tính tương tác cao, có trạng thái và có thể sử dụng lại được.
React được sử dụng tại Facebook trong production, và Instagram được viết hoàn toàn trên
React.
Một trong những điểm hấp dẫn của React là thư viện này khơng chỉ hoạt động trên phía
client, mà cịn được render trên server và có thể kết nối với nhau. React so sánh sự thay
đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất

trên DOM.
2.4.2. Tại sao nên sử dụng Reactjs
Dễ sử dụng:
- React là một thư viện GUI nguồn mở JavaScript tập trung vào một điều cụ thể;
hồn thành nhiệm vụ UI hiệu quả. Nó được phân loại thành kiểu “V” trong mơ
hình MVC (Model-View-Controller).
- Là lập trình viên JavaScript, bạn sẽ dễ dàng hiểu được những điều cơ bản về
React. Bạn thậm chí có thể bắt đầu phát triển các ứng dụng dựa trên web bằng cách sử
dụng react chỉ trong vài ngày.
12


×