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

xây dựng website bán quần áo

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 (4.99 MB, 67 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
  

  

XÂY DỰNG HỆ THỐNG WEBSITE BÁN HÀNG
LUNA SHOP

 

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
NGÀNH HỆ THỐNG THÔNG TIN
 
 

THÁI NGUYÊN, NĂM 2023


TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN

Ảnh 3x4

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC
NGÀNH HỆ THỐNG THÔNG TIN
Đề tài:

XÂY DỰNG HỆ THỐNG WEBSITE BÁN HÀNG


LUNA SHOP

Giảng viên hướng dẫn: Mai Văn Hoàn
Sinh viên thực hiện:
Lớp: HTTT - K17N

Thái Nguyên, 2023


LỜI CAM ĐOAN
Em xin cam đoan về nội dung đồ án tốt nghiệp với tên đề tài “XÂY DỰNG
HỆ THỐNG WEBSITE BÁN HÀNG LUNA SHOP” không sao chép nội dung từ
các đồ án khác, hay các sản phẩm tương tự mà không phải em làm ra. Sản phẩm của
đồ án do chính bản thân em nghiên cứu và xây dựng nên. Nếu có gì sai em xin chịu
mọi hình thức kỉ luật của Trường Đại học Công Nghệ Thông Tin và Truyền Thông
– Đại học Thái Nguyên.
Thái Nguyên, tháng năm 2023
SINH VIÊN

2


LỜI CẢM ƠN
Đầu tiên em xin gửi lời cảm ơn đến thầy Mai Văn Hồn vì đã định hướng,
cung cấp tài liệu và tận tình giúp đỡ, động viên em trong quá trình thực hiện đề tài.
Thầy đã dành nhiều thời gian và tâm huyết theo sát, chỉ bảo em những mặt
được và chưa được để em có thể hồn thành đề tài một cách tốt nhất. Em xin chân
thành cảm ơn thầy.
Em cũng xin chân thành cảm ơn các giảng viên trong trường Đại học Công nghệ
thông tin và Truyền thơng đã tạo điều kiện giúp em có được một nền tảng kiến thức

căn bản hỗ trợ cho việc em làm đồ án tốt nghiệp. Mặc dù, bản thân đã thực sự nỗ
lực, cố gắng thực hiện đồ án tốt nghiệp nhưng khơng tránh khỏi nhiều thiếu sót. Do
vậy, em rất mong nhận được sự đóng góp quý báu của tồn thể thầy cơ và các bạn!
Em xin chân thành cảm ơn!
Thái Nguyên, tháng năm 2023
SINH VIÊN

3


LỜI MỞ ĐẦU

Cơng Nghệ Thơng Tin có những bước phát triển mạnh mẽ, ứng dụng
trong nhiều lĩnh vực đới sống và hiệu quả mang lại là không thể phủ nhận,
giúp giảm thiểu tối đa các khâu làm việc thủ công, kém hiệu quả, khơng chính
xác của con người trước kia. Chính vì thế máy tính điện tử trở nên phổ biến
và gần gũi với mọi người, việc tiếp cận với nhu cầu mua sắm trực tuyến trở
thành mục tiêu hàng đầu của các tổ chức, doanh nghiệp cho mục đích quản lí
thơng tin của mình.
Ngày nay, với việc cơng nghệ đang phát triển mạnh mẽ, nên nhu cầu
mua sắm trực tuyến của con người về đồ dùng cũng như nhu yếu phẩm ngày
càng tăng. Bắt kịp những yêu cầu đó các nhà bán hàng ngày càng nâng cao
chất lượng quản lý và phục vụ để đạt được mục tiêu kinh doanh cũng như để
có thể tồn tại ở mơi trường kinh doanh online đầy cạnh tranh. Qua đó, các cửa
hàng này cần phải có một hệ thống quản lý để bảo đảm quy trình và phục vụ
khách hàng một cách tốt nhất. Để giải quyết vấn để này các cửa hàng đều
trang bị cho mình những mơ hình quản lý riêng.
Với một quy mơ lớn như trên thì việc xây dựng một ứng dụng để quản lý là
rất quan trọng. Nắm bắt được nhu cầu đó em thực hiện đề tài “Xây dựng hệ
thống quản lý cửa hàng Luna Shop” để tìm hiểu sâu hơn kiến thức về lĩnh

vực này.
Nội dung bao gồm 4 chương:
Chương 1: Tổng quan về đề tài
Chương 2: Phân tích thiết kế hệ thống
Chương 3: Tích hợp hệ thống
Chương 4: Giao diện hệ thống

4


CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 Phân tích nhu cầu
Trong thời đại công nghệ thông tin như hiện nay, khi mà Internet trở nên
thân quen và dần trở thành một cơng cụ khơng thể thiếu trong cuộc sống thì lợi ích
của website đối với việc quảng bá sản phẩm và thương hiệu của một công ty thật là
to lớn. o Tùy từng lĩnh vực kinh doanh của từng doanh nghiệp mà website mang lại
những lợi ích khác nhau. Trang web trở thành một cửa ngõ để doanh nghiệp tiếp thị
sản phẩm của mình đến khách hàng khắp nơi trên toàn thế giới.
Website là nơi doanh nghiệp và khách hàng gặp nhau. Khi họ truy cập vào
website của bạn và tìm thấy những thơng tin về sản phẩm của bạn cung cấp, khi đó,
website trở thành một kênh tư vấn khách hàng trực tuyến hữu hiệu.Website là một
phương tiện để giới thiệu doanh nghiệp, quảng bá, marketing và PR.
1.2 Lợi ích mà việc xây dựng hệ thống bán hàng online đem lại
1.2.1 Lợi ích đối với người bán

-Khơng tốn nhiều chi phí đầu tư: Chi phí đầu tư là một yếu tố rất quan
trọng trong kinh doanh. Nếu bạn không có một khoản vốn lớn, việc lựa chọn
hình thức kinh doanh trực tuyến là lựa chọn an tồn.Lợi ích của bán hàng
online là gì? Đó chính là giúp bạn giảm thiểu được các chi phí như thuê mặt
bằng, chi phí thuê nhân viên, chi phí điện nước,… Nhờ tiết kiệm được chi phí

bạn có thể đầu tư vào sản phẩm và quảng cáo.
-Có thể bán hàng mọi lúc mọi nơi:Như đã phân tích ở trên, kinh doanh
trực tuyến có thể hoạt động 24/24. Giúp cả người bán lẫn khách hàng có
nhiều thời gian để giao dịch hơn hình thức truyền thống.
-Tiếp cận và khai thác được nhiều khách hàng hơn: Khách hàng từ khắp
vùng miền trên cả nước, thậm chí khách hàng trên thế giới có thể biết đến
bạn. Kinh doanh online sẽ mang sản phẩm và thương hiệu của doanh nghiệp
ra thế giới.

5


-Dễ dàng quản lý và tính tốn doanh thu: Các hình thức kinh doanh truyền
thống thường gặp phải khó khăn là phải kiểm kê hàng hóa trong kho thường
xuyên. Kiểm tra xem mặt hàng nào còn tồn, mặt hàng nào bán chạy. Nhưng
kinh doanh trực tuyến có thể khắc phục được điều này. Bạn có thể quản lý sản
phẩm bằng các công cụ trực tuyến và dễ dàng thống kê được lượng đặt hàng
của mỗi sản phẩm.
-Kinh doanh online có thể kết hợp và bổ trợ cho kinh doanh truyền thống:
Hình thức kinh doanh online khơng chỉ có lợi thế cho những shop chuyên bán
hàng online. Nhưng cũng đem lại nhiều lợi ích cho doanh nghiệp kết hợp
truyền thống và trực tuyến. Qua hệ thống cửa hàng online, khách hàng sẽ biết
đến thương hiệu và có thể ghé thăm shop trực tiếp để mua sản phẩm.
1.2.2 Lợi ích đối với người mua

-Linh hoạt khi mua sắm: Một lợi thế lớn của mua sắm trực tuyến đó
chính là sự linh hoạt. Vì các cửa hàng trực tuyến khơng có ngày nghỉ, đóng
cửa hay bất kỳ vấn đề khác. Bạn cịn có thể chủ động về thời điểm mua sắm.
Bất cứ khi nào, bất cứ nơi đâu, dù 1 giờ trưa hay 12 giờ khuya, bạn vẫn có thể
lướt web và đặt hàng, không phải phụ thuộc vào giờ mở cửa của các trung

tâm mua sắm.
-Tiết kiệm thời gian: Với những ai bận rộn khơng có nhiều thời gian để
mua sắm, thì đây được coi là ưu điểm lớn nhất của dịch vụ mua hàng online.
Thay vì, bạn lang thang hàng giờ đến các trung tâm mua sắm, bạn có thể ngồi
tại nhà và chọn món hàng mình u thích bằng cách click chuột. Bạn chỉ mất
từ 10 đến 25 phút để tìm được món hàng mình cần và sau đó nhân viên sẽ
nhanh chóng giao hàng tận nơi cho bạn.
-Thoải mái so sánh giá cả và chất lượng các sản phẩm: Nếu bạn đi mua
sắm ở các cửa hàng, các khu chợ hay siêu thị, bạn phải mang theo một món
tiền lớn sẽ rất bất tiện và có khi bạn sẽ gặp rủi ro. Thêm vào đó, bạn phải vác
theo bao nhiêu thứ lỉnh kỉnh hàng hóa và hì hục chở về nhà. Ngược lại, nếu

6


mua hàng online, bạn khơng cần ra ngồi với nỗi lo bị trộm cắp hay bạn cũng
không cần phải lo lắng việc mang vác đồ đạc cồng kềnh. Hàng sẽ được giao
tận nhà với niêm phong kỹ và an toàn.
1.3 Các công nghệ sử dụng
1.3.1 Thư viện ReactJS

1.3.1.1: ReactJs là gì?
ReactJS là một opensource được phát triển bởi Facebook, ra mắt vào
năm 2013, bản thân nó là một thư viện Javascript được dùng để để xây dựng
các tương tác với các thành phần trên website. Một trong những điểm nổi bật
nhất của ReactJS đó là việc render dữ liệu khơng chỉ thực hiện được trên tầng
Server mà còn ở dưới Client nữa.

Hình 1 Thư viện React JS


1.2.1.2 Tại sao các developer lại sử dụng ReactJS?
ReactJS là một thư viện JavaScript chuyên giúp các nhà phát triển xây
dựng giao diện người dùng hay UI. Trong lập trình ứng dụng front-end, lập
trình viên thường sẽ phải làm việc chính trên 2 thành phần sau: UI và xử lý
tương tác của người dùng. UI là tập hợp những thành phần mà bạn nhìn thấy
được trên bất kỳ một ứng dụng nào, ví dụ có thể kể đến bao gồm: menu, thanh
tìm kiếm, những nút nhấn, card,… Giả sử bạn đang lập trình một website
thương mại điện tử, sau khi người dùng chọn được sản phẩm ưng ý rồi và
nhấn vào nút “Thêm vào giỏ hàng”, thì việc tiếp theo mà bạn phải làm đó là

7


thêm sản phẩm được chọn vào giỏ hàng và hiển thị lại sản phẩm đó khi user
vào xem => xử lý tương tác.
Trước khi có ReactJS, lập trình viên thường gặp rất nhiều khó khăn
trong việc sử dụng “vanilla JavaScript”(JavaScript thuần) và JQuery để xây
dựng UI. Điều đó đồng nghĩa với việc quá trình phát triển ứng dụng sẽ lâu
hơn và xuất hiện nhiều bug, rủi ro hơn. Vì vậy vào năm 2011, Jordan Walke –
một nhân viên của Facebook đã khởi tạo ReactJS với mục đích chính là cải
thiện quá trình phát triển UI.
Hơn nữa, để tăng tốc quá trình phát triển và giảm thiểu những rủi ro có
thể xảy ra trong khi coding, React còn cung cấp cho chúng ta khả năng
Reusable Code (tái sử dụng code) bằng cách đưa ra 2 khái niệm quan trọng
bao gồm:
JSX.
Virtual DOM.
1.2.1.3 Ưu điểm của ReactJS
Ngoài việc hỗ trợ xây dựng giao diện nhanh, hạn chế lỗi trong quá trình
code, cải thiện performance website thì những tính năng đặc biệt dưới đây có

thể là lý do khiến bạn “chốt đơn” với ReactJS và bắt đầu tìm hiểu nó từ bây
giờ:
Phù hợp với đa dạng thể loại website: ReactJS khiến cho việc khởi tạo
website dễ dàng hơn bởi vì bạn khơng cần phải code nhiều như khi tạo trang
web thuần chỉ dùng JavaScript, HTML và nó đã cung cấp cho bạn đủ loại “đồ
chơi” để bạn có thể dùng cho nhiều trường hợp.
Tái sử dụng các Component: Nếu bạn xây dựng các Component đủ tốt,
đủ flexible để có thể thoả các “yêu cầu” của nhiều dự án khác nhau, bạn chỉ
tốn thời gian xây dựng ban đầu và sử dụng lại hầu như tồn bộ ở các dự án
sau. Khơng chỉ riêng mỗi ReactJS mà các framework hiện nay cũng đều cho
phép chúng ta thực hiện điều đó, ví dụ Flutter chẳng hạn.

8


Có thể sử dụng cho cả Mobile application: Hầu hết chúng ta đều biết
rằng ReactJS được sử dụng cho việc lập trình website, nhưng thực chất nó
được sinh ra khơng chỉ làm mỗi đều đó. Nếu bạn cần phát triển thêm ứng
dụng Mobile, thì hãy sử dụng thêm React Native – một framework khác được
phát triển cũng chính Facebook, bạn có thể dễ dàng “chia sẻ” các Component
hoặc sử dung lại các Business Logic trong ứng dụng.
Thân thiện với SEO: SEO là một phần không thể thiếu để đưa thông tin
website của bạn lên top đầu tìm kiếm của Google. Bản chất ReactJS là một
thư viện JavaScript, Google Search Engine hiện nay đã crawl và index được
code JavaScript, tuy nhiên bạn cũng cần thêm một vài thư viện khác để hỗ trợ
điều này nhé!
Debug dễ dàng: Facebook đã phát hành 1 Chrome extension dùng trong
việc debug trong quá trình phát triển ứng dụng. Điều đó giúp tăng tốc q
trình release sản phẩm cung như quá trình coding của bạn.


9


1.2.2 NextJs

Chúng ta đang sử dụng các thư viện ReactJS để xây dựng các ứng dụng
web, và hiện tại nó đang làm rất tốt. Tuy nhiên, cho đến một ngày, khi khách
hàng yêu cầu trang web phải hỗ trợ SEO (tức là Google có thể crawl được nội
dung trang web). u cầu này thực sự gây khó cho bạn vì React chỉ mạnh
trong việc tạo các ứng dụng web dạng SPA (Single Page Application) mà
thơi.
Chẳng nhẽ lại bó tay?
Tất nhiên là khơng rồi. Các “pháp sư lập trình” đã cho ra đời một framework
dựa trên ReactJS giúp bạn xây dựng website cịn nhanh hơn nữa, trong đó đáp
ứng được cả u cầu phải hỗ trợ SEO. Đó chính là web framework Next.js

Hình 2 Thư viện Next JS

10


1.2.2.1 Khái niệm Nextjs là gì

Nextjs là một web framework dựa trên ReactJS, cho phép xây dựng
một trang web một cách nhanh chóng. Đặc biệt, Next.js hỗ trợ render phía
server – mặc định là Server Side Rendering (SSR).
Next.js được phát triển dựa trên ReactJS, tức là mọi tính năng, ưu điểm của
ReactJS được tận dụng, và sẽ bổ sung thêm các tính năng khắc phục nhược
điểm của ReactJS. Nếu bạn đã quen với ReactJS thì việc chuyển sang Next.js
vơ cùng đơn giản, dễ như nhai kẹo cao su vậy.

1.2.2.2 Tại sao nên sử dùng Nextjs

- Image Optimization: Tự động tối ưu hóa hình ảnh, cho phép thay đổi
kích thước. Chuyển hình ảnh lớn đến các thiết bị nhỏ hơn. Tối ưu hóa hình
ảnh theo u cầu, điều này khơng làm giảm tốc độ tải cảu website.
- Internationalization: Hỗ trợ đinh tuyến quốc tế từ bản v10.0.0 . Bạn có
thể cung cấp các ngôn ngữ, ngôn ngữ mặc định và ngôn ngữ miền cụ thể.
Next.js sẽ tự động xử lí việc định tuyến.
- Next.JS Analytics: Với việc điều cần thiết cho sự phát triển khi kiểm
tra xem người dùng đang trải nghiệm ứng dụng như thế nào. Next.JS cung cấp
tính năng với chế độ xem Analytics, giúp bạn có được thơng tin về điểm số và
dữ liệu thay đổi tổng quan.
- Zero Config: Tự động thực hiện biên dịch và đóng gói tự động. Tối
ưu hóa cho sản phẩm ngay từ đầu.
- Hybrid SSG và SSR : Sử dụng cơ chế Pre-render để buil-time và
request time ở (SSR) trong dự án Single.
- Incremental Static Regeneration: Next.js cho phép bạn tạo hoặc cập
nhật các trang tĩnh sau khi xây dựng trang web của mình. Tái tạo tĩnh tăng
dần cho phép bạn sử dụng tạo tĩnh trên nền mà không cần phải xây dựng lại
toàn bộ trang web.

11


- TypeScript Support: Tự động hỗ trợ cấu hình TypeScript và biên
dịch.
- Fast Refresh: Một tính năng cực kì hay và thú vị cho phép phản hồi
tức thời về các chỉnh sửa được thực hiện đối với các thành phần trên dự án
của bạn. Đỉnh điểm là chỉnh sửa các hiển thị nhanh trong vịng một đến hai
giây mà khơng làm mất trạng thái hiện tại.

- File-system Routing: Next.js cung cấp cho chúng ta một bộ định
tuyến dựa trên hệ thống các tệp được xây dựng về trang (pages). Khi tệp được
thêm vào thư mục pages, nó sẽ được tạo dựng sẳn dưới dạng một tuyến. Các
tệp bên trong có thể được sử dụng hầu hết phổ biến.
- API Routes: Đây là một tính năng thú vị và mạnh mẽ, Next.js cung
cấp cho chúng ta để tạo điểm cuối API trong ứng dụng Next.js. Các tuyến
API hoạt động dưới dạng /pages/api/ trong thư mục và được hướng tới api
điểm cuối thư mục.
- Built-In CSS Support: Next.js cho phép bạn nhập tệp CSS từ môt tệp
Javascript. Bạn chỉ cần tạo 1 file CSS và import trực tiếp nó vào file
Javascript. Và mọi thứ bắt đầu hoạt động như cách chúng ta muốn.
- Code-splitting and Bundling: Hỗ trợ thuật tốn tách gói được tối ưu
hóa được tạo bởi nhóm Google Chrome.
1.2.2.3 Ưu điểm

NextJS mang nhiều đến nhiều khả năng và điều hay ho cho chúng ta.
Tuy nhiên bên cạnh đó nó vẫn tồn tại một số nhược điểm trên chính nền của
nó. NextJS cung cấp cho chúng ta các ưu điểm sau:
Mạng lại khả năng SEO tốt.
Trải nghiệm người dùng tốt hơn.
Làm việc với cơ chế SSG (Static Site Generation) , SSR (Server Side
Rendering) và cả CSR (Client Side Rendering).
Khởi tạo nhanh chóng.

12


Hỗ trợ nền React cực kì tốt.
Hỗ trợ cấu trúc và tổ hợp một cách tối ưu.
Hỗ trợ phát triển tính năng nhanh chóng cho việc cấu hình như:

Webpack, Babel,…
Bảo mật về dữ liệu.
Khả năng thích ứng và đáp ứng thay đổi.
Nhanh chóng thêm các plugin để tùy chỉnh Next.js theo nhu cầu của
trang cụ thể của bạn.
1.2.2.4 Nhược điểm

Với sự tuyệt vời mà Next.js mang lại thì bên cạnh đó cũng tồn tại một
số nhược điểm như sau:
Ít plug-in thích ứng.
Next.js bị giới hạn bởi việc chỉ sử dụng bộ định tuyến trên tệp của nó,
bạn khơng thể nào sửa đổi cách nó giao dịch với các tuyến. Vì vậy, để sử
dụng tuyến động, bạn cần làm việc thêm với Node.js máy chủ.
Next.js không cung cấp nhiều trang nhất tích hợp, để làm việc bạn cần
phải tạo tồn bộ front-end từ đầu lên.

13


1.2.3 Nodejs
1.2.3.1 Khái niệm Nodejs là gì

NodeJS là một mơi trường runtime chạy JavaScript đa nền tảng và có
mã nguồn mở, được sử dụng để chạy các ứng dụng web bên ngồi trình duyệt
của client. Nền tảng này được phát triển bởi Ryan Dahl vào năm 2009, được
xem là một giải pháp hoàn hảo cho các ứng dụng sử dụng nhiều dữ liệu nhờ
vào mơ hình hướng sự kiện (event-driven) khơng đồng bộ.

Hình 3 Thư viện Node JS


1.2.3.2 Tại sao nên sử dụng nodeJs

Ứng dụng Nodejs phần đông đều được viết bằng ngơn ngữ lập trình
javascript - một ngơn ngữ thông dụng, được sử dụng rộng rãi và chạy được
trên nhiều trình duyệt, nền tảng, hệ điều hành,...
Nodejs khá nhẹ nhưng lại hiệu quả nhờ vào cơ chế non-blocking I/O,
chạy đa nền tảng trên Server và dùng Event-driven.
Tương thích với nhiều thiết bị. Bạn có thể chạy các ứng dụng phát triển
bởi Nodejs trên bất cứ thiết bị nào, dù là Mac, Window, Linux,...
Cộng đồng Nodejs khá lớn và được cung cấp miễn phí cho người dùng.

14


Ứng dụng NodeJS có khả năng chạy đa nền tảng, thiết bị, đồng thời đáp
ứng được yêu cầu về thời gian thực.
Node.js có tốc độ cực kỳ nhanh, xử lý được nhu cầu sử dụng của lượng
khách truy cập ‘khổng lồ’ trong thời gian cực ngắn.
Ứng dụng phát triển bởi Node.js có khả năng xử lý nhiều yêu cầu truy
cập cùng lúc, ‘cứu’ website của bạn khỏi nguy cơ bị ‘sập’ khi lượng truy cập
quá nhiều.
1.2.3.3 Ưu và nhược điểm của Nodejs

Ưu điểm
IO hướng sự kiện không đồng bộ, cho phép xử lý nhiều yêu cầu đồng
thời.
Sử dụng JavaScript – một ngơn ngữ lập trình dễ học.
Chia sẻ cùng code ở cả phía client và server.
NPM(Node Package Manager) và module Node đang ngày càng phát
triển mạnh mẽ.

Cộng đồng hỗ trợ tích cực.
Cho phép stream các file có kích thước lớn.
Nhược điểm
Khơng có khả năng mở rộng, vì vậy khơng thể tận dụng lợi thế mơ hình
đa lõi trong các phần cứng cấp server hiện nay.
Khó thao tác với cơ sử dữ liệu quan hệ.
Mỗi callback sẽ đi kèm với rất nhiều callback lồng nhau khác.
Cần có kiến thức tốt về JavaScript.
Khơng phù hợp với các tác vụ địi hỏi nhiều CPU.

15


1.2.4 Cơ sở dữ liệu MongoDB
1.2.4.1 Khái niệm MongoDB là gì

Hình 4 Cơ sở dữ liệu MongoDB

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 TransactSQL để 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à Not-Only 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,...

1.2.4.2 Các thuật ngữ hay sử dụng trong MongoDB

_id – Là trường bắt buộc có trong mỗi document. Trường _id đại diện
cho một giá trị duy nhất trong document MongoDB. Trường _id cũng có thể

16


được hiểu là khóa chính trong document. Nếu bạn thêm mới một document
thì MongoDB sẽ tự động sinh ra một _id đại diện cho document đó và là duy
nhất trong cơ sở dữ liệu MongoDB.
Collection – Là nhóm của nhiều document trong MongoDB. Collection
có thể được hiểu là một bảng tương ứng trong cơ sở dữ liệu RDBMS
(Relational Database Management System). Collection nằm trong một cơ sở
dữ liệu duy nhất. Các collection không phải định nghĩa các cột, các hàng hay
kiểu dữ liệu trước.
Cursor – Đây là một con trỏ đến tập kết quả của một truy vấn. Máy
khách có thể lặp qua một con trỏ để lấy kết quả.
Database – Nơi chứa các Collection, giống với cơ sở dữ liệu RDMS
chúng chứa các bảng. Mỗi Database có một tập tin riêng lưu trữ trên bộ nhớ
vật lý. Một mấy chủ MongoDB có thể chứa nhiều Database.
Document – Một bản ghi thuộc một Collection thì được gọi là một
Document. Các Document lần lượt bao gồm các trường tên và giá trị.
Field – Là một cặp name – value trong một document. Một document
có thể có khơng hoặc nhiều trường. Các trường giống các cột ở cơ sở dữ liệu
quan hệ.
JSON – Viết tắt của JavaScript Object Notation. Con người có thể đọc
được ở định dạng văn bản đơn giản thể hiện cho các dữ liệu có cấu trúc. Hiện
tại JSON đang hỗ trợ rất nhiều ngơn ngữ lập trình.
Index – Là những cấu trúc dữ liệu đặc biệt, dùng để chứa một phần nhỏ

của các tập dữ liệu một cách dễ dàng để quét. Chỉ số lưu trữ giá trị của một
fields cụ thể hoặc thiết lập các fields, sắp xếp theo giá trị của các fields này.
Index hỗ trợ độ phân tích một cách hiệu quả các truy vấn. Nếu khơng có chỉ
mục, MongoDB sẽ phải qt tất cả các documents của collection để chọn ra
những document phù hợp với câu truy vấn. Q trình qt này là khơng hiệu
quả và yêu cầu MongoDB để xử lý một khối lượng lớn dữ liệu.

17


Hãy lưu ý sự khác biệt của các trường và _id trong một document. Một
_id được dùng để đại diện cho một document và chúng được sinh ra khi thêm
một Document vào Collection.
1.2.4.3 MongoDB hoạt động như thế nào

Hình 5 Cách thức hoạt động của mongoDb

MongoDB hoạt động dưới một tiến trình ngầm service, ln 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.

18


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.
1.2.4.4 Ưu nhược điểm của MongoDB

Ư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.
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ỗ
(in-place).
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

19




×