CHƯƠNG 1. TỔNG QUAN VỀ CÔNG CỤ HỖ TRỢ 1.1 Tổng quan về NodeJS 1.1 Khái niệm Node JS là một nền tảng dựa vào Chrome Javascript runtime để xây dựng các ứng dụng nhanh, có độ lớn.js sử dụng các phần phát sinh các sự kiện (event- driven), mô hình non-blocking I/O để tạo ra các ứng dụng nhẹ và hiệu quả cho các ứng dụng về dữ liệu thời gian thực chạy trên các thiết bị phân tán. Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ. Phần lõi bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao.
Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực. Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể. Nodejs cũng được thiết kế cho mục đích tạo ra các ứng dụng mạng có thể mở rộng được. Chú ý Nodejs là một nền tảng (Platform), không phải Web Framework, cũng không phải ngôn ngữ lập trình.1: Logo NodeJS NodeJS không dành cho người mà mới tinh, chưa biết gì về lập trình, ít nhất phải biết về Javascript, kỹ thuật lập trình, một số giao thức… Nodejs không hỗ trợ đa luồng, nó là một máy chủ đơn luồng.2 Ứng dụng của NodeJS Các ứng dụng trò chuyện trực tuyến, các máy chủ Game Server… • Fast File Upload Client: 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ời gian 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. • Một số những công ty lớn trên thế giới sử dụng Nodejs. "Theo như Paypal thì sử dụng Nodejs làm giảm thời gian đáp ứng lên tới 35%.
Còn về phía Linkedin chuyển từ Ruby sang sử dụng Nodejs để xử lý các truy cập từ mobile, và con số Server sử dụng giảm từ 30 còn 3, nghĩa là giảm gần 90%.3 Lý do lựa chọn công nghệ NodeJS Đầu tiên, các ứng dụng Nodejs được viết bằng javascript, ngôn ngữ này là một ngôn ngữ khá thông dụng. Theo tác giả của ngôn ngữ Javascript là Ryan Dahl, ông từng nói: "Javascript có những đặc tính mà làm cho nó rất khác biệt so với các ngôn ngữ lập trình động còn lại, cụ thể là nó không có khái niệm về đa luồng, tất cả là đơn luồng và hướng sự kiện." Nodejs chạy đa nền tảng phía Server, sử dụng kiến trúc hướng sự kiện Event-driven, cơ chế non-blocking I/O làm cho nó nhẹ và hiệu quả. Có thể chạy ứng dụng Nodejs ở bất kỳ đâu trên máy Mac - Window - Linux, hơn nữa cộng đồng Nodejs rất lớn và hoàn toàn miễn phí. Các ứng dụng NodeJS đáp ứng tốt thời gian thực và chạy đa nền tảng, đa thiết bị.
Sử dụng Nodejs cho hiệu năng tốt, đồng nghĩa với việc làm giảm số lượng các máy chủ vật lý, từ đó tăng tính an toàn về mặt vật lý khi quản trị server như giảm thiểu cháy nổ, đoản mạch .2 Tổng quan về ReactJS 1.1 Khái niệm ReactJS 2 Hình 1.2: Logo React React JS là thư viện Javascript được xây dựng bởi kỹ sư của Facebook, đang được rất nhiều công ty nổi tiếng sử dụng để phát triển các sản phẩm của họ như Yahoo, Airbnb và tất nhiên là trong nội tại Facebook, Instagram. Nó phù hợp với các dự án lớn có tính mở rộng hơn là các dự án nhỏ.2 Đặc tính của ReactJS Tư tưởng React JS là xây dựng lên các components có tính tái sử dụng, dễ dàng cho việc chia nhỏ vấn đề, testing. Nó giúp chúng ta dễ dàng quản lý, mở rộng hệ thống, điều này nếu là Angular JS thì đòi hỏi cấu trúc, cách viết code phải thật tối ưu. React JS luôn giữ các components ở trạng thái stateless (nhiều nhất có thể) khiến ta dễ dàng quản lý bởi nó chẳng khác gì một trang static HTML.
Bản thân các components này không có trạng thái (state) nó nhận đầu vào từ bên ngoài và chỉ hiển thị ra dựa vào các đầu vào đó, điều này lý giải tại sao nó lại mang tính tái sử dụng (reuse) và dễ dàng cho việc test.3 Thế mạnh của ReactJS React JS là một framework hiển thị view chú ý đến hiệu năng (performance- minded). Rất nhiều đối thủ nặng ký về framework MVVW (Model-View- ViewModel) mất một thời gian lớn để hiển thị những lượng data lớn, như trong trường hợp những danh sách (list) và tương tự. Nhưng React đó không còn là vấn đề, vì nó chỉ hiển thị những gì thay đổi. Một trong những điểm mạnh nữa của React JS là virtual DOM – thứ nằm ẩn bên trong mỗi view và là lí do khiến cho React đạt được hiệu năng tốt.
Khi một view yêu cầu gọi, tất cả mọi thứ sẽ được đưa vào trong một bản sao ảo của DOM. Sau khi 3 việc gọi hoàn thành, React tiến hành một phép so sánh giữa DOM ảo và DOM thật, và thực hiện những thay đổi được chỉ ra trong phép so sánh trên. Ví dụ: Nếu chúng ta đang xem một danh sách có 20 products được hiển thị bởi React, và chúng ta thay đổi product thứ 2, thì chỉ product đó được hiển thị lại, và 19 products còn lại vẫn giữ nguyên (không cần hiển thị lại hay reload lại trang). React đã dùng cái gọi là “DOM ảo” (“virtual DOM”) để tăng hiệu năng bằng cách xuất ra một hiển thị ảo, sau đó kiểm tra sự khác biệt giữa hiển thị ảo và nhưng gì có trên DOM và tạo một bản vá (a patch).3 Tổng quan về MongoDB 1.1 Khái niệm cơ sở dữ liệu NoSQL Hình 1.3: NO SQL NoSQL là một dạng cơ sở dữ liệu mã nguồn mở không sử dụng các câu lệnh T- SQL để 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. Với NoSQL, có thể mở rộng dữ liệu một cách thoải mái mà không phải lo lắng về khóa ngoại hay là khóa chính, hoặc các công việc như là kiểm tra ràng buộc như hệ quản trị cơ sở dữ liệu truyền thống.2 Ưu và nhược điểm của NoSQL • Ưu điểm: NoSQL giải quyết được các vấn đề dữ liệu lớn (big data) về các hệ thống thông tin hoặc là phân tán dữ liệu. • Nhược điểm: Cũng từ ưu điểm trên, do không hạn chế việc mở rộng dữ liệu nên nó tồn tại một số nhược điểm như là: sự phụ thuộc vào từng bản ghi, tính nhất quán hoặc là đặc tính toàn vẹn dữ liệu.3 Tổng quan về MongoDB MongoDB là một mã nguồn mở và là một tập tài liệu dùng cơ chế NoSQL để truy vấn, nó được viết bởi ngôn ngữ C++. Chính vì được viết bởi C++ nên nó có khả 4 năng tính toán với tốc độ cao chứ không giống như các hệ quản trị CSDL hiện nay.
MongoDB thích hợp cho các ứng dụng tầm trung trở lên. Nếu tỉ lệ lượng dữ liệu ghi vào CSDL của ứng dụng lớn hơn lượng đọc thì đây càng là lựa chọn hợp lý. MongoDB là một CSDL có khả năng mở rộng, hiệu suất cao, mã nguồn mở và hướng văn bản.4: Logo Mongo DB Dưới đây là một vài khái niệm cơ bản của MongoDB: • Văn bản Document là đơn vị cơ bản của dữ liệu trong MongoDB, nó tương đương với một dòng trong CSDL quan hệ. • Bộ sưu tập (Collection) có thể được coi như tương đương với một bảng.
• MongoDB có thể lưu trữ nhiều CSDL độc lập, mỗi CSDL này có các bộ sưu tập và điều khoản riêng của mình. • MongoDB đi kèm với một trình tiện ích JavaScript đơn giản nhưng mạnh mẽ, nó hữu ích trong quản trị và thao tác dữ liệu. • Mỗi văn bản có một khóa đặc biệt, đó là “_id”, nó là duy nhất trong bộ sưu tập của văn bản.4 Ưu và nhược điểm của MongoDB • Ưu điểm: 5 - Schema linh hoạt: Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau. - Cấu trúc đối tượng rõ ràng: Tuy rằng cấu trúc của dữ liệu là linh hoạt nhưng đối tượng của nó được xác định rất rõ ràng.
Sử dụng bộ nhớ nội tại, nên truy vấn sẽ rất nhanh. - Không có các join: Điều này cũng góp phần tạo nên tốc độ truy vấn cực nhanh trên MongoDB. - MongoDB rất dễ mở rộng và phù hợp cho các ứng dụng realtime thời gian thực. • Nhược điểm: - Điều đầu tiên phải kể đến ở đây là MongoDB không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận.
- MongoDB sử dụng sẽ hao tốn tài nguyên của hệ thống nhiều hơn RDBMS. Nhưng đến thời điểm hiện tại thì vấn đề này không còn là điều lo ngại nữa vì các máy tính mặt bằng chung cấu hình đều khá cao rồi.5 Ứng dụng MongoDB MongoDB thật sự rất hot nhưng không phải lúc nào ta sử dụng nó cũng tốt, có những trường hợp không nên sử dụng và nên sử dụng. Nếu website của chúng ta có tính chất INSERT cao, bởi vì mặc định MongoDB có sẵn cơ chế ghi với tốc độ cao và an toàn. Website của ở dạng thời gian thực nhiều, nghĩa là nhiều người thao tác với ứng dụng.
Nếu trong quá trình load bị lỗi tại một điểm nào đó thì nó sẽ bỏ qua phần đó nên sẽ an toàn. Với website có nhiều dữ liệu, giả sử ứng dụng web của chúng ta có đến 10 triệu bản ghi thì đó là cơn ác mộng với Mysql. Bởi vì MongoDB có khả năng tìm kiếm thông tin liên quan cũng khá nhanh nên trường hợp này nên dùng nó. Máy chủ không có hệ quản trị CSDL, trường hợp này thường nên sử dụng SQLITE hoặc là MongoDB.4 Tổng quan về Visual Studio Code (VSCode) 1.1 Khái niệm của VSCode Hình 1.5: Visual Studio Code Visual Studio Code là một trình biên tập mã được phát triển bởi Microsoft dành cho Windows, Linux và macOS.
Nó hỗ trợ chức năng debug, đi kèm với Git, có syntax highlighting, tự hoàn thành mã thông minh, snippets, và cải tiến mã nguồn. Nó cũng cho phép tùy chỉnh, do đó, người dùng có thể thay đổi theme, phím tắt, và cá tùy chọn khác. Nó miễn phí và là phần mềm mã nguồn mở. Visual Studio Code là một sản phẩm của Microsoft.