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 1BỘ 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 2Mụ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 31.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 4Hì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 5NHIỆ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 6Chươ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 71.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 8Mỗ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 9Cluster 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 11soft: -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 121.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 13Theo 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 15Mụ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 16TIEU 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