1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo TIỂU LUẬN môn học tìm hiểu về công cụ tìm kiếm elasticsearch và ứng dụng tìm kiếm vào website thương mại điện tử

41 11 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

Tiêu đề Báo cáo Tiểu luận môn học Tìm hiểu về công cụ tìm kiếm Elasticsearch và ứng dụng tìm kiếm vào website thương mại điện tử
Tác giả Trần Minh Duyệt
Người hướng dẫn PGS.TS. Nguyễn Thị Thúy Loan
Trường học Trường Đại học Công nghệ TP. Hồ Chí Minh
Chuyên ngành Các hệ cơ sở dữ liệu
Thể loại báo cáo tiểu luận
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 41
Dung lượng 1,69 MB

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

Nội dung

Nó cho phép ta chuyển dữ liệu vào và tìm kiếm trực tiếp, thay vì tìm kiếm trong một hệ quản lý cơ sở dữ liệu thôngthường như Oracle, MySQL,… Elasticsearch cung cấp cho người dùng một

Trang 1

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

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH

BÁO CÁO

TIỂU LUẬN MÔN HỌC

Tìm hiểu về công cụ tìm kiếm Elasticsearch và ứng dụng tìm kiếm vào website thương mại

điện tử

Môn học: Các hệ cơ sở dữ liệu

Ngành: CÔNG NGHỆ THÔNG TIN

Giảng viên: PGS.TS Nguyễn Thị Thúy Loan

Trang 2

Mục lục

Chương 1 Kiến thức nền tảng

1.1 Elasticsearch:

1.1.1 Elasticsearch là gì?

1.1.2 Elasticsearch hoạt động như thế nào:

1.1.3 Các khái niệm cần biết về Elasticsearch

1.1.3.1 Document

1.1.3.2 Index

1.1.3.3 Shard

1.1.3.4 Node

1.1.3.5 Cluster

1.1.4 Ưu nhược điểm của Elasticsearch

1.1.4.1 Ưu điểm

1.1.4.2 Nhược điểm

1.1.5 Cách cài đặt:

1.1.6 Các lệnh cơ bản để truy vấn trong Elasticsearch

1.1.6.1 Tạo một index

1.1.6.2 Chỉnh sửa, cập nhật tài liệu

1.1.6.3 Xoá tài liệu

1.1.6.4 Truy vấn tìm kiếm cơ bản

1.2 Kibana

1.3 Docker

1.3.1 Giới thiệu

1.3.2 Container

1.3.3 Khái niệm liên quan

1.4 MongoDB

1.4.1 Giới thiệu MongoDB

1.4.2 Một số câu lệnh cơ bản trên MongoDB

1.4.3 Ưu điểm của MongoDB

1.4.4 Nhược điểm của MongoDB

1.5 NodeJS

1.3.1 Giới thiệu

1.3.2 Những ứng dụng nên viết bằng Nodejs

1.6 Express

Trang 3

1.7 Restful Api

1.7.2 Đặc điểm của Resful API

1.8 React JS

1.8.1 Lợi ích của việc sử dụng react js

Chương 2.Phát biểu bài toán

2.1 Các chức năng cơ bản

2.2 Kiến trúc tổng thể phần mềm

Kiến trúc tổng thể của phần mềm

Chương 3.Đặt tả yêu cầu:

3.1 Sơ đồ và CSDL

3.2 Đặc tả Use Case

Chương 4.Các giao diện của đề tài

4.1 Kibana

4.2 Studio 3T

4.3 Docker

4.4 Trang chủ

4.5 Trang admin

4.6 Chi tiết một sản phẩm

4.7 Giỏ hàng

4.8 Bộ lọc sản phẩm

4.9 Đăng nhập

4.10 Đăng ký

Tài liệu tham khảo

Mục lục hình ảnh Hình 1 1 Sơ đồ hoạt động của Elasticsearch

Hình 1 2 Cách hoạt động của Elasticseach

Hình 1 3 Giao diện kibana

Hình 3 1 Sơ đồ giao tiếp của hệ thống

Hình 3 2 Cơ sở dữ liệu của dự án

Hình 3 3 Sơ đồ usecase

Hình 4 1 Giao diện dev tool của kibana

Hình 4 2 Giao diện chính của Studio 3T

Hình 4 3 Giao diện chính của docker desktop

TIEU LUAN MOI download : skknchat123@gmail.com moi nhat

Trang 4

Hình 4 4 Giao diện chính trang web 26

Hình 4 5 Giao diện chính trang admin 26

Hình 4 6 Giao diện chi tiết của sản phẩm 27

Hình 4 7 Giao diện chi tiết của sản phẩm 27

Hình 4 8 Giao diện bộ lọc sản phẩm 28

Hình 4 9 Giao diện đăng nhập 28

Hình 4 10 Giao diện đăng ký tài khoản 29

Trang 5

NHIỆM VỤ ĐỀ TÀI

1 Nội dung và các yêu cầu cần giải quyết trong báo cáo môn học. o Lập trình NodeJS, ReactJS, Express Framework

o Công cụ tìm kiếm Elasticsearch

o Hệ quản trị cơ sở dữ liệu MongoDB

o Kết nối NodeJS, Elasticsearch với MongoDB

2 Các tài liệu, số liệu cần thiết

Sử dụng số liệu thực tế thu thập trên mạng internet

TIEU LUAN MOI download : skknchat123@gmail.com moi nhat

Trang 6

Chương 1 Kiến thức nền tảng

1.1 Elasticsearch:

1.1.1 Elasticsearch là gì?

Elasticsearch là một dạng Search Engine (Công cụ tìm kiếm) phát triển dựa trên nền tảng

Apache Lucene Elasticsearch được ra mắt năm 2010 bởi Shay Banon, được xây dựng

bằng ngôn ngữ Java, với giao diện web HTTP có hỗ trợ JSON Nó cho phép ta chuyển dữ

liệu vào và tìm kiếm trực tiếp, thay vì tìm kiếm trong một hệ quản lý cơ sở dữ liệu thôngthường như Oracle, MySQL,…

Elasticsearch cung cấp cho người dùng một hệ thống tìm kiếm dạng phân tán, phù hợp

với tệp dữ liệu lớn Elasticsearch thường được sử dụng trong việc tìm kiếm đơn giản trêntrang web, chỉ mục và thu thập dữ liệu, cho đến phân tích và trực quan hóa dữ liệu kinhdoanh

Elasticsearch thường hoạt động với các thành phần khác trong ELK

Stack, Logstash và Kibana, trong đó đóng vai trò lập chỉ mục dữ liệu.

Được các công ty lớn sử dụng :

Trang 7

1.1.2 Elasticsearch hoạt động như thế nào:

Hình 1 1 Sơ đồ hoạt động của Elasticsearch

Về cơ bản, Elasticsearch hoạt động như một Cloud Server có khả năng tìm kiếm thôngqua cơ chế RESTful Trong đó, người dùng tạo ra các HTTP Request và dữ liệu dạngJSON, sau đó nhập vào Elasticsearch Các dữ liệu này đều được đánh Index (Chỉ mục),giúp đem lại hiệu quả tìm kiếm rất cao

Đầu tiên, dữ liệu được đưa vào Elasticsearch từ nhiều nguồn khác nhau, sau đó được phântích, xử lý, trong quá trình nhập liệu Tiếp theo, dữ liệu được phân loại và chỉ mục, đượcđẩy lên Server Elasticsearch Cuối cùng, người dùng có thể tạo các truy vấn phức tạp vàlấy dữ liệu được trả về từ server Elasticsearch

1.1.3 Các khái niệm cần biết về Elasticsearch

1.1.3.1 Document

Document là thông tin cơ bản được lập chỉ mục trong Elasticsearch, là đơn vị lưu

trữ dữ liệu nhỏ nhất trong Elasticsearch Document có thể là văn bản, hoặc có thể

là bất kỳ dạng cấu trúc dữ liệu nào được mã hóa bằng JSON như số, chuỗi, ngày

tháng,…

2TIEU LUAN MOI download : skknchat123@gmail.com moi nhat

Trang 8

Mỗi Document có một ID duy nhất cho một kiểu dữ liệu duy nhất Ví dụ, một

Document có thể đại diện cho một bài báo bách khoa toàn thư

1.1.3.2 Index

Index (Chỉ mục) là tập hợp các tài liệu có đặc điểm liên quan về mặt logic Ví dụ:

Trong trang web của một sàn thương mại điện tử, bạn sẽ tìm thấy một Chỉ mụccho Khách hàng, một Chỉ mục cho Sản phẩm,… Chỉ mục được sử dụng để tìmkiếm, thêm mới hoặc xóa các tài liệu trong đó

Một khái niệm trong Index mà bạn nên biết đó là Inverted Index (Chỉ mục đảo

ngược) Chỉ mục đảo ngược không lưu trữ trực tiếp các chuỗi mà chia từng tàiliệu thành các cụm từ tìm kiếm riêng lẻ Nhờ đó, người dùng có thể tìm thấy cáckết quả phù hợp nhanh chóng, kể cả trong các tệp dữ liệu với khối lượng lớn.1.1.3.3 Shard

Shard là tập con các Document của 1 Index, là đơn vị lưu trữ dữ liệu nhỏ nhất,

hoạt động ở mức thấp nhất Bằng cách phân phối Documents trong một Index trên

nhiều Shard, Elasticsearch có thể đảm bảo tính dự phòng, bảo vệ hệ thống khỏi

lỗi phần cứng và giúp tăng khả năng truy vấn khi hoạt động

Có 2 loại Shard là : Primary Shard và Replica Shard

Primary Shard được lưu trữ dữ liệu và đánh Index, sau đó được vận chuyển

tới các Replica Shard.

Replica Shard là nơi lưu trữ dữ liệu nhân bản của Primary Shard, giúp đảm

bảo dữ liệu Primary Shard được toàn vẹn ngay cả khi hệ thống xảy ra vấn đề.

1.1.3.4 Node

Node được coi là bộ phận “đầu não” của Elasticsearch Đây là nơi lưu trữ dữ liệu

trực tiếp, đánh Index của Cluster và thực hiện các thao tác tìm kiếm dữ liệu MỗiNode thường được định danh bằng 1 một cái tên duy nhất

1.1.3.5 Cluster

Trang 9

Cluster là tập hợp các nodes hoạt động cùng với nhau Mỗi Cluster có một Node

chính được lựa chọn tự động, Node này có thể thay thế Một trong những lỗi sai

của các developer mới là định danh các Cluster trùng tên nhau, điều này sẽ gây

lỗi cho các Node Bạn nên lưu ý vấn đề này khi tiến hành setup

Hình 1 2 Cách hoạt động của Elasticseach

1.1.4 Ưu nhược điểm của Elasticsearch

1.1.4.1 Ưu điểm

Elasticsearch thay vì tìm kiếm văn bản trực tiếp, nó tìm kiếm một Index Nó sử

dụng cấu trúc Document thay vì bảng và lược đồ

Khả năng phân phối mở rộng: Bản chất phân tán của Elasticsearch giúp

người dùng mở rộng quy mô lên hàng trăm, hàng nghìn máy chủ và xử lý hàng petabyte dữ liệu

Đơn giản hóa hiển thị và báo cáo dữ liệu: Elasticsearch cho phép tích hợp

với Beats và Logstash, giúp người dùng dễ dàng xử lý dữ liệu trước khi đưa vào

Elasticsearch Ngoài ra, khả năng trực quan hóa giao diện giúp truy cập dữ liệu một cách nhanh chóng

4TIEU LUAN MOI download : skknchat123@gmail.com moi nhat

Trang 10

Tính năng vượt trội: Elasticsearch cung cấp một số tính năng vượt trội cho

phép người dùng lưu trữ và tìm kiếm dữ liệu hiệu quả như cuộn dữ liệu và quản

lý vòng đời Index

• Ngoài ra, Elasticsearch cũng hỗ trợ dữ liệu từ Java, PhP, Javascript, NET,

Python, giúp người dùng dễ dàng hơn trong quá trình sử dụng và chuyển đổi

1.1.4.2 Nhược điểm

• Elasticsearch được thiết kế chủ yếu cho việc search dữ liệu, do vậy yếu thế hơn

so với các database khác về các mục đích ngoài search

• Elasticsearch không thích hợp với những hệ thống thường xuyên cập nhật dữ

restart: alwaysenvironment:

Trang 11

soft: -1hard: -1nofile:

soft: 65536hard: 65536cap_add:

data ports:

Bước 2: Chạy lên docker-compose up để build server

1.1.6 Các lệnh cơ bản để truy vấn trong Elasticsearch

1.1.6.1 Tạo một index

PUT /<tên index>

1.1.6.2 Chỉnh sửa, cập nhật tài liệu

PUT /<tên index>/_doc/1?pretty{

"name": "index-1",

"age": "20"

}1.1.6.3 Xoá tài liệu

DELETE /<tên index>

1.1.6.4 Truy vấn tìm kiếm cơ bản

GET /<tên index>/_search{

"query": { "match": { "account_number": 20 } }}

6TIEU LUAN MOI download : skknchat123@gmail.com moi nhat

Trang 12

1.2 Kibana

Kibana là một nền tảng phân tích hiển thị dữ liệu từ Elasticsearch một cách trực quan dễ sửdụng,Kibana cũng là một công cụ mã nguồn mở miễn phí, cho tất cả mọi người sử dụng.Kibana cung cấp các tính năng cho người dùng quản lý như biểu đồ cột, biểu đồ đường, biểu đồtròn, biểu đồ nhiệt và nhiều loại chart khác nữa

Hình 1 3 Giao diện kibana

1.3 Docker

1.3.1 Giới thiệu

Docker là một nền tảng để cung cấp cách để building, deploying và running ứng dụng dễ

dàng hơn bằng cách sử dụng các containers (trên nền tảng ảo hóa) Ban đầu viết bằngPython, hiện tại đã chuyển sang Golang

1.3.2 Container

Các containers cho phép lập trình viên đóng gói một ứng dụng với tất cả các phần cần thiết, chẳng hạn như thư viện và các phụ thuộc khác, và gói tất cả ra dưới dạng một package Bằng cách đó, nhờ vào container, ứng dụng sẽ chạy trên mọi máy Linux khác bất kể mọi cài đặt tùy chỉnh mà máy có thể có khác với máy được sử dụng để viết code

Trang 13

Theo một cách nào đó, Docker khá giống virtual machine Nhưng tại sao Docker lại phát triển, phổ biến nhanh chóng? Đây là những nguyên nhân:

Tính dễ ứng dụng: Docker rất dễ cho mọi người sử dụng từ lập trình viên, sys admin… nó

tận dụng lợi thế của container để build, test nhanh chóng Có thể đóng gói ứng dụng trên laptop của họ và chạytrên public cloud, private cloud… Câu thần chú là “Build once, run

anywhere”

Tốc độ: Docker container rất nhẹ và nhanh, bạn có thể tạo và chạy docker container

trong vài giây

Môi trường chạy và khả năng mở rộng: Bạn có thể chia nhỏ những chức năng của ứng

dụng thành các container riêng lẻ Ví dụng Database chạy trên một container và Redis cache

có thể chạy trên một container khác trong khi ứng dụng Node.js lại chạy trên một cái khácnữa Với Docker, rất dễ để liên kết các container với nhau để tạo thành một ứng dụng, làmcho nó dễ dàng scale, update các thành phần độc lập với nhau

1.3.3 Khái niệm liên quan

Docker Engine : là thành phần chính của Docker, như một công cụ để đóng gói ứng

dụng

Docker Hub : là một “github for docker images” Trên DockerHub có hàng ngàn public

images được tạo bởi cộng đồng cho phép bạn dễ dàng tìm thấy những image mà bạn cần Và chỉ cần pull về

và sử dụng với một số config mà bạn mong muốn

Images: là một khuôn mẫu để tạo một container Thường thì image sẽ dựa trên 1 image

có sẵn với những tùy chỉnh thêm Ví dụ bạn build 1 image dựa trên image Centos mẫu có sẵn để chạy Nginx

và những tùy chỉnh, cấu hình để ứng dụng web của bạn có thể chạy được Bạn có thể tự build một imageriêng cho mình hoặc sử dụng những image được chia sẽ từ cộng đồng Docker Hub Một image sẽ được builddựa trên những chỉ dẫn của

Dockerfile

Container: là một instance của một image Bạn có thể create, start, stop, move or delete

container dựa trên Docker API hoặc Docker CLI

Docker Client: là một công cụ giúp người dùng giao tiếp với Docker host.

8TIEU LUAN MOI download : skknchat123@gmail.com moi nhat

Trang 14

Docker Daemon: lắng nghe các yêu cầu từ Docker Client để quản lý các đối tượng như

Container, Image, Network và Volumes thông qua REST API Các Docker Daemon cũng giao tiếp với nhau

để quản lý các Docker Service

Dockerfile: là một tập tin bao gồm các chỉ dẫn để build một image

Volumes: là phần dữ liệu được tạo ra khi container được khởi tạo.

1.4.1 Giới thiệu MongoDBMongoDB là hệ CSDL mã nguồn mở, là CSDL phi quan hệ hay còn gọi là NoSQL (None-Relationship SQL hay còn gọi là Not only SQL) NoSQL được phát triển trên JavascriptFramework với kiểu dữ liệu là JSON và dạng dữ liệu theo kiểu key và value NoSQL ra đờinhư là sự bổ sung 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ệuquan hệ RDBMS (Relational Database Management System - Hệ quản trị cơ sở dữ liệu quanhệ) về tốc độ, tính năng, khả năng mở rộng Với NoSQL bạn có thể mở rộng dữ liệu màkhông lo tới những việc như tạo khóa ngoại, khóa chính, kiểm tra ràng buộc NoSQL bỏ quatính toàn vẹn của dữ liệu và transaction để đổi lấy hiệu suất nhanh và khả năng mở rộng.NoSQL được sử dụng ở rất nhiều công ty, tập đoàn lớn Ví dụ như FaceBook sử dụngCassandra do FaceBook phát triển, Google phát triển và sử dụng BigTable MongoDB là mộtdatabase hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay

vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh

Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQLhay SQL Server ) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùngkhái niệm là collection thay vì bảng So với RDBMS thì trong MongoDB collection ứngvới table, còn document sẽ ứng với row, MongoDB sẽ dùng các document thay cho rowtrong RDBMS

Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữkhông cần tuân theo một cấu trúc nhất định Thông tin liên quan được lưu trữ cùng nhau

để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB

1.4.2 Một số câu lệnh cơ bản trên MongoDB

Trang 15

Mục này so sánh một số câu lệnh giữa MongoDB và MySQL để làm nổi bật cách xử lý dữliệu của MongoDB.

Tìm SELECT * FROM students WHERE

db.students.find({ name: 'thanh' });

kiếm name = 'thanh';

1.4.3 Ưu điểm của MongoDB

• Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi mộtcollection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ

liệu, do đó việc chèn thêm dữ liệu vào không bị hạn chế

• Dữ liệu trong MongoDB không bị ràng buộc như cơ sở dữ liệu quan hệ, không kết nối

Do đó, khi bổ sung, xóa hay cập nhật sẽ không bị mất thời gian kiểm tra xem có thỏa mãncác ràng buộc dữ liệu như trong RDBMS

• MongoDB rất dễ mở rộng Trong MongoDB có một khái niệm cụm dữ liệu (cluster), là

cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêmmột node với vào cluster

10

Trang 16

TIEU LUAN MOI download : skknchat123@gmail.com moi nhat

Trang 17

• Trường dữ liệu “_id” luôn được tự động đánh chỉ mục để tốc độ truy vấn thông tin đạt hiệu suất cao nhất.

• Khi có một truy vấn dữ liệu, các bản ghi được ghi tạm thời lên bộ nhớ Ram, để phục vụ

các truy vấn tiếp theo, vì vậy sự xử lý cũng diễn ra nhanh hơn mà không cần phải đọc lại

từ ổ cứng

• Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơnhẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) Với một lượng dữ liệu đủ lớn khi thử nghiệmcho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL

1.4.4 Nhược điểm của MongoDB

Hệ quản trị cơ sở dữ liệu MongoDB có nhiều ưu điểm, tuy nhiên cũng có một số nhượcđiểm MongoDB không có các tính chất ràng buộc như trong RDBMS nên khi thao tácvới MongoDB thì chuyên gia phải tự xử lý các mối quan hệ giữa các dữ liệu Bộ nhớ lưutrữ bị tăng, do dữ liệu lưu dưới dạng key-value, các bộ dữ liệu chỉ khác về giá trị do đócác Khóa sẽ bị lặp lại MongoDB cũng không hỗ trợ liên kết nên dữ liệu bị dư thừa Mộtđiều nữa, khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổcứng, mà sau một khoảng thời gian 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệuthay đổi từ RAM xuống thiết bị lưu trữ, điều này sẽ có nguy cơ bị mất dữ liệu khi xảy racác tình huống như mất điện

1.5 NodeJS

1.3.1 Giới thiệuNodeJS là một platform mới, xây dựng trên Chrome Javascript Runtime (V8) nhằm pháttriển các ứng dụng phía máy chủ nhanh chóng và dễ mở rộng Một số điểm mạnh củaNodeJS:

1.3.2 Những ứng dụng nên viết bằng NodejsRõ ràng, không phải cứ hot và mới là Nodejs làm gì cũng tốt, ví dụ như một ứng dụng cầntính ổn định cao, logic phức tạp thì các ngôn ngữ PHP hay Ruby vẫn là sự lựa chọn tốthơn Còn dưới đây là những ứng dụng có thể và nên viết bằng Nodejs:

• Websocket server: Các máy chủ web socket như là Online Chat, Game Server

11TIEU LUAN MOI download : skknchat123@gmail.com moi nhat

Trang 18

• Fast File Upload ClientL: là các chương trình upload file tốc độ cao.

Ad Server: Các máy chủ quảng cáo

Cloud Services: Các dịch vụ đám mây

• RESTful API: đây là những ứng dụng mà được sử dụng cho các ứng dụng khác thông qua API

• Any Real-time Data Application: bất kỳ một ứng dụng nào có yêu cầu về tốc độ thờigian thực Micro Services: Ý tưởng của micro services là chia nhỏ một ứng dụng lớn thành các dịch vụ nhỏ

và kết nối chúng lại với nhau Nodejs có thể làm tốt điều này

1.7.1 Giới thiệu RestFul API

API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo đó,một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác.API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổbiến như JSON hay XML

REST: REST là viết tắt của REpresentational State Transfer REST là tập hợp các hướngdẫn và kiến trúc sử dụng cho việc truyền dữ liệu REST áp dụng phổ biến cho các Webapp, nhưng cũng hoàn toàn có thể sử dụng cho các phần mềm nói chung Vì thế RESTfulAPI là các API mà tuân theo các kiến trúc và quy tắc của REST

1.7.2 Đặc điểm của Resful API

Trang 19

• Đánh version trong URL thay vì trong HTTP Headers Phương thức truy cập:

• PUT để sửa đổi hoặc thay thế đối tượng

• Tương tự như CRUD: Create, read, update, delete

1.8 React JS

Reactjs là một thư viện Javascript mã nguồn mở hỗ trợ xây dựng các thành phần giao diện

nhanh gọn và tiện lợi Bình thường các lập trình viên sẽ nhúng javascript vào code HTMLthông qua các attribute như AngularJS nhưng với Reactjs làm việc như một thư viện cho phép

nhúng HTML vào javascript thông qua JSX Qua đó bạn có thể dễ dàng lồng các đoạn

HTML vào trong JSX làm cho các component dễ hiểu và dễ sử dụng hơn.

Trong Reactjs thường dùng javascript để thiết kế bố cục cho trang web, nhưng nhược điểm làcấu trúc khá là khó Thay vào đó sử dụng JSX và nhúng các đoạn HTML vào javascript, ta thấy

cú pháp dễ hiểu hơn và JSX cũng có thể tối ưu code khi biên soạn Vừa dễ cho người lập trình

mà vừa tiện cho việc biên dịch

1.8.1 Lợi ích của việc sử dụng react js

Làm gì cũng phải có nguyên nhân, người dùng sử dụng Reactjs ngày càng nhiều thì Reactjs phải mang lại những lợi ích tốt

• ReactJS giúp cho việc viết các đoạn code Javascript sẽ trở nên dễ dàng hơn vì nó sử dụngmột cú pháp đặc biệt đó chính là cú pháp JSX Thông qua JSX cho phép nhúng code HTML

và Javascript

• ReactJS cho phép Developer phá vỡ những cấu tạo UI phức tạp thành những component

độc lập Dev sẽ không phải lo lắng về tổng thể ứng dụng web, giờ đây Developer dễ dàng chia nhỏ các cấu trúc UI/UX phức tạp thành từng component đơn giản hơn

• Đi kèm với ReactJS là rất nhiều các công cụ phát triển giúp cho việc debug code một cách dễ dàng hơn

13TIEU LUAN MOI download : skknchat123@gmail.com moi nhat

Trang 20

• Một trong những ưu điểm nữa của ReactJS đó là sự thân thiện với SEO Hầu như các JS

Frameworks không thân thiện với các tìm kiếm mặc dù đã được cải thiện nhiều nhưng dưới sự hỗ trợ của các render dữ liệu trả về dưới dạng web page giúp cho SEO chuẩn hơn

Chương 2. Phát biểu bài toán

2.1 Các chức năng cơ bản

Nhóm có ý tưởng tìm hiểu và tích hợp Elasticsearch vào trang web thương mại điện tử Là một

cửa hàng chuyên mua bán các thiết bị điện tử, đồ dùng công nghệ Với mong muốn là cửa hàng

sẽ được nhiều người biết đến, cũng như khách hàng dễ dàng mua sắm hơn Dưới cương vị là

một nhóm phát triển phần mềm, nhóm sẽ phát triển một website với mục tiêu sau:

- Tích hợp tìm kiếm Elasticsearch cho website

- Khi người dùng vào trang chủ website sẽ thấy các sản phẩm nổi bật, được bán nhiều nhất hoặc

các chương trình khuyến mãi của cửa hàng

- Người dùng dễ dàng tìm kiếm, lọc các sản phẩm theo mong muốn của họ

- Người dùng có thể đặt hàng, điều chỉnh giỏ hàng, thanh toán online mà không cần đến trực tiếp cửa hàng

- Người dùng có thể so sánh các sản phẩm với nhau để dễ dàng trong việc chọn lựa

- Người dùng có thể tạo tài khoản, đăng nhập khi mua hàng để lưu lại lịch sử mua hàng và nhậncác khuyến mãi

- Về phía cửa hàng, có trang Admin để xem các thông tin thống kê, thêm, xoá, sửa sản phẩm

2.2 Kiến trúc tổng thể phần mềm

Kiến trúc tổng thể của phần mềm

o Website sẽ được tổ chức theo một mô hình pattern của software architecture đang được phổ

biến là Monolithic Architecture (Kiến trúc nguyên khối) Lý do:

o Quy mô dự án nhỏ, quá trình phát triển đơn giản, tập trung và trực tiếp

o Kinh nghiệm đội ngũ phát triển chưa nhiều, nên mô hình này sẽ phù hợp vì không đòi hỏi quánhiều về triển khai dự án

o Development flow khá đơn giản, chỉ cần chỉnh sửa, submit, merge code, deploy

o Database: sử dụng MongoDB

o SearchEngine: Elasticsearch

Ngày đăng: 29/10/2022, 08:06

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