1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu node js, couch db và xây dựng website xây dựng hệ thống quản lý bán thức ăn nhanh

69 18 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

Định dạng
Số trang 69
Dung lượng 3,12 MB

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

Nội dung

Phân tích và thiết kế chức năng chủ cửa hàng xem được danh sách tất cả các món ăn, tất cả các nhân viên, tất cả các khách hàng .... 19 Bảng 2 : Bảng các chức năng chủ cửa hàng quản lý vi

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM

TÌM HIỂU NODE.JS, COUCH DB, XÂY DỰNG WEBSITE HỆ THỐNG

QUẢN LÝ BÁN THỨC ĂN NHANH

SINH VIÊN: CHU THỊ THANH VÂN

LỚP: 1OCNTT4 CÁN BỘ HƯỚNG DẪN: TH.S NGÔ ĐÌNH THƯỞNG

ĐÀ NẴNG, 5/2014

Trang 2

Em chân thành cảm ơn các thầy cô trong khoa Tin Học trường Đại học

Sư Phạm, Đại học Đà Nẵng, đã truyền đạt những kiến thức quý báu cho em trong những năm học vừa qua và nhất là đã tạo điều kiện thuận lợi cho em học tập và thực hiện đề tài tốt nghiệp này

Đặc biệt, em xin chân thành cảm ơn thầy giáo Th.s Ngô Đình Thưởng đã trực tiếp, tận tình giúp đỡ và hướng dẫn em trong suốt thời gian thực hiện đề tài

Mặc dù đã có nhiều cố gắng để hoàn thành đồ án nhưng trong phạm vi và khả năng cho phép chắc chắn đồ án không tránh khỏi những thiếu sót Em rất mong nhận được sự thông cảm, góp ý và tận tình chỉ bảo của quý thầy cô

và các bạn

Một lần nữa em xin chân thành cảm ơn!

Đà Nẵng, ngày 10 tháng 5 năm 2014

Sinh viên thực hiện

Chu Thị Thanh Vân

Trang 3

Tôi xin cam đoan:

1 Những nội dung trong luận văn này là do em thực hiện dưới sự hướng dẫn trực tiếp của thầy Th.s Ngô Đình Thưởng

2 Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố

3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, em xin chịu hoàn toàn trách nhiệm

Sinh viên

Chu Thị Thanh Vân

Trang 4

LỜI CẢM ƠN 2

LỜI CAM ĐOAN 3

LÝ DO CHỌN ĐỀ TÀI 1

1 Bối cảnh đề tài: 1

2 Mục đích đề tài 2

CHƯƠNG I CƠ SỞ LÝ THUYẾT 3

I.1 GIỚI THIỆU NODE.JS 3

I.1.1 Javascript và lập trình Server 3

I.1.2 Node.JS là gì 3

I.1.3 Giới thiệu Blocking và Non-Blocking 4

I.1.4 Socket.io 7

I.1.5 10 lý do nên sử dụng Node JS: 8

I.2 GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU NoSQL 10

I.2.1 Giới thiệu NoSQL 10

I.2.2 Xác định NoSQL có phù hợp 12

I.2.3 Tìm hiểu về CouchDB 13

CHƯƠNG II PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 18

II.1 PHÂN TÍCH YÊU CẦU 18

II.1.1 Mô tả bài toán quản lý cửa hàng bán thức ăn nhanh trực tuyến 18

II.1.2 Phân tích yêu cầu bài toán 18

II.1.3 Xác định các chức năng chính của hệ thống 19

II.2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG : 21

Trang 5

II.2.2 Biểu đồ UseCase sử dụng 21 II.2.1 Phân tích và thiết kế chức năng đăng ký 26 II.2.2 Phân tích và thiết kế chức năng đăng nhập 28 II.2.3 Phân tích và thiết kế chức chủ cửa hàng quản lý việc đặt hàng của khách hàng 30

II.2.4 Phân tích và thiết kế chức năng chủ cửa hàng xem được danh sách tất cả các món ăn, tất cả các nhân viên, tất cả các khách hàng 31 II.2.5 Phân tích và thiết kế chức năng chủ cửa hàng thêm món ăn, thêm nhân viên 32

II.2.6 Phân tích và thiết kế chức năng chủ cửa hàng chỉnh sửa thông tin món

ăn (nhân viên) 34 II.2.7 Phân tích và thiết kế chức năng chủ cửa hàng xóa món ăn, xóa nhân viên, xóa khách hàng 37 II.2.8 Phân tích và thiết kế chức năng chủ cửa hàng tìm kiếm thông tin món ăn, nhân viên, khách hàng 39 II.2.9 Phân tích và thiết kế chức năng khách hàng xem được danh sách các món ăn 40

II.2.10 Phân tích và thiết kế chức năng khách hàng thực hiện việc đặt hàng trực tuyến 42

II.3 Phân tích và thiết kế cơ sở dữ liệu 44 II.3.1 Thiết kế các doc 44 II.3.2 Thiết kế các View :(hiên thị các thông tin cần thiết lấy từ các doc) 46

CHƯƠNG III TRIỂN KHAI CHƯƠNG TRÌNH … 49

III.1 CÁC CÔNG CỤ SỬ DỤNG 49

Trang 6

III.3 KỸ THUẬT VÀ CÔNG NGHỆ SỬ DỤNG 49

III.4 CÀI ĐẶT MÔI TRƯỜNG 49

III.4.1 Cài đặt node.js 49

III.4.2 Cài đặt couchdb 49

III.5 DEMO 50

KẾT LUẬN 58

Trang 7

DANH MỤC HÌNH VẼ

Hình 1: Mô tả blocking 5

Hình 2 : Mô tả non-blocking 6

Hình 3 : Mô tả event loop 6

Hình 4 : UseCase tổng quát 22

Hình 5 : UseCase Đăng ký, đăng nhập 22

Hình 6 : UseCase Quản lý danh sách thực đơn 23

Hình 7: UseCase chủ cửa hàng quản lý danh sách nhân viên 24

Hình 8 : UseCase chủ cửa hàng quản lý danh sách khách hàng 24

Hình 9 : UseCase chủ cửa hàng quản lý đặt hàng 24

Hình 10 : UseCase khách hàng xem lịch sử đặt hàng 25

Hình 11 : UseCase khách hàng xem danh sách thực đơn 25

Hình 12: UseCase khách hàng đặt hàng 25

Hình 13 : Biểu đồ hoạt động đăng ký 27

Hình 14 : Biểu đồ tuần tự - Đăng kí 27

Hình 15: Biểu đồ hoạt động - Đăng nhập 29

Hình 16: Biểu đồ tuần tự - Đăng nhập 29

Hình 17 : Biểu đồ hoạt động quản lý đặt hàng 30

Hình 18 : Biểu đồ tuần tự chủ cửa hàng quản lý đặt hàng 31

Hình 19: Biểu đồ hoạt động – danh sách thực đơn 32

Hình 20 : Biểu đồ hoạt động đăng nhập 32

Hình 21: Biểu đồ hoạt động – Thêm món ăn 33

Hình 22 : Biểu đồ tuần tự chủ cửa hàng thêm món ăn 34

Trang 8

Hình 23: Biểu đồ hoạt động chủ cửa hàng chỉnh sửa thông tin món ăn 35

Hình 24 : Biểu đồ tuần chủ cửa hàng chỉnh sửa thông tin món ăn 36

Hình 25: Biểu đồ hoạt động chủ cửa hàng quản lý thực đơn 38

Hình 26 : Biểu đồ tuần tự chủ cửa hàng xóa món ăn 38

Hình 27 : Biểu đồ tuần tự tìm kiếm món ăn 40

Hình 28 : Biểu đồ hoạt động khách hàng xem danh sách thực đơn 41

Hình 29 : Biểu đồ tuần tự khách hàng xem danh sách thực đơn 42

Hình 30 : Biểu đồ hoạt động khách hàng đặt hàng 43

Hình 31: Biểu đồ tuần tự khách hàng đặt hàng 43

Hình 32: Trang đăng nhập 50

Hình 33: Trang đăng ký tài khoản mới 53

Trang 9

DANH MỤC BẢNG BIỂU

Bảng 1 : Bảng các chức năng đăng ký, đăng nhập 19

Bảng 2 : Bảng các chức năng chủ cửa hàng quản lý việc đặt hàng của khách hàng 19 Bảng 3 : Bảng chức năng chủ cửa hàng quản lý danh sách thực đơn món ăn 20

Bảng 4 : Bảng chức năng chủ cửa hàng quản lý danh sách nhân viên 20

Bảng 5 : Bảng chức năng chủ cửa hàng quản lý danh sách khách hàng 20

Bảng 6 : Bảng chức năng khách hàng xem danh sách thực đơn món ăn 21

Bảng 7 : Bảng chức năng khách hàng thực hiên việc đặt hàng 21

Bảng 8 : Doc Users 44

Bảng 9 : Doc thực đơn 45

Bảng 10 : Doc nhân viên 45

Bảng 11 : Doc nhân viên 46

Trang 10

LÝ DO CHỌN ĐỀ TÀI

1 Bối cảnh đề tài:

Ngày nay với kỉ nguyên công nghệ bùng nổ, thời kì của mạng xã hội đã khiến cho

số lượng người dùng truy cập vào cùng một hệ thống ngày càng tăng.Điển hình như Facebook một ngày phục vụ hơn 1000 tỉ lượt xem với khoảng hơn 800 triệu lượt khách vào ra trong một tháng thì ta mới hình dung được sự bùng nổ của thông tin như thế nào.Để giải quyết vấn đề bùng nổ như trên thì chúng ta đã mở rộng các hệ thống máy chủ siêu lớn, phân thành nhiều các cụm đặt khắp nơi trên thế giới.Nhưng với tốc độ tăng trưởng theo cấp số hiện nay thì việc tăng số lượng máy chủ lên thôi có lẽ không đủ.Ta cần xem xét và nâng cấp các giải pháp xây dựng web cho tương lai

Đầu tiên là về mặt ngôn ngữ và máy chủ.Các websever hiện hay với cách truyền thống là phục vụ theo luồng tự nó đã giới hạn khả năng của các máy chủ cho việc đáp ứng số lượng yêu cầu đến từ người dùng và không tốt cho các bài toàn cần tính toán thời gian thực Giải pháp hướng sự kiện của nodeJS có vẻ khả khi trong trường hợp này.Nó sẽ giảm số luồng hoạt động của máy chủ xuống, giảm thời gian trễ nên đáp ứng rất tốt các ứng dụng thời gian thực hiên

Thứ hai là về mặt cơ sở dữ liệu.Với các hệ thống với số lượng lên đến hàng triệu cho đến hàng tỉ thì việc hiệu năng tốt là việc bắt buộc.Hệ thống máy chủ cơ sở dữ liệu đòi hỏi phải rất mạnh mẽ nếu không máy chủ sẽ bị quá tải.Ngôn ngữ SQL là ngôn ngữ thông dịch với các ràng buộc trong các bảng khiến cho hiệu năng thực sự của hệ thống cơ sở dữ liệu khi thực thi là khá ì ạch với hệ thống lớn như kể trên.Chưa

kể là với hệ thống lớn thì vấn đề phân tán dữ liệu, tính toàn vẹn dữ liệu là việc rất quan trọng.NoSQL đáp ứng được tất cả các yêu cầu này.Với tốc độ nhanh do không phải qua các câu truy vấn SQL, có tính sẵn sàng, phân tán cao và độ ổn định tuyệt vời.Rất thích hợp cho các hệ thống có lượt truy vấn lớn.Ở trong khóa luận của tôi, tôi

sẽ nghiên cứu về một NoSQL khá phổ biến - CouchDB.Với khả năng chịu lỗi tốt và tính ổn định cao, đồng bộ giữa các thiết bị tốt, hỗ trợ các phiên bản khi offline tốt.CouchDB xứng đáng là một cơ sở dữ liệu đáng tin cậy

Trang 11

2 Mục đích đề tài

Luận văn tốt nghiệp trên ý tưởng đề tài với ba mục đích chính:

 Tìm hiểu về Node.JS

 Tìm hiểu về cơ sở dữ liệu phi quan hệ NoSQL, couchDB

 Xây dựng ứng dụng bán thức ăn nhanh

Các bước thực hiện

 Tìm tài liệu,tìm hiểu về NodeJS và CouchDB

 Phân tích yêu cầu hệ thống bán thức ăn nhanh trực tuyến

 Xây dựng cơ sở dữ liệu CouchDB, các view và các doc

 Xây dựng giao diện hệ thống

 Xây dựng các chức năng quản lý

 Tìm hiểu về socket.io , xây hệ thống đặt thức ăn “realtime”

 Tiến hành kiểm thử đảm bảo chất lượng

 Viết báo cáo tổng kết đề tài và đề ra hướng phát triển

Bố cục luận văn

Luận văn gồm có 3 chương

 Chương I: Cơ sở lý thuyết

 Chương II: Phân tích thiết kế hệ thống

 Chương III: Triển khai chương trình

Trang 12

CHƯƠNG I CƠ SỞ LÝ THUYẾT

I.1 GIỚI THIỆU NODE.JS

I.1.1 Javascript và lập trình Server

Mặc dù các ứng dụng trên nền web trở nên phổ biến trong những năm gần đây, nhưng chúng vẫn rất khó để phát triển, duy trì và mở rộng Nhiều thách thức ở đây là việc ngăn cách giữa các thành phần client và server Các thành phần phía client thường được sử dụng bao gồm HTML, CSS, Javascript, Ajax (một phần của javascript), ảnh

và các file mà ta có thể tải về từ trình duyệt Phía server, thì ta cần lắng nghe từ các yêu cầu, xuất ra tài nguyên hoặc thông tin và thao tác với chúng để chúng có thể gửi trả

về phía client Mỗi một công nghệ mang lại một trải nghiệm khác nhau Các ngôn ngữ phía server được dùng phổ biến đến bây giờ là PHP, java và NET

Điều này dẫn đến việc cần có một chuẩn để thống nhất lập trình giữa server

và client Họ xây dựng server dựa theo Javascript có thể làm web server và nhiều hơn thế nữa

Chúng ta sẽ tập trung vào một Javascript-server-side khác: Nodejs

I.1.2 Node.JS là gì

Node.js là 1 nền tảng (platform) chạy trên môi trường V8 Javascript runtime Node.js cho phép lập trình viên xây dựng các ứng dụng có tính mở rộng cao sử dụng Javascript trên server Và vì được porting từ C nên về mặt tốc độ xử lý thì khá nhanh Nodejs, sử dụng một sự kiện lặp thay cho các luồng, và nó có thể mở rộng lên hàng triệu kết nối một lúc

Mỗi một xử lý vào ra trong Nodejs là không đồng bộ, nghĩa là máy chủ có thể tiếp tục xử lý các request đến trong khi các xử lý vào ra đang diễn ra Javascript mà một ngôn ngữ phù hợp cho việc lập trình hướng sự kiện bởi vì nó có các hàm không đồng bộ và sự bao đóng cái mà tạo ra một hàm callbacks đảm bảo Và lập trình viên Javascript thì đã biết cách lập trình theo cách này rồi Mô hình hướng sự kiện khiến cho Nodejs chạy rất nhanh và có thể triển khai và mở rộng cho các ứng dụng

Trang 13

thời gian thực một cách dễ dàng

Một lợi ích lớn lao của NodeJS đó là nó được viết bằng javascript Nó cũng hỗ trợ các hệ NoSQL dùng javascript để truy vấn Từ đây ta chỉ cần học một ngôn ngữ

là javascript để thực thi từ phía trình duyệt, phía webserver và cả cho database server

I.1.3 Giới thiệu Blocking và Non-Blocking

Blocking Theo cách truyền thống (thread-based) thì hãy tưởng tượng một ngân hàng đang

áp dụng mô hình phục vụ: Phục vụ hoàn toàn một yêu cầu rồi mới chuyển sang yêu cầu khác Trong đó nhân viên trong ngân hàng Tương ứng mỗi nhân viên là một Thread Và mỗi một yêu cầu tương ứng là 1 request đến server Bạn yêu cầu là muốn gửi tiền vào ngân hàng Bạn sẽ phải điền 1 số form như tên người gửi, số tài khoản của

họ, số tiền cần gửi.v v Trong thời gian bạn điền thông tin cần rút tiền vào tờ khai Cô nhân viên phải chờ bạn Bạn đã "khóa" cô ấy không cho cô ấy phục vụ các khách hàng khác vì lúc đó cô ấy đang rảnh vì phải đợi bạn Hành động đợi ở đây phần lớn là hành động vào/ra, truy suất file, hoặc đợi kết quả truy vấn SQL trong Webservice Đó là cơ chế Blocking Theo cách này Nếu ngân hàng đang quá tải vì có quá nhiều người chờ được phục vụ Thì ngân hàng chỉ còn một cách duy nhất là Tăng thêm số nhân viên phục vụ lên Ở trường hợp này trong ví dụ chúng ta là tăng số server phục vụ lên

Vấn đề xảy ra ở đây ra Khi tăng số lượng nhân viên lên để đáp ứng nhu cầu phục

vụ khách hàng thì ngân hàng phải tăng chi phí (tiền để trả lương, mặt bằng văn phòng ) (tương ứng với việc tăng phần cứng máy chủ lên để đáp ứng) Như thế sẽ gây

ra các vấn đề về lãng phí Và không tận dụng được nguồn lực và tiết kiệm được chi phí

Trang 14

Hình 1: Mô tả blocking

I.1.3.2 Non-Blocking

Ở một ngân hàng khác, họ lại áp dụng theo một phương thức mới (eventdriven): Tận dụng mọi khả năng của tất cả các nhân viên khi họ rảnh và nhân viên khi có yêu cầu mới phục vụ.Tức là khi bạn có một yêu cầu muốn gửi tiền như ở trên

Cô nhân viên chỉ cần đưa bạn bút và giấy để bạn điền vào và bảo bạn hãy ngồi ở ghế chờ để điền xong thông tin gửi tiền Trong khi đó cô ấy có thể phục vụ những vị khách tiếp theo Ở đây bạn đã không "khóa" cô ấy lại Và cô nhân viên tranh thủ lúc đợi bạn điền các thông tin Cô ấy có thể làm việc khác Thành ra ở đây không có hành động đợi

vô nghĩa ở đây Khi bạn điền xong thông tin, bạn có thể trở lại gặp cô ấy báo là đã hoàn thành Cô ấy sẽ tiếp tục phục vụ bạn để bạn hoàn thành việc của mình Đây là cơ chế Non-Blocking

Bạn có thể thấy, theo mô hình áp dụng của ngân hàng này (event-driven), họ sẽ tận dụng được khoảng thời gian rỗi của nhân viên Khiến cho việc một nhân viên có thể phục vụ nhiều khách hàng hơn so với ngân hàng dùng mô hình theo cách cũ ở trên Nếu

có quá tải Bạn chắc chắn vẫn phải thêm nhân viên để đáp ứng kịp thời Nhưng

Trang 15

chắc chắn sẽ thêm ít nhân viên hơn Tiết kiệm được rất nhiều tài nguyên (Đây cũng là

mô hình được áp dụng phổ biến ở các ngân hàng)

Hình 2 : Mô tả non-blocking

I.1.3.3 Kiến trúc event loop:

Event loop

 Cho phép tiếp tục nhận request khác, khi đã nhận 1 request, cho phép sử lý

đa luồng, mỗi luồng thực hiện 1 task của request

 Trả lại callback của request tương ứng

Hình 3 : Mô tả event loop

Trang 16

I.1.4 Socket.io

Giới thiệu Socket.io Socket.IO là một thư viện javascript có mục đích tạo ra các ứng dụng realtime trên trình duyệt cũng như thiết bị di động Việc sử dụng thư viện này cũng rất đơn giản và giống nhau ở cả server lẫn client

Cách sử dụng socket.io

Để import thư viện này mở cửa sổ console và cài đặt Socket.io bằng lệnh sau: npm install socket.io

Với Node.js chỉ cần biết vài hàm cơ bản như requires() để import thư viện

Công việc còn lại, chỉ cần dùng Socket.IO

Cơ chế làm việc của socket.io:

Server: tạo một đối tượng socket bằng phương thức listen(port) Phương thức

này chờ đợi một yêu cầu kết nối từ client

Client: Kết nối đến server bằng phương thức connect(url,{port:server_port})

Socket.IO cung cấp 3 event chính là connect, message và disconnect Chúng được kích hoạt khi client/server kết nối

 Connect: tạo kết nối

 Message: nhận được thông điệp

Để gửi dữ liệu, ta dùng lệnh send() Dữ liệu có thể là đối tượng và sẽ nhận

được qua sự kiện message

Ví dụ: socket.send("Hello world");

Trang 17

Socket.IO có thể gửi và nhận các event tự tạo với phương thức emit() Hai phía

gửi và nhận phải biết được tên của event đó để thực hiện giao tiếp:

Javascript được tạo ra là để làm ngôn ngữ lập trình cho client web

Tất cả các web developer đều biết JS, do đó, việc cả phía client và phía server đều sử dụng JS cũng mang nhiều ý nghĩa

Hơn nữa, việc cả hai phía C/S cùng sử dụng một ngôn ngữ chung đem tới khả năng hấp dẫn là cả hai phía có thể sử dụng chung một đoạn code, một module, làm giảm thời gian phát triển, ít lỗi hơn, và thời gian kiểm thử, fix bug cũng ngắn hơn

Bộ nhớ node.js sử dụng cho từng request cũng nhỏ hơn nhiều, do đó nó có thể đáp ứng được số lượng client nhiều hơn hàng trăm lần so với ngôn ngữ khác

3 Sẵn sàng cho một thế hệ ứng dụng web thời gian thực

Trang 18

Công nghệ web phát triển tới chóng mặt, và ứng dụng web thời gian thực đang nhen nhóm phát triển Các công nghệ như WebSocket đã sẵn sàng cho việc hàng triệu người dùng có thể tận hưởng việc tương tác web gần như hoàn toàn không có

Mỗi ứng dụng viết trên Node.JS có thể đáp ứng hàng ngàn kết nối đồng thời ngay

cả khi sử dụng những phần cứng thông thường

5 Tận dụng tối đa khả năng của phần cứng

Bộ nhớ là một cái gì đó đắt đỏ khi bạn cần host một ứng dụng Với khả năng của mình Node.JS cho phép bạn tối ưu hóa việc sử dụng hạ tầng hiện tại, hoặc là host ứng dụng trên những máy ảo rẻ tiền hơn

6 Cộng đồng đông đảo và năng động

Cộng đồng Node.JS phát triển với tốc độ điên rồ, thu hút được những developer thông minh nhất tham gia Điều này có nghĩa là hệ sinh thái Node phát triển mau lẹ từng ngày, nên chúng ta có thể có được những hỗ trợ miễn phí và thương mại từ nhiều nguồn khác nhau

Trang 19

Do có cộng đồng đông đảo, nên việc tìm được những module, package opensource phù hợp với sản phẩm của bạn cũng không phải là khó, điều này làm giảm công sức phát triển, tăng độ hài lòng của đội phát triển

Một đội phát triển hạnh phúc là một đội phát triển hữu hiệu

9 Thời gian phát triển ngắn và hiệu suất thu được cao hơn

Với những đặc điểm của mình: ngôn ngữ đồng nhất, cộng đồng năng động, dễ dàng tìm trợ giúp, tính sử dụng lại cao, một ứng dụng được phát triển trên Node.JS

sẽ có thời gian sản xuất ngắn hơn nhiều, tăng cơ hội sớm xuất hiện và chiếm lĩnh thị trường

10 Nhiều lựa chọn hosting cho doanh nghiệp

Rất nhiều nhà cung cấp dịch vụ đám mây đã đang và sẽ hỗ trợ Node.JS, doanh nghiệp có thể thoải mái lựa chọn nhà cung cấp phù hợp với mong muốn của mình

I.2 GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU NoSQL

I.2.1 Giới thiệu NoSQL

Giới thiệu NoSQL, viết tắt của non-relational, hoặc theo cách hiểu khác thì có nghĩa là Not only SQL (không chỉ là SQL) NoSQL đặc biệt nhấn mạnh đến mô hình lưu trữ cặp giá trị khóa và hệ thống lưu trữ phân tán Hệ CSDL này có thể lưu trữ, xử lý từ lượng rất nhỏ đến hàng petabytes dữ liệu với khả năng chịu tải, chịu lỗi cao nhưng chỉ đòi hỏi về tài nguyên phần cứng thấp NoSQL thiết kế đơn giản, nhẹ, gọn hơn so với RDBMs, thiết kế đặc biệt tối ưu về hiệu suất, tác vụ đọc-ghi, ít đòi hỏi về phần cứng mạnh và đồng nhất, dễ dàng thêm bớt các node không ảnh hưởng tới toàn hệ thống,

So sánh NoSQL và RDBMS Các RDBMS hiện tại đã bộc lộ những yếu kém như việc đánh chỉ mục một lượng lớn dữ liệu, phân trang, hoặc phân phối luồng dữ liệu media (phim, ảnh, nhạc, ) Cơ

sở dữ liệu quan hệ được thiết kế cho những mô hình dữ liệu nhỏ thường xuyên đọc viết

Trang 20

trong khi các Social Network Services lại có một lượng dữ liệu cực lớn và cập nhật liên tục do số lượng người dùng quá nhiều ở một thời điểm Thiết kế trên Distributed NoSQL giảm thiểu tối đa các phép tính toán, I/O liên quan kết hợp với batch processing đủ đảm bảo được yêu cầu xử lý dữ liệu của các mạng dịch vụ dữ liệu cộng đồng này

Về cơ bản, các thiết kế của NoSQL lựa chọn mô hình lưu trữ tập dữ liệu theo cặp giá trị key-value Khái niệm node được sử dụng trong quản lý dữ liệu phân tán.Với các

hệ thống phân tán, việc lưu trữ có chấp nhận trùng lặp dữ liệu Một request truy vấn tới data có thể gửi tới nhiều máy cùng lúc, khi một máy nào nó bị chết cũng không ảnh hưởng nhiều tới toàn bộ hệ thống Để đảm bảo tính realtime trong các hệ thống xử

lý lượng lớn, thông thường người ta sẽ tách biệt database ra làm 2 hoặc nhiều database Một database nhỏ đảm bảo vào ra liên tục, khi đạt tới ngưỡng thời gian hoặc dung lượng, database nhỏ sẽ được gộp (merge) vào database lớn có thiết kế tối ưu cho phép đọc (read operation) Mô hình đó cho phép tăng cường hiệu suất I/O - một trong những nguyên nhân chính khiến performance trở nên kém

Tính năng Cơ sở dữ liệu quan hệ Cơ sở dữ liệu NoSQL

bảo sự vào ra liên tục của

dữ liệu

Tốt với một mô hình sử lý theo lô ( Batch process) và tối ưu về đọc ghi dữ liệu Phần cứng Đòi hỏi cao về phần cứng Đòi hỏi thấp hơn về giá trị

và tính đồng nhất của phần cứng

Trang 21

Đăc điểm NoSQL

 Phi quan hệ (hay không ràng buộc): Các mối quan hệ giữa các bảng trong cơ sở

dữ liệu quan hệ (RDBM) sử dụng mô hình gồm 2 loại khóa: khóa chính và khóa phụ (primary key + foreign key) để ràng buộc dữ liệu nhằm thể hiện tính nhất quán dữ liệu từ các bảng khác nhau Non-relational là khái niệm không sử dụng các ràng buộc dữ liệu cho nhất quán dữ liệu

 Lưu trữ phân tán: mô hình lưu trữ phân tán các tập tin hoặc dữ liệu ra nhiều máy khác nhau trong mạng LAN hoặc Internet dưới sự kiểm soát của phần mềm

 Nhất quán cuối: tính nhất quán của dữ liệu không cần phải đảm bảo ngay tức khắc sau mỗi phép ghi Một hệ thống phân tán chấp nhận những ảnh hưởng theo phương thức lan truyền và sau một khoảng thời gian (không phải ngay tức khắc), thay đổi sẽ đi đến mọi điểm trong hệ thống để cuối cùng dữ liệu trên hệ thống sẽ trở lại trạng thái nhất quán

 Triển khai đơn giản, dễ nâng cấp và mở rộng

 Mô hình dữ liệu và truy vấn linh hoạt …

I.2.2 Xác định NoSQL có phù hợp

Khi làm việc với một lượng lớn dữ liệu, bạn hãy nghĩ đến NoSQL NoSQL rất thích hợp để làm việc với dữ liệu lớn bằng cách loại bỏ các ràng buộc toàn vẹn dữ liệu, cách thiết kế mô hình phi chuẩn hoá, cách sử dụng index… Đã giúp NoSQL trở nên mạnh mẽ để làm việc với lượng lớn dữ liệu Tuy nhiên, có một số tính chất sau đây cần lưu ý khi lựa chọn cơ sở dữ liệu NoSQL

Tính nhất quán cuối (Eventual consistency) cần phải được ứng dụng chấp nhận

Có nghĩa là ứng dụng không yêu cầu ràng buộc dữ liệu, không yêu cầu dữ liệu phải cập nhập chính xác ngay tức thì Một số ứng dụng phù hợp như các trang mạng xã hội, các ứng dụng ghi log tự động… Các ứng dụng loại này chấp nhập dữ liệu cũ trong một khoảng thời gian ngắn trước khi được cập nhập mới Đổi lại chúng ta đạt được những tiêu chuẩn cao về khả năng mở rộng và hiệu quả về chi phí, trong khi phục vụ liên tục hàng triệu khách hàng từ khắp nơi trên trái đất Đặt biệt chúng ta đạt được một hiệu suất hoạt động cao hơn gấp nhiều lần nhờ vào việc loại bỏ các yêu cầu nhất quán dữ liệu

Trang 22

Các ứng dụng không phù hợp với cơ sở dữ liệu NoSQL là các ứng dụng yêu cầu tính nhất quán dữ liệu cao Tính nhất quán dữ liệu được xem như tính sống còn của ứng dụng Ví dụ như các ứng dụng tài chính, ngân hàng… với các con số luôn được cập nhập và cần được cập nhập tức thì Sự chậm trễ có thể phải trả giá rất đắt Bởi thế nếu các ứng dụng của bạn thuộc loại này thì hãy lựa chọn cơ sở dữ liệu RDBMS với mô hình quan hệ truyền thống

Các yêu cầu phân tích hiện đại (BI) cũng không phù hợp với cơ sở dữ liệu NoSQL này Bởi vì NoSQL hổ trợ rất ít các câu truy vấn Tất cả đều phụ thuộc vào sự tinh thông lập trình Như vậy, với một yêu cầu phân tích đơn giản thì cũng cần đến lập trình trong

đó Trong khi với cơ sở dữ liệu RDBMS sử dụng ngôn ngữ SQL để truy vấn, SQL giúp chúng ta rất nhiều việc trong truy vấn, phân tích

I.2.3 Tìm hiểu về CouchDB

Giới thiệu CouchDB

CouchDB là một hệ quản trị cơ sở dữ liệu NoSQL lưu trữ theo hướng văn bản, nguồn mở, có khả năng khả chuyển cao trong việc tương tác dữ liệu giữa các nút Điều này khiến cho nó rất thích hợp trong các trường hợp liên quan đến việc thống nhất và bền vững dữ liệu.Việc tích hợp các bản sao (ở đây là các view) làm cho nó là nền tảng lý tưởng cho việc đồng bộ hóa dữ liệu giữa điện thoại di động, máy tính và máy chủ Couchdb không có mô hình cố định Thay vào đó nó lưu trữ các bản ghi (hay văn bản) theo định dạng JSON, khá nhẹ và dễ hiểu cấu trúc dữ liệu, rất thích hợp cho việc lưu trữ dữ liệu

Các đặc điểm của CouchDB

 Document storage

Trong CouchDB, tài liệu được lưu trữ như các đối tượng JSON có chứa cặp “khóa và giá trị” (key and value) và file đính kèm Mỗi tài liệu được định danh duy nhất trong cơ sở dữ liệu, có thể chứa những loại tài liệu khác nhau (text, number, boolean, list, array ) và không giới hạn kích thước hay số lượng phần tử Nó cũng bao gồm các siêu dữ liệu được duy trì bởi hệ thống như _id, _rev:

Trang 23

_id là định danh duy nhất của tài liệu Điều này có nghĩa là _id là bắt buộc, và không

có hai tài liệu có thể có cùng giá trị _id Nếu bạn không xác định một _id khi tạo một tài liệu,CouchDB sẽ tạo một ID duy nhất cho bạn

_rev là phiên bản sửa đổi của các tài liệu, giúp vận hành hệ thống kiểm soát phiên bản

của CouchDB Một trong những điều độc nhất về hệ thống sửa đổi của CouchDB là mỗi lần một tài liệu được lưu giữ, tài liệu gốc sẽ không bị ghi đè

Việc xử lý truy vấn được thực hiện qua một thành phần trong CouchDB gọi

là view View gồm hai thành phần: map (ánh xạ) và reduce (rút gọn)

Map là một hàm javascript có thể phân tích các tài liệu, rồi chuyển đổi chúng từ cấu

trúc ban đầu vào một cặp key-value mới

Trang 25

 Tạo một tài liệu

Trang 27

CHƯƠNG II PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

II.1 PHÂN TÍCH YÊU CẦU

II.1.1 Mô tả bài toán quản lý cửa hàng bán thức ăn nhanh trực tuyến

Bài toán bán thức ăn nhanh trực tuyến nhằm phục vụ cho các cửa hàng bán thức ăn nhanh trực tuyến đang rất phổ biến hiên nay

Yêu cầu đặt ra là việc đặt thức ăn của khách hàng không bị gián đoạn nếu có quá nhiều người đặt hàng, chủ cửa hàng phải được biết được việc đặt hàng của khách một cách nhanh chóng và phải biết được vị trí của khách hàng, ngoài ra cửa hàng còn phải quản lý được đội ngũ nhân viên, thực đơn các món ăn, thời gian giao hàng

Công nghệ NodeJS với đặc điểm sử dụng event-drivenvà non-blocking I/O làm

cho nó nhẹ và hiệu quả, thích hợp cho xử lý dữ liệu trong ứng dụng thời gian thực trên nhiều thiết bị phân tán sẽ phù hợp với bài toán này

II.1.2 Phân tích yêu cầu bài toán

Yêu cầu chức năng

Có 2 đối tượng sử dụng là khách hàng và chủ cửa hàng

Yêu cầu đối với hệ thống dành cho chủ cửa hàng:

 Quản lý được việc đặt hàng của khách hàng(thời gian, địa điểm) một cách nhanh chóng, chính xác

 Quản lý được danh sách thực đơn

 Quản lý được đội ngũ nhân viên cửa hàng

Yêu cầu đối với hệ thống dành cho khách hàng:

 Xem được danh sách thực đơn

 Đặt hàng được nhanh chóng

Yêu cầu phi chức năng

 Chương trình có thể đảm bảo làm việc 24/7

 Chương trình có thể vận hành tốt khi cơ sở dữ liệu về người dùng tăng đột biến trong tương lai

 Chương trình phải đơn giản, dễ sử dụng

Trang 28

Công nghệ Các công nghệ sử dụng trong chương trình

 Ứng dụng hoàn toàn có thể triển khai trên thực tế

 Nhu cầu đặt thức ăn nhanh trực tuyến ngày càng tăng do tính chất công việc ngày càng bận rộn

II.1.3 Xác định các chức năng chính của hệ thống

Đăng ký, đăng nhập

Mã chức năng Tên chức năng

Bảng 1 : Bảng các chức năng đăng ký, đăng nhập

Chủ cửa hàng quản lý việc đặt hàng của khách hàng

Mã chức năng Tên chức năng

Fx.2.1 Chủ cửa hàng biết thông tin đặt hàng của khách hàng

ngay sau khi khách hàng đặt Fx.2.1 Chủ cửa hàng biết được chính xác thời gian, địa điểm

giao hàng

Bảng 2 : Bảng các chức năng chủ cửa hàng quản lý việc đặt hàng của khách hàng

Chủ cửa hàng quản lý danh sách thực đơn các món ăn

Mã chức năng Tên chức năng

Trang 29

Fx.3.1 Chủ cửa hàng xem được danh sách thực đơn tất cả các

món ăn

Fx 3.2 Chủ cửa hàng thêm được món ăn và thông tin của món

ăn vào thực đơn Fx.3.3 Chủ cửa hàng chỉnh sửa được thông tin các món ăn Fx3.4 Chủ cửa hàng xóa được các món ăn

Fx3.5 Chủ cửa hàng tìm kiếm được các món ăn

Bảng 3 : Bảng chức năng chủ cửa hàng quản lý danh sách thực đơn món ăn

Chủ cửa hàng quản lý danh sách các nhân viên của cửa hàng

Mã chức năng Tên chức năng

Fx.4.1 Chủ cửa hàng xem được danh sách tất cả các nhân viên Fx4.2 Chủ cửa hàng thêm được nhân viên và thông tin của nhân

viên Fx.4.3 Chủ cửa hàng chỉnh sửa được thông tin các nhân viên Fx4.4 Chủ cửa hàng xóa được thông tin các nhân viên

Fx4.5 Chủ cửa hàng tìm kiếm được thông tin nhân viên

Bảng 4 : Bảng chức năng chủ cửa hàng quản lý danh sách nhân viên

Chủ cửa hàng quản lý thông tin khách hàng khách hàng

Mã chức năng Tên chức năng

Fx.5.1 Chủ cửa hàng xem được danh sách,thông tin các khách

hàng Fx.5.2 Chủ cửa hàng xóa được thông tin các khách hàng

Fx.5.3 Chủ cửa hàng tìm kiếm được thông tin các khách hàng

Bảng 5 : Bảng chức năng chủ cửa hàng quản lý danh sách khách hàng

Khách hàng xem được danh sách thực đơn các món ăn

Mã chức năng Tên chức năng

Fx.6.1 Khách hàng xem được danh sách thực đơn tất cả các món

ăn, danh sách các món ăn theo từng danh mục

Trang 30

Fx 6.2 Khách hàng xem được danh sách các món ăn theo từng

danh mục

Fx 6.3 Khách hàng tìm kiếm được thông tin các món ăn

Bảng 6 : Bảng chức năng khách hàng xem danh sách thực đơn món ăn

Khách hàng thực hiên được việc đặt hàng

Mã chức năng Tên chức năng

Fx.7.1 Khách hàng đặt hàng theo món ăn thấy trên danh sách

Fx 7.2 Khách hàng chọn món ăn để đặt hàng

Fx 7.3 Khách hàng có thể chọn được số lượng, thời gian giao

hàng, vị trí giao hàng

Bảng 7 : Bảng chức năng khách hàng thực hiên việc đặt hàng

II.2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG :

Khách hàng sẽ được cung cấp các dịch vụ của hệ thống nhằm mục đích: xem được danh sách thực đơn các món ăn, đặt được các món ăn mong muốn theo thời gian giao,

số lượng và vị trí cần giao

II.2.2 Biểu đồ UseCase sử dụng

Sơ đồ dưới thể hiện UseCase tổng quát của hệ thống với tác nhân là người dùng gồm hai đối tượng là khách hàng và chủ cửa hàng UseCase này chỉ ở mức tổng quát (mức 0) của hệ thống

Trang 31

Hình 4 : UseCase tổng quát

UseCase mức 1 đăng ký, đăng nhập

Hình 5 : UseCase Đăng ký, đăng nhập

Trang 32

UseCase chủ cửa hàng quản lý danh sách thực đơn

Hình 6 : UseCase Quản lý danh sách thực đơn

UseCase chủ cửa hàng quản lý danh sách nhân viên

Trang 33

Hình 7: UseCase chủ cửa hàng quản lý danh sách nhân viên

UseCase chủ cửa hàng quản lý danh sách khách hàng

Hình 8 : UseCase chủ cửa hàng quản lý danh sách khách hàng

UseCase chủ cửa hàng quản lý đặt hàng

Hình 9 : UseCase chủ cửa hàng quản lý đặt hàng

Ngày đăng: 21/05/2021, 22:22

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