NGINX có thể hỗ trợ nhiều hơn một website, và các tệp tin định nghĩa cáctrang web của bạn ở trong thư mục /etc/nginx/sites-available.. Tuy nhiên, các tệp tin trong thư mục này không “liv
Tổng quan NET 6
Vào tháng 11/2021, Microsoft đã ra mắt NET 6, đánh dấu một bước phát triển quan trọng với bản cập nhật LTS (Long Term Support) đầu tiên, hợp nhất giữa NET Core và NET Framework Trước đó, NET 5 đã chuẩn bị cho sự hợp nhất này nhưng không phải là phiên bản LTS Với NET 6.0, các ứng dụng doanh nghiệp có thể yên tâm nâng cấp từ NET Core 3.1, NET 5 hay NET Framework 4.8 mà không lo ngại về độ ổn định và thời gian hỗ trợ lâu dài từ Microsoft.
Bản cập nhật mới nhất của NET mang đến nhiều tính năng được cộng đồng mong đợi, trong đó nổi bật là cơ chế Hot Reload cho ứng dụng NET Đồng thời, phiên bản C# 10 và F# 6 cũng được giới thiệu, cùng với sự cải tiến hiệu năng liên tục của nền tảng NET qua từng phiên bản.
Chúng ta có thể điểm qua các thay đổi và các tính năng mới như:
Nền tảng NET 6 hỗ trợ trên các hệ điều hành Linux, macOS và Windows, tương tự như các phiên bản trước Để phát triển với NET 6, người dùng cần nâng cấp lên Visual Studio 2022, một môi trường phát triển tích hợp (IDE) mới nhất Tuy nhiên, Visual Studio Code vẫn tương thích với mọi phiên bản NET Đối với người dùng Visual Studio for Mac, họ vẫn có thể sử dụng Visual Studio 2019 để phát triển ứng dụng.
Các tính năng mới trong NET 6 như sau:
Hỗ trợ Production stress-tested dành cho ứng dụng Microsoft services, ứng dụng cloud chạy bởi các công ty khác, và đã mở mã nguồn.
Hỗ trợ trong 3 năm hay gọi là LTS.
Nền tảng thống nhất hỗ trợ nhiều loại trình duyệt, cloud, desktop, IoT, và mobile apps, tất cả sử dụng chung code base có thể share code dễ dàng.
Hiệu năng được cải thiện rất nhiều và cho tác tác vụ I/O cụ thể, bằng cách giảm thời gian thực thi, độ trễ và bộ nhớ sử dụng.
C# 10 cải tiến ngôn ngữ bằng các tính năng như record structs, implicit using, và new lambda capabilities, trong khi trình biên dịch tăng khả năng gen code.
Hot Reload cho phép bạn tiết kiệm thời gian bằng cách tránh việc xây dựng và khởi động lại ứng dụng khi có thay đổi mới, ngay cả khi ứng dụng vẫn đang chạy Tính năng này hỗ trợ trên Visual Studio 2022 và từ NET CLI cho cả C# lẫn Visual Basic.
Cloud diagnostics được cải tiến với OpenTelemetry và dotnet monitor, hỗ trợ cho tìm lỗi trên môi trường Production trên Azure App Service.
JSON APIs được tăng khả năng và có hiệu năng cao hơn với source generator cho bộ xử lý JSON.
Minimal APIs được giới thiệu trong NET Core giúp đơn giản và dễ dàng bắt đầu cũng như cải tiến hiệu năng của HTTP services.
Blazor có thể được render từ JavaScript và tích hợp với ứng dụng Javascript base.
WebAssembly AOT biên dịch cho ứng dụng Blazor WebAssembly
(Wasm), as well as support for runtime relinking and native dependencies.
Single-page applications introduced with ASP.NET Core now utilize a flexible pattern, allowing developers to integrate Angular, React, or other JavaScript frontend frameworks seamlessly.
HTTP/3 được thêm vào ASP.NET Core, HttpClient, và gRPC có thể tương tác với HTTP/3 giữa client và server.
Cơ chế đọc ghi file (File IO) đã được cải tiến đáng kể với việc tái thiết kế lớp FileStream, mang lại hiệu suất tối ưu và hỗ trợ liên kết tượng trưng hiệu quả hơn.
Bảo mật được cải tiến bằng việc hỗ trợ OpenSSL 3, phương thức mã hoá
ChaCha20Poly1305, và các biện pháp ngăn chặn chiều sâu, đặc biệt là W^X và CET.
Single-file apps (extraction-free) được ra mắt trên Linux, macOS và
Windows (trước đây chỉ có trên Linux).
IL trimming hiệu quả hơn với cảnh báo mới, bộ phân tích để đảm bảo kết quả đúng cuối cùng.
Source generators và analyzers được thêm vào giúp bạn tái hiện bug tốt hơn, an toàn hơn và tối ưu hiệu năng hơn.
Source build cho phép tổ chức như Red Had xây dựng NET từ mã nguồn mở và tự xây dựng cho người dùng của mình.
Bản NET 6 là phiên bản hỗ trợ lâu dài (LTS) với thời gian hỗ trợ lên đến 3 năm Phiên bản này tương thích với nhiều hệ điều hành, bao gồm cả macOS trên Apple Silicon và Windows Arm64.
Red Hand hỗ trợ NET trên Red Hat Enterprise Linux và đã làm việc với team.
NET 6 được hỗ trợ với Visual Studio 2022 và Visual Studio 2022 for Mac.
Nó không hỗ trợ Visual Studio 2019, Visual Studio for Mac 8 hoặc MSBuild
16 Nếu bạn muốn dùng NET 6 thì phải upgrade lên Visual Studio 2022. Nếu dùng Visual Studio Code thì có thể phát triển sử dụng C# Extension
Có thể bắt đầu migrate ứng dụng của mình lên NET 6 từ NET 5 Nó cũng tương thích tốt khi upgrade từ NET 3.1 và NET 5.
Nền tảng thống nhất và mở rộng
Với NET Multi-platform App UI (.NET MAUI), người dùng có thể phát triển nhiều loại ứng dụng như Desktop, Web, IoT, WebAssembly và Cloud từ một nền tảng duy nhất, giúp dễ dàng chia sẻ code base Đặc biệt, với NET MAUI, bạn có thể viết code trong một project và tạo ra ứng dụng chạy trên cả Desktop và Mobile .NET MAUI được tích hợp trong NET 6, mang lại sự tiện lợi và linh hoạt cho các nhà phát triển.
Có thể phát triển cả Windows Desktop với Windows Forms và WPF cũng như trên cloud với ASP.NET Core.
Các nội dung chủ đạo trong việc tăng hiệu năng như:
Dynamic PGO: viết tắt của Dynamic Profile-guided Optimization
(PGO) cho phép biên dịch nhanh, tăng hiệu năng khởi động và tăng khả năng phục vụ nhiều hơn số request (dự tính 26%) số request trên giây.
Cải tiến xử lý JSON
Cải tiến hiệu năng nhập xuất File, ví dụ với NET 5 và NET 6 ghi ghi 1 file 100MB cho ra 2 kết quả rất tốt.
C# 10 có rất nhiều tính năng mới như:
Global using directive: sử dụng global using sẽ không phải using mọi nơi như System namespace chẳng hạn.
File scoped namespace: không cần phải lồng class trong namespace
Tính năng hot reload là một công cụ quan trọng giúp nhà phát triển nâng cao hiệu suất làm việc bằng cách cho phép chỉnh sửa mã ngay khi ứng dụng đang chạy Điều này giúp giảm thiểu thời gian chờ đợi để rebuild, khởi động lại và điều hướng đến vị trí thay đổi Hot Reload có sẵn trong dotnet watch CLI và Visual Studio 2022, và có thể được sử dụng với nhiều loại ứng dụng khác nhau như ASP.NET Core, Blazor, NET MAUI, Console, Windows Forms, WPF, WinUI 3, và Azure Functions.
Bảo mật trong NET 6 đã được cải thiện đáng kể thông qua mô hình hóa, mã hóa và ngăn chặn xâm nhập Trên hệ điều hành Linux, OpenSSL được sử dụng, trong khi trên macOS và Windows, các chức năng tương tự cũng có sẵn Đặc biệt, NET 6 hỗ trợ OpenSSL 3, điều này làm tăng cường khả năng bảo mật cho các ứng dụng phát triển trên nền tảng này.
- Trên NET Core 3.0 đã hỗ trợ Arm 32 nhưng với NET 6 đã hỗ trợ Arm 64 giúp NET 6 tương thích nhiều loại thiết bị hơn.
Tổng quan về NGINX/Kestrel/IIS/Apache
NGINX là một web server mã nguồn mở mạnh mẽ, nổi bật với kiến trúc đơn luồng và hướng sự kiện, mang lại hiệu suất vượt trội so với Apache Ngoài việc phục vụ nội dung web, NGINX còn hỗ trợ load balancing, HTTP caching và hoạt động như một reverse proxy Kiến thức về NGINX là điều cần thiết đối với web developer, system administrator và devops.
Các mốc ra đời và phát triển của Nginx
Nginx được phát triển bởi Igor Sysoev vào năm 2002 và ra mắt lần đầu vào năm 2004 Đến tháng 7 năm 2011, Nginx Inc được thành lập với văn phòng chính tại San Francisco, California, Hoa Kỳ.
Những tính năng của NGINX
Có khả năng xử lý hơn 10.000 kết nối cùng lúc với bộ nhớ thấp.
Phục vụ tập tin tĩnh (static files) và lập chỉ mục tập tin.
Tăng tốc reverse proxy bằng bộ nhớ đệm (cache), cân bằng tải đơn giản và khả năng chịu lỗi.
Hỗ trợ tăng tốc với bộ nhớ đệm của FastCGI, uwsgi, SCGI, và các máy chủ memcached.
Kiến trúc modular, tăng tốc độ nạp trang bằng nén gzip tự động.
Hỗ trợ mã hoá SSL và TLS.
Cấu hình linh hoạt; lưu lại nhật ký truy vấn
Chuyển hướng lỗi 3XX-5XX
Rewrite URL (URL rewriting) dùng regular expressions
Hạn chế tỷ lệ đáp ứng truy vấn
Giới hạn số kết nối đồng thời hoặc truy vấn từ 1 địa chỉ
Khả năng nhúng mã PERL
Hỗ trợ và tương thích với IPv6
Hỗ trợ truyền tải file FLV và MP4
Những tính năng máy chủ mail proxy của Nginx
Các phương pháp xác thực :
POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;
Hỗ trợ SSL, STARTTLS và STLS
Có 2 cách để cài đặt NGINX, có thể sử dụng gói (package) dựng sẵn hoặc cài đặt từ source.
Cài đặt NGINX từ source mang lại khả năng tùy chỉnh và cài đặt thêm các module, giúp tăng cường sức mạnh cho NGINX Mặc dù phương thức cài đặt đơn giản hơn có thể nhanh chóng, nhưng việc cài đặt từ source cho phép chúng ta điều chỉnh theo nhu cầu cụ thể của ứng dụng.
- Để cài đặt một gói Debian dựng sẵn, thứ duy nhất cần làm là: sudo apt-get update sudo apt-get install nginx
Sau khi hoàn tất quá trình cài đặt, bạn có thể xác nhận mọi thứ hoạt động bình thường bằng cách sử dụng lệnh sau: `sudo nginx -v`, lệnh này sẽ hiển thị phiên bản NGINX đã được cài đặt, ví dụ: nginx version: nginx/1.18.2.
Webserver mới sẽ được cài đặt tại thư mục /etc/nginx/, nơi bạn sẽ tìm thấy nhiều tệp tin và thư mục Trong số đó, tệp tin nginx.conf và thư mục sites-available là hai yếu tố quan trọng nhất mà bạn cần chú ý.
The essential configurations in the default nginx.conf file include setting the user to www-data, specifying four worker processes, defining the PID file location as /run/nginx.pid, and allowing 768 worker connections within the events block.
} http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048;
# server_names_hash_bucket_size 64;
To optimize your Nginx server configuration, ensure that the `server_name_in_redirect` directive is set to off, and include the MIME types from `/etc/nginx/mime.types` Set the default content type to `application/octet-stream`, and specify access and error logs at `/var/log/nginx/access.log` and `/var/log/nginx/error.log`, respectively Additionally, enable Gzip compression with `gzip on`, while disabling it for Internet Explorer 6 using `gzip_disable "msie6"`.
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;
Tệp tin được tổ chức thành các ngữ cảnh, bao gồm ngữ cảnh sự kiện (events) và ngữ cảnh HTTP Cấu trúc này mang lại nhiều lợi ích trong việc cấu hình, cho phép mỗi ngữ cảnh lồng ghép vào ngữ cảnh khác, kế thừa các thiết lập từ ngữ cảnh cha nhưng cũng có khả năng ghi đè các thiết lập đó khi cần thiết.
Tệp tin cấu hình này cho phép bạn tùy chỉnh nhiều yếu tố theo nhu cầu cá nhân, nhưng cũng có thể sử dụng các thiết lập mặc định Một số phần quan trọng trong tệp tin này bao gồm các cài đặt cơ bản cần lưu ý.
The worker_processes directive in NGINX defines the number of worker processes that will be utilized Since NGINX operates on a single-threaded model, this value is typically set to match the number of CPU cores available.
Số lượng worker_connection là giới hạn tối đa của các kết nối đồng thời mà mỗi worker process có thể xử lý, cho biết số lượng người dùng mà NGINX có thể phục vụ cùng lúc.
Tệp tin access_log và error_log là các tệp quan trọng mà NGINX sử dụng để ghi lại lỗi và số lần truy cập Những bản ghi này thường được áp dụng trong quá trình gỡ lỗi và sửa chữa sự cố.
Gzip là các thiết lập nén GZIP cho phản hồi NGINX, với nhiều tùy chọn phụ có thể cải thiện hiệu suất đáng kể Trong số các thiết lập này, gzip_comp_level là yếu tố quan trọng, xác định mức nén từ 1 đến 10, với giá trị tối ưu không nên vượt quá 6 để tránh tiêu tốn quá nhiều CPU Ngoài ra, gzip_types liệt kê các loại phản hồi sẽ được nén.
NGINX có thể hỗ trợ nhiều hơn một website, và các tệp tin định nghĩa các trang web của bạn ở trong thư mục /etc/nginx/sites-available.
Các tệp tin trong thư mục này không hoạt động trực tiếp; mặc dù bạn có thể định nghĩa nhiều tệp tin cho các trang web ở đây, NGINX sẽ không xử lý chúng trừ khi chúng được liên kết tượng trưng (symlink) tới thư mục /etc/nginx/sites-enabled Bạn cũng có thể sao chép chúng vào thư mục này, nhưng việc sử dụng symlink đảm bảo rằng chỉ có một bản sao duy nhất của mỗi tệp tin được theo dõi.
Nó cung cấp cho bạn một cách nhanh chóng để đưa các trang web trực tuyến hoặc ngoại tuyến mà không cần xóa bất kỳ tệp tin nào Khi bạn muốn trang web hoạt động, chỉ cần tạo symlink tới thư mục sites-enabled và khởi động lại NGINX.
Tổng quan về lập trình với ngôn ngữ Python
Python là một ngôn ngữ lập trình bậc cao phổ biến, được sử dụng rộng rãi để phát triển trang web, phần mềm, tự động hóa tác vụ và phân tích dữ liệu Với tính chất đa mục đích, Python cho phép lập trình viên tạo ra nhiều loại chương trình khác nhau mà không bị giới hạn vào một lĩnh vực cụ thể nào.
Tính linh hoạt và sự thân thiện với người mới bắt đầu đã giúp ngôn ngữ lập trình này trở thành một trong những ngôn ngữ phổ biến nhất hiện nay Theo khảo sát của công ty phân tích ngành RedMonk, nó đứng thứ hai trong danh sách các ngôn ngữ lập trình được ưa chuộng nhất bởi các nhà phát triển vào năm 2021.
Python là ngôn ngữ lập trình phổ biến trong phát triển back-end cho website và ứng dụng, đảm nhiệm các tác vụ mà người dùng không thấy Vai trò của Python bao gồm gửi và nhận dữ liệu từ máy chủ, xử lý thông tin, giao tiếp với cơ sở dữ liệu, định tuyến URL và đảm bảo an ninh Để hỗ trợ phát triển web, Python cung cấp nhiều khuôn khổ, trong đó Django và Flask là hai lựa chọn thường được sử dụng.
Một số công việc phát triển web sử dụng Python bao gồm kỹ sư phụ trợ, nhà phát triển Python, kỹ sư phần mềm và kỹ sư DevOps.
- Tự động hoá và phát triển phần mềm
Nếu bạn đang thực hiện các nhiệm vụ lặp đi lặp lại, tự động hóa chúng bằng Python có thể giúp bạn làm việc hiệu quả hơn Quá trình này, được gọi là viết script, cho phép bạn kiểm tra lỗi, chuyển đổi tệp, thực hiện phép toán đơn giản và loại bỏ bản sao trong dữ liệu Ngay cả những người mới bắt đầu cũng có thể sử dụng Python để tự động hóa các tác vụ như đổi tên tệp, tìm kiếm và tải nội dung trực tuyến, hoặc gửi email theo lịch trình Trong phát triển phần mềm, Python hỗ trợ kiểm soát bản dựng, theo dõi lỗi và thử nghiệm, giúp các nhà phát triển tự động kiểm tra sản phẩm hoặc tính năng mới Một số công cụ Python như Green và Requestium thường được sử dụng cho kiểm thử phần mềm.
Python là ngôn ngữ lập trình dễ đọc và thân thiện với người mới bắt đầu, giúp các nhà phát triển chưa có kinh nghiệm dễ dàng tiếp cận Cộng đồng người dùng Python ngày càng mở rộng, bao gồm nhiều học giả và giáo sư, tạo nên một môi trường hỗ trợ mạnh mẽ Khi gặp sự cố, các nhà phát triển có thể nhanh chóng tìm kiếm sự giúp đỡ từ cộng đồng mà không cần lo lắng về độ phức tạp của ngôn ngữ.
Python là một ngôn ngữ lập trình miễn phí và mã nguồn mở, được phát triển theo giấy phép nguồn mở được OSI phê chuẩn, cho phép người dùng tự do sử dụng và phân phối, kể cả cho mục đích thương mại Việc này không chỉ giúp giảm chi phí bảo trì mà còn tạo cơ hội cho các nhà phát triển chia sẻ, sao chép và thay đổi mã nguồn Đối với cộng đồng Python, đây là dịp để trao đổi kiến thức giữa các chuyên gia và những người mới bắt đầu.
Python được coi là một ngôn ngữ lập trình dễ sử dụng, đặc biệt khi xây dựng các ứng dụng phía máy chủ, tự động hóa hệ thống xây dựng và thu thập dữ liệu thử nghiệm Mặc dù C++ hoặc các ngôn ngữ kịch bản khác có thể dễ sử dụng hơn khi phát triển ứng dụng hoặc trò chơi di động, nhưng Python vẫn là lựa chọn tốt hơn cho các ứng dụng phức tạp và đòi hỏi sự ổn định cao.
Python nổi bật với đa dạng thư viện và framework, đây chính là một trong những ưu điểm lớn nhất của ngôn ngữ này Từ NumPy đến TensorFlow, các thư viện Python phục vụ cho nhiều mục đích khác nhau, bao gồm trực quan hóa dữ liệu, học máy, khoa học dữ liệu, xử lý ngôn ngữ tự nhiên và phân tích dữ liệu phức tạp.
Python sở hữu một thư viện lớn với khả năng quản lý bộ nhớ và thiết kế trống, giúp tăng năng suất của nhà phát triển Nhờ đó, các nhà phát triển có thể quản lý cơ sở dữ liệu, tài liệu, trình duyệt web, thực hiện kiểm tra đơn vị và nhiều chức năng khác Ngoài ra, Python còn được sử dụng để phát triển nhiều tác vụ như ứng dụng web và máy tính để bàn, hệ thống tính toán phức tạp, hệ thống quản lý hỗ trợ cuộc sống, Internet of Thing (IoT), trò chơi và nhiều ứng dụng khác.
NỘI DUNG
ASP.NET / ASP.NET Core và sự khác nhau
ASP.NET là nền tảng phát triển web mạnh mẽ, cho phép tạo ra các trang web, ứng dụng và dịch vụ web Nó tích hợp các ngôn ngữ lập trình phổ biến như HTML, CSS và JavaScript, mang đến sự linh hoạt và hiệu suất cao cho các dự án phát triển trực tuyến.
1.1.1.2 Chức năng của ASP.NET
Web Forms trong ASP.NET cung cấp khả năng tương tác hướng sự kiện cho các ứng dụng web, cho phép phát triển các ứng dụng dễ dàng truy cập dữ liệu.
ASP.NET MVC là một framework giúp xây dựng trang web động thông qua mô hình Model View Controller Mô hình này phân chia ứng dụng thành ba phần chính: dữ liệu (Model), giao diện người dùng (View) và logic ứng dụng (Controller), giúp cải thiện khả năng quản lý và phát triển ứng dụng.
ASP.NET web Pages: dùng để tạo ra các trang web động kết hợp máy chủ với HTML một cách nhanh chóng.
1.1.1.3 Các thành phần của ASP.NET
Ngôn ngữ:ASP.NET sử dụng nhiều ngôn ngữ lập trình khác nhau như VB.NET và C#.
Thư viện:ASP.NET có bộ thư viện chuẩn bao gồm các giao diện,các lớp và kiểu giá trị.
Thời gian chạy ngôn ngữ chung(CLR): Được sử dụng để thực hiện cac shoajt động mã cũng như xử lý các ngoại lệ và thu gom rác.
1.1.2.1 ASP.NET Core là gì?
ASP.NET Core là phiên bản mới và mã nguồn mở của ASP.NET do Microsoft phát hành, ban đầu được gọi là ASP.NET 5 trước khi được đổi tên thành ASP.NET Core.
Xây dựng web UI và web API với ASP.NET Core MVC
Người dùng có thể tạo ra những ứng dụng web có thể thực hiện testing theo mô hình MVC.
Xây dựng HTTP services hỗ trợ nhiều định dạng và đầy đủ những hỗ trợ cho nội dung của dữ liệu trả về.
Razor cung cấp ngôn ngữ tạo Views hiệu quả.
Tag Helper cho phép code server side tham gia vào quá trình tạo và render phần tử HTML.
Model Binding có thể tự động ánh xạ dữ liệu từ HTTP request tới những tham số của method action.
Model validation thực hiện validate client và server một cách tự động. Phát triển client-side
ASP.NET Core được thiết kế tích hợp với nhiều client side frameworks một cách liên tục bao gồm AngularJS, Bootstrap và KnockoutJS.
Là khung mẫu và gọn gàng hơn kiến trúc nhiều tầng.
Là một khung công tác với mã nguồn mở.
Dễ dàng tạo ứng dụng ASP.NET đa nền tảng trên Windows, Mac và Linux.
Cấu hình là môi trường sẵn sàng cho đám mây.
Khả năng lưu trữ trên: IIS, HTTP.sys, Kestrel, Nginx, Apache và Docker.
1.1.3 Sự khác nhau giữa ASP.NET và ASP.NET Core.
Kiến trúc và thành phần của một solution và project ASP.NET Core
ASP.NET ASP.NET CORE
Chỉ hỗ trợ Windows Chạy đa nền tảng
Hiệu năng chạy framework cao Có hiệu năng chạy cao hơn
WCF,WPF,VB,Web Config, và các files khác
Chỉ chạy được trên NET
Không hỗ trợ các files Global.asax và Web config, nhưng lại hỗ trợ appsettings.json
Chạy được trên hai nền NET Framework và Core Framework.
Sử dụng ngôn ngữ C#, VB, WCF,
Asp.Net Core chỉ hỗ trợ tạm thời các ngôn ngữ C#, F# và VB, và không tương thích với WCF, WPF và WF Tuy nhiên, nó có khả năng hỗ trợ các thư viện WCP có sẵn.
Hỗ trợ vùng chứa không được đánh giá quá cao.
Hỗ trợ vùng chứa phù hợp cho các triển khai như Docker.
Hỗ trợ mọi phiên bản Chỉ có các phiên bản Visual Code từ 2015 trở lên mới được hỗ trợ
Người dùng cần biên dịch lại sau khi thay đổi mã.
Khi làm mới Core Browser sẽ tự động biên dịch và thực thi mã mà không cần phải dịch lại.
- Từ cửa sổ Solution Explorer, chúng ta có thể lướt qua cấu trúc tổng thể của một dự án ASP.NET Core MVC với một số thành phần sau:
Thư mục gốc của dự án trong cửa sổ Solution Explorer nằm ở vị trí cao nhất và được bao quanh bởi một thư mục solution Visual Studio sử dụng khái niệm solution để quản lý nhiều dự án, mặc dù trong trường hợp này chỉ có một dự án duy nhất Trong thư mục này, chúng ta sẽ tìm thấy tập tin solution với phần mở rộng sln.
Kế tiếp thư mục gốc dự án là tập tin quan trọng nhất của dự án, tập tin MVCBooks.csproj.
Trong mô hình MVC, các thư mục Controllers, Models và Views đóng vai trò quan trọng trong việc xây dựng dự án, vì chúng chứa các tập tin cần thiết để quản lý logic, dữ liệu và giao diện người dùng.
Thư mục Propertieschứa tập tinlaunchSettings.json kiểm soát cách Visual Studio sẽ chạy và debug ứng dụng.
Thư mục wwwroot là một thư mục quan trọng, cho phép trình duyệt web truy cập trực tiếp vào các tệp như CSS, JS, hình ảnh và HTML Nếu các tệp này nằm ngoài thư mục wwwroot, trình duyệt sẽ không thể truy cập chúng.
Hai thư mục đặc biệt là Properties và wwwroot nằm trên cửa sổ Solution Explorer, gần mục dự án và không theo thứ tự chữ cái Trên hai thư mục này, có hai mục quan trọng hơn là Dependencies và Connected Services, chứa các thành phần phụ thuộc như gói NuGet, dịch vụ từ xa và các thành phần hướng client Tập tin appsettings.json cung cấp thông tin cấu hình cho ứng dụng trong quá trình thực thi hoặc biên dịch.
Hai tập tin Program.cs và Startup.cs đóng vai trò quan trọng trong việc kiểm soát cấu hình và quá trình khởi động của ứng dụng khi thực thi Chúng ta sẽ đi sâu vào nội dung và chức năng của hai tập tin này.
1.2.3 Tập tin dự án csproj
Tập tin quan trọng nhất của ứng dụng NET là tập tin cấu hình, nhưng trong ASP.NET Core, nội dung của tập tin này đã được lược giản để dễ đọc và dễ chỉnh sửa hơn, như ví dụ về nội dung của MVCBooks.csproj.
Thuộc tính Sdk trong phần tử Project xác định loại dự án, cụ thể là dự án Web Trong khi đó, phần tử TargetFramework chỉ ra framework ứng dụng được sử dụng, ở đây là NET Core 3.1.
Giống như các ứng dụng Console, dự án ASP.NET Core cũng bao gồm lớp Program với hàm Main, nhưng hàm này được sử dụng để xây dựng và thực thi một đối tượng IWebHost IWebHost là thành phần cốt lõi của ứng dụng ASP.NET Core, chứa cấu hình ứng dụng và Kestrel server để lắng nghe các yêu cầu và phản hồi đến người dùng Để định nghĩa cấu hình cho IWebHost, nó sử dụng WebHostBuilder, được tạo ra bằng cách gọi CreateDefaultBuilder, trước khi tạo đối tượng IWebHost thông qua lời gọi Build().
{ public static void Main(string[] args)
} public static IHostBuilder CreateHostBuilder(string[] args) =>
Tập tin này chứa lớp Startup chứa thông tin cấu hình ứng dụng dựa trên hai khía cạnh:
Tất cả các lớp được dùng trong ứng dụng phải được đăng ký để chúng có thể được sử dụng một cách chính xác tại thời gian thực thi.
Cách thức ứng dụng xử lý và hồi đáp các yêu cầu từ người dùng. Lớp Startup từ MVCBooks:
// This method gets called by the runtime Use this method to
// add services to the container.
33 public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews();
// This method gets called by the runtime Use this method to // configure the HTTP request pipeline. public void Configure(IApplicationBuilder app,
// The default HSTS value is 30 days You may want to // change this for production scenarios, see
// https://aka.ms/aspnetcore-hsts. app.UseHsts();
46 app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints =>
{ endpoints.MapControllerRoute( name: "default", pattern: "
{controller=Home}/{action=Index}/{id?}");
Demo Project 1
Tạo một project ASP.NET Core cơ bản, xuất ra màn hình trang web thông tin về nhóm: tên và MSSV của các thành viên trong nhóm
Các bước thực hiện tạo Project ASP.NET Core
Bước 1 : Tìm ASP.NET Core app
Bước 2: Nhập tên Project muốn tạo rồi nhấn Next
Bước 3: Truy cập vào View/Solution tìm tệp Page rồi tìm file index.cshtml để chỉnh sửa
Bước 4 : Nhấn tổ hợp phím Ctrl+F5 để chạy chương trình lên local host
Tìm hiểu tổng quan Hệ quản trị cơ sở dữ liệu PostgreSQL
PostgreSQL là hệ thống quản trị cơ sở dữ liệu quan hệ và đối tượng miễn phí, mã nguồn mở, được xem là tiên tiến nhất hiện nay Hệ thống này có khả năng mở rộng và tuân thủ các tiêu chuẩn kỹ thuật, được thiết kế để xử lý khối lượng công việc lớn, từ máy tính cá nhân cho đến kho dữ liệu và dịch vụ web với nhiều người dùng đồng thời.
Linh động có thể chạy được trên nhiều nền tảng khác nhau như MacOS X, Solaris và Windows
PostgreSQL là phần mềm mã nguồn mở miễn phí, cho phép người dùng tự do sử dụng, sửa đổi và phân phối cho nhiều mục đích khác nhau Phần mềm này nổi bật với tính ổn định cao, đảm bảo hiệu suất và độ tin cậy trong các ứng dụng.
PostgreSQL là hệ thống quản lý cơ sở dữ liệu đầu tiên triển khai tính năng kiểm soát đồng thời nhiều phiên bản (MVCC).
PostgreSQL là một hệ quản trị cơ sở dữ liệu mạnh mẽ với nhiều tính năng hỗ trợ phát triển ứng dụng phức tạp, cho phép truy vấn nhanh chóng và bảo mật cao Hệ thống này cung cấp các tùy chọn bảo mật, xác thực và khôi phục thảm họa đa dạng, đảm bảo tính toàn vẹn và độ tin cậy của dữ liệu Ngoài ra, PostgreSQL còn nổi bật với khả năng mở rộng linh hoạt, cho phép xử lý khối lượng dữ liệu lớn và nhiều người dùng đồng thời.
Dưới đây là một số các tính năng nổi bật được tổng hợp lại:
Câu truy vấn phức hợp (complex query)
Thủ tục sự kiện (trigger)
Tính toàn vẹn của các giao dịch (integrity transactions)
Việc kiểm tra truy cập đồng thời đa phiên bản (multiversion concurrency control)
Truy vấn xử lý song song (parallel query)
Sao chép dữ liệu dạng luồng (Streaming replication) a Kiểu dữ liệu
Nguyên hàm: Số nguyên, số, chuỗi, Boolean
Cấu trúc: Date/Time, Array, Phạm vi, UUID
Document: JSON/JSONB, XML, Key-value (Hstore)
Hình học: Điểm, Đường thẳng, Vòng tròn, Đa giác
Tùy chỉnh: Composite, Các kiểu tùy chỉnh b Toàn vẹn dữ liệu
Khóa hàm số, Khóa khuyến nghị
Lập danh mục: B-tree, Multicolumn, Expressions, Partial
Lập danh mục nâng cao: GiST, SP-Gist, KNN Gist, GIN, BRIN, Bloom filters
Trình lập kế hoạch / trình tối ưu hóa truy vấn phức tạp, quét index-only, thống kê số liệu trên nhiều cột.
Giao tác, Giao tác dạng nest (thông qua lưu điểm)
Điều khiển đồng thời nhiều phiên bản (MVCC)
Truy vấn đọc song song
Tất cả các mức độ giao dịch độc lập được xác định trong tiêu chuẩn SQL, bao gồm cả Serializable
Độ tin cậy, phục hồi sau thảm hoạ
Ghi nhật ký ghi trước (Write-ahead Logging - WAL)
Replication: Không đồng bộ, Đồng bộ, Logical
Khôi phục điểm-theo-thời gian (Point-in-time-recovery - PITR), active standbys
Không gian bảng c Bảo mật
Xác thực: GSSAPI, SSPI, LDAP, SCRAM-SHA-256, Certificate và các hình thức khác
Hệ thống kiểm soát truy cập mạnh mẽ
Bảo mật cấp độ cột và hàng d Khả năng mở rộng
Ngôn ngữ thủ tục: PL / PGSQL, Perl, Python (và nhiều ngôn ngữ khác)
Trình wrapper dữ liệu ngoài: kết nối với các cơ sở dữ liệu hoặc luồng khác với giao diện SQL chuẩn
Và nhiều tiện ích mở rộng cung cấp chức năng bổ sung, bao gồm cả PostGIS
Hỗ trợ các bộ ký tự quốc tế, ví dụ: thông qua ICU collations
Tìm kiếm văn bản đầy đủ
2.1.3 Ưu điểm và hạn chế a Ưu điểm
Có khả năng chạy trang web, ứng dụng web động.
Lưu lại nhật ký, hình thành cơ sở dữ liệu hỗ trợ sửa lỗi.
Mã nguồn PostgreSQL luôn sẵn sàng để người dùng chỉnh sửa nâng cấp.
Hỗ trợ khách hàng theo từng vùng địa lý.
Cách thức sử dụng đơn giản. b Hạn chế
PostgreSQL không chịu sự quản lý của bất kỳ tổ chức nào gây khó khăn để người tiếp cận với đầy đủ tính năng.
Có vô số ứng dụng ứng dụng mã nguồn mở không phải ứng dụng nào cũng được hỗ trợ tốt.
Hiệu suất hoạt động chậm hơn so với MySQL
Kết nối ASP.NET Core với PostgreSQL có nhiều tác dụng quan trọng trong việc phát triển ứng dụng web
PostgreSQL là một hệ quản trị cơ sở dữ liệu mạnh mẽ và miễn phí, giúp bạn lưu trữ và quản lý dữ liệu ứng dụng một cách hiệu quả Với tính năng độ tin cậy cao và khả năng xử lý lỗi tốt, PostgreSQL là lựa chọn lý tưởng cho các ứng dụng cần sự ổn định và khả năng phục hồi sau lỗi Hơn nữa, hệ thống này cung cấp khả năng xử lý dữ liệu nhanh chóng và tối ưu hóa truy vấn, góp phần nâng cao hiệu suất ứng dụng của bạn.
PostgreSQL hỗ trợ đa nền tảng, cho phép bạn triển khai ứng dụng ASP.NET Core trên nhiều hệ điều hành như Windows, Linux và macOS.
ASP.NET Core offers integrated support for Entity Framework Core, a powerful Object-Relational Mapping (ORM) tool This integration enables developers to interact with PostgreSQL databases using C# code, eliminating the need to write SQL queries directly.
PostgreSQL cung cấp các tính năng bảo mật mạnh mẽ như xác thực và ủy quyền, giúp bảo vệ dữ liệu khỏi các mối đe dọa Ngoài ra, PostgreSQL hỗ trợ khả năng mở rộng, cho phép quản lý các loại dữ liệu lớn như JSON, XML và dữ liệu địa lý (GIS) Kết nối ASP.NET Core với PostgreSQL giúp bạn tận dụng ưu điểm của cả hai công nghệ, từ đó xây dựng các ứng dụng web mạnh mẽ, bảo mật và hiệu quả.
PostgreSQL nổi bật với tính bảo mật và độ tin cậy cao, được công nhận là một trong những hệ quản trị cơ sở dữ liệu đáng tin cậy nhất hiện nay.
Nó mang đến các tính năng bảo mật vượt trội, bao gồm xác thực và ủy quyền, nhằm bảo vệ dữ liệu của bạn khỏi các mối đe dọa an ninh.
Hiệu suất: PostgreSQL được tối ưu hóa để xử lý truy vấn và dữ liệu nhanh chóng, giúp cải thiện hiệu suất ứng dụng của bạn
PostgreSQL hỗ trợ đa nền tảng, cho phép triển khai ứng dụng ASP.NET Core trên nhiều hệ điều hành khác nhau.
ASP.NET Core comes with built-in support for Entity Framework Core, a powerful ORM that allows you to manage PostgreSQL data using C# code without the need to write SQL queries directly.
PostgreSQL nổi bật với khả năng mở rộng, cho phép quản lý hiệu quả nhiều loại dữ liệu đặc biệt, bao gồm dữ liệu địa lý (GIS), JSON, XML và nhiều định dạng khác.
Học cách sử dụng PostgreSQL có thể đòi hỏi thời gian để làm quen, đặc biệt là trong việc tối ưu hóa truy vấn và chỉnh sửa cấu trúc cơ sở dữ liệu.
Cài đặt và quản lý PostgreSQL yêu cầu người dùng có kiến thức về hệ thống, điều này có thể làm cho quá trình trở nên khó khăn hơn so với một số hệ quản trị cơ sở dữ liệu khác dễ sử dụng hơn.
PostgreSQL thiếu nhiều công cụ phát triển trực quan và tích hợp so với các hệ quản trị cơ sở dữ liệu khác, điều này có thể khiến việc phát triển và quản lý cơ sở dữ liệu trở nên phức tạp hơn.
Kết nối ASP.NET Core với PostgreSQL mang lại nhiều lợi ích như bảo mật, hiệu suất và khả năng mở rộng Tuy nhiên, cần lưu ý đến nhược điểm về độ dốc học tập và quản lý cơ sở dữ liệu để đảm bảo quá trình phát triển và triển khai ứng dụng diễn ra hiệu quả.
Tổng quan kết nối ASP.NET Core MVC, với Hệ quản trị cơ sở dữ liệu PostegreSQL
Bước 1: Ta sẽ vào file appsettings.json thêm câu lệnh sau:
Database=thuyettrinhtuan4; Username=postgres; Password3"
} Câu lệnh này dùng để kết nối vào cơ sở dữ liệu PostGreSQL
To connect to PostgreSQL in Visual Studio, navigate to Tools > NuGet Package Manager > Manage NuGet Packages for Solution, and download the three Npgsql extensions These extensions provide the necessary commands for establishing a connection, as Visual Studio does not natively support PostgreSQL connectivity.
Bước 3: Nhấp chuột phải vào thư mục Models và tạo một lớp Context, ví dụ như demoPOSTContext, để có thể truy xuất dữ liệu từ bảng vào Visual Studio.
Sau đó ta sẽ vào file Program.cs của solution và thêm các câu lệnh sau: builder.Services.AddDbContext
Trong bài viết này, chúng ta sẽ sử dụng chuỗi kết nối Npgsql từ cấu hình để khởi tạo chương trình Dự án demo thực hiện một ứng dụng ASP.NET Core MVC, hiển thị thông tin về danh sách sinh viên, danh sách môn học và danh sách giảng viên Bước đầu tiên là tạo ba bảng trong PostgreSQL hoặc bất kỳ cơ sở dữ liệu nào khác.
Bước 2: Trong thư mục Models, tạo ba lớp tương ứng với giảng viên, môn học và sinh viên Sau đó, khai báo các biến tương ứng với các trường trong bảng, chẳng hạn như magv và tengv của bảng giangvien.
Trong SQL, giá trị được khai báo phải đúng với những gì đã định nghĩa trong Visual Studio; nếu không, chương trình sẽ báo lỗi khai báo sai tên giá trị Bước tiếp theo là vào class Context, cụ thể là demoPOSTContext, và thêm ba class vừa tạo vào để đảm bảo khi kết nối với cơ sở dữ liệu, các giá trị từ bảng sẽ được truy xuất chính xác.
Bước 4: Để hiển thị dữ liệu trên trang, chúng ta cần lập trình phần view Để tiết kiệm thời gian, chúng ta sẽ sử dụng extension của Npg để tự động tạo mã cho phần view của ba bảng: giangvien, sinhvien và monhoc.
AJAX là từ viết tắt của từ synchronous avaScript nd ML - Bất đồngA J A X bộ trong Javascript và XML
Bất đồng bộ (Asynchronous) là khái niệm cho phép chương trình thực hiện các hàm không theo thứ tự nhất định, có thể bỏ qua một số bước trong quy trình Lợi ích nổi bật nhất của bất đồng bộ là khả năng xử lý nhiều công việc đồng thời, giúp nâng cao hiệu suất và tiết kiệm thời gian cho người dùng.
Javascript là một ngôn ngữ lập trình phổ biến, nổi bật với khả năng quản lý nội dung động trên website và hỗ trợ tương tác người dùng hiệu quả.
XML: Đây là một dạng ngôn ngữ gần giống với HTML, tên đầy đủ là e tensible arkup anguage Nếu HTML được dùng để hiển thị dữ liệu,X M L
XML được thiết kế để chứa dữ liệu.
AJAX cho phép trình duyệt giao tiếp với máy chủ web để gửi yêu cầu và nhận dữ liệu Nhờ vào AJAX, phản hồi từ máy chủ được xử lý, giúp thay đổi nội dung trang web mà không cần tải lại toàn bộ trang.
Khi sử dụng Facebook, Instagram, Twitter, người dùng thường nhấn Like một bài viết, nhưng trang web không cần tải lại để tăng số lượt Like Thực tế, việc nhấn Like trên Facebook tự động cập nhật số lượt Like mà không cần làm mới trang Để thực hiện điều này, công nghệ AJAX được sử dụng, cho phép truyền tải thông tin cần thiết đến máy chủ và hiển thị kết quả cho người dùng mà không làm gián đoạn trải nghiệm.
Sử dụng AJAX trong Javascript
Khởi tạo đối tượng
Để sử dụng AJAX trong Javascript thì chúng ta cần sử dụng đối tượng XMLHttpRequest
Trong đó: varriableName là tên biến mà muốn gán cho object XMLHttpRequest.
Các thuộc tính và phương thức
onreadystatechange: Xác định một hàm được gọi khi thuộc tính readyState thay đổi.
readyState: Trạng thái của XMLHttpRequest.
Trong đó nếu giá trị bằng các giá trị sau thì sẽ có trạng thái tương ứng
0 - request chưa được khởi tạo.
1 - kết nối đến server đang được thiết lập.
2 - yêu cầu đã nhận được.
3 - đang tiến hành xử lý.
4 - request đã xong và dữ liệu trả về đã sẵn sàng để xử lý.
responseText: Giá trị trả về dưới dạng string.
responseXML: Giá trị trả về dưới dạng XML.
status: Trả về trạng thái của request VD:
statusText: Trả về trạng thái của request dưới dạng text VD: Ok, Not
new XMLHttpRequest(): Tạo đối tượng XMLHttpRequest.
abort(): Hủy Request hiện tại.
getAllResponseHeaders(): Lấy ra thông tin header.
getResponseHeader(): Trả về cụ thể thông tin header.
open( method, url, async, user, psw ): Cấu hình cho một request mới.
send( string ): Gửi dữ liệu đến server đã được cấu hình ở phương thức open() Trong đó string là data các bạn muốn truyền theo nếu request là POST.
setRequestHeader(): Thiết lập các thông số header gửi lên.
AJAX hoạt động như thế nào?
AJAX không phải là một công nghệ duy nhất hay một ngôn ngữ lập trình, mà là một bộ kỹ thuật phát triển web Bộ hệ thống này bao gồm nhiều công nghệ khác nhau được sử dụng để tạo ra các ứng dụng web tương tác và nhanh chóng.
HTML/XHTML làm ngôn ngữ chính và CSS để tạo styles.
The Document Object Model (DOM) để hiển thị dữ liệu động và tạo tương tác.
XML để trao đổi dự liệu nội bộ và XSLT để xử lý nó Nhiều lập trình viên đã thay thế bằng JSON vì nó gần với JavaScript hơn.
XMLHttpRequest object để giao tiếp bất đồng bộ.
Cuối cùng, JavaScript làm ngôn ngữ lập trình để kết nối toàn bộ các công nghệ trên lại.
Cách hoạt động của AJAX có thể được mô tả như sau:
1 Trình duyệt tạo một lệnh gọi JavaScript để kích hoạt XMLHttpRequest.
2 Ở dưới nền, trình duyệt tạo một yêu cầu HTTP gửi lên server.
3 Server tiếp nhận, truy xuất và gửi lại dữ liệu cho trình duyệt.
4 Trình duyệt nhận dữ liệu từ server và ngay lập tức hiển thị lên trang Không cần tải lại toàn bộ trang.
AJAX là một khái niệm quan trọng cho các trang web hiện đại, giúp tối ưu hóa việc tải dữ liệu từ máy chủ Việc phát triển ứng dụng với chức năng AJAX cho phép kiểm soát hiệu quả lượng dữ liệu được truyền tải, nâng cao trải nghiệm người dùng.
POST & GET Request trong AJAX
Phương thức GET thì đơn giản hơn và nhanh hơn POST, và nó được sử dụng trong hầu hết các trường hợp.
Tuy nhiên, cần phải luôn sử dụng POST requests khi:
Tệp được lưu trong bộ nhớ cache không phải là một tùy chọn
Gửi một lượng lớn dữ liệu đến máy chủ.
Gửi thông tin người dùng nhập vào, POST sẽ mạnh mẽ và an toàn hơn GET.
Phương thức GET là một phương pháp phổ biến để truy xuất thông tin từ máy chủ mà không yêu cầu thực hiện bất kỳ thay đổi nào trong cơ sở dữ liệu.
Ví dụ: Tìm nạp kết quả tìm kiếm dựa trên một cụm từ, tìm nạp chi tiết người dùng dựa trên id hoặc tên của họ, v.v.
Ví dụ dưới đây sẽ hướng dẫn cách thực hiện một yêu cầu Ajax GET trong JavaScript (show code)
Phương thức POST chủ yếu được sử dụng để gửi dữ liệu biểu mẫu đến máy chủ web.
Ví dụ sau đây sẽ hướng dẫn cách gửi dữ liệu biểu mẫu đến máy chủ bằng Ajax: (show code) Ưu và Nhược điểm của việc sử dụng AJAX
AJAX, giống như mọi công nghệ khác, có những ưu điểm và nhược điểm riêng Dưới đây là một số tình huống quan trọng mà người dùng cần nắm rõ khi áp dụng AJAX trong phát triển ứng dụng web.
Ưu điểm
Cải thiện trải nghiệm người dùng: Đây là lợi ích quan trọng nhất của
AJAX AJAX tăng hiệu suất của trình duyệt và tạo điều kiện cho tốc độ duyệt nhanh hơn do đó cung cấp trải nghiệm người dùng đáp ứng.
Tăng khả năng tương thích: AJAX có thể tương thích với ASP.NET,
J2EE, PHP hoặc bất kỳ ngôn ngữ nào.
Hỗ trợ xử lý không đồng bộ: Có thể thực hiện truy xuất dữ liệu không đồng bộ bằng cách sử dụng XmlHttpRequest, xương sống của các ứng dụng
AJAX giúp xử lý các yêu cầu một cách hiệu quả, nâng cao khả năng tải nội dung động và cải thiện hiệu suất một cách đáng kể.
AJAX giúp giảm mức sử dụng băng thông và tăng tốc độ bằng cách sử dụng kịch bản phía máy khách để giao tiếp với máy chủ web qua JavaScript Nhờ vào AJAX, bạn có thể tối ưu hóa tải mạng, chỉ truy xuất dữ liệu cần thiết, từ đó mang lại giao diện nhanh hơn và thời gian đáp ứng tốt hơn Kết quả là hiệu suất và tốc độ được cải thiện đáng kể.
Năng suất người dùng được nâng cao: Thư viện AJAX cung cấp các hàm trợ giúp hướng đối tượng giúp tăng đáng kể năng suất cho người dùng.
Nhược điểm
Tính không tương thích của trình duyệt: AJAX phụ thuộc nhiều vào
JavaScript được triển khai khác nhau trên các trình duyệt, gây khó khăn cho việc sử dụng AJAX trên nhiều nền tảng Những trình duyệt không hỗ trợ hoặc đã tắt tùy chọn JavaScript sẽ không thể tận dụng các chức năng của nó.
Trang web không an toàn có thể gây khó khăn trong việc gỡ lỗi, làm tăng kích thước mã và tạo ra nguy cơ bảo mật nghiêm trọng cho trang web của bạn.
Bookmark: Khi người dùng muốn bookmark một trang lại thì khi sử dụng ajax sẽ ảnh hưởng đến người dùng vì không thể bookmark lại trang có ajax được
1 Cơ sở dữ liệu NoSQL là gì?
Cơ sở dữ liệu NoSQL là hệ thống quản lý dữ liệu phi quan hệ, được thiết kế đặc biệt cho các mô hình dữ liệu với lược đồ linh hoạt.
Việc phát triển cơ sở dữ liệu phi quan hệ nhằm phục vụ cho các kho dữ liệu phân tán là cần thiết để đáp ứng nhu cầu lưu trữ dữ liệu lớn hiện nay.
Cơ sở dữ liệu NoSQL, viết tắt từ cụm "Not Only SQL", được sử dụng rộng rãi trong các ứng dụng web thời gian thực và xử lý lượng dữ liệu lớn hàng ngày, như Google và Facebook Khác với cơ sở dữ liệu quan hệ RDBMS sử dụng cú pháp SQL để lưu trữ và truy xuất dữ liệu, NoSQL mang đến sự linh hoạt và khả năng mở rộng cho các hệ thống hiện đại.
Hệ thống cơ sở dữ liệu NoSQL có khả năng lưu trữ nhiều loại dữ liệu khác nhau, bao gồm dữ liệu có cấu trúc, bán cấu trúc, phi cấu trúc và dữ liệu đa hình Nhờ vào khả năng mở rộng quy mô lớn, dễ dàng phát triển và nhiều chức năng linh hoạt, cơ sở dữ liệu NoSQL đã trở thành một lựa chọn phổ biến trong nhiều ứng dụng.
2 Tại sao lại cần phải có NoSQL.
NoSQL được phát triển để đáp ứng nhu cầu lưu trữ lượng dữ liệu khổng lồ và thực hiện truy vấn nhanh chóng, mà không cần yêu cầu cao về phần cứng và tài nguyên hệ thống, đồng thời nâng cao khả năng chịu lỗi.
Đây là những vấn đề mà các relational database không thể giải quyết được.
Lượng dữ liệu mà các hệ thống như Google và Facebook phải xử lý ngày càng tăng cao, với hàng triệu thông tin được lưu trữ và xử lý mỗi ngày.
High Scalability: Gần như không có một giới hạn cho dữ liệu và người dùng trên hệ thống.
Tính khả dụng cao: Nhờ vào việc chấp nhận sự trùng lặp trong lưu trữ, hệ thống sẽ không bị ảnh hưởng khi một nút (máy tính thông thường) nào đó gặp sự cố.
Atomicity: Độc lập data state trong các operation.
Consistency: chấp nhận tính nhất quán yếu, có thể không thấy ngay được sự thay đổi mặc dù đã cập nhật dữ liệu.
Durability: dữ liệu có thể tồn tại trong bộ nhớ máy tính nhưng đồng thời cũng được lưu trữ lại đĩa cứng.
Sự linh hoạt trong triển khai cho phép bổ sung hoặc loại bỏ các node một cách tự động, giúp hệ thống nhận diện và lưu trữ mà không cần can thiệp thủ công Hơn nữa, hệ thống không yêu cầu cấu hình phần cứng mạnh mẽ và đồng nhất, tạo điều kiện thuận lợi cho việc quản lý và mở rộng.
Modeling flexibility: Key-Value pairs, Hierarchical data (dữ liệu cấu trúc),Graphs.
Query Flexibility: Multi-Gets, Range queries (load một tập giá trị dựa vào một dãy các khóa).
4 Lý do nên sử dụng NoSQL
NoSQL mang lại tính linh hoạt vượt trội với các sơ đồ dễ điều chỉnh, giúp tăng tốc độ phát triển và khả năng lặp lại trong quy trình Mô hình dữ liệu có thể chuyển đổi từ cơ sở dữ liệu phi quan hệ sang các ý tưởng cho dữ liệu không cấu trúc hoặc cấu trúc chưa hoàn chỉnh.
NoSQL được thiết kế để mở rộng quy mô hiệu quả thông qua việc sử dụng các cụm phần cứng phân phối, thay vì phụ thuộc vào việc bổ sung các máy chủ mạnh và tốn kém.
Cơ sở dữ liệu NoSQL mang lại hiệu năng cao nhờ vào việc tối ưu hóa từng mô hình và mẫu truy cập cụ thể Điều này giúp cải thiện hiệu suất so với các cơ sở dữ liệu quan hệ khi thực hiện các chức năng tương tự.
Cơ sở dữ liệu phi quan hệ mang lại tính thiết thực cao nhờ vào việc cung cấp các kiểu dữ liệu đa dạng, với API được phát triển riêng cho từng mô hình dữ liệu.
Khái quát qua về Cassandra
- Cassandra là NoSQL, được phát triển bởi Facebook vào năm 2007 Sau đó được tặng cho quỹ Apache vào 2/2010 và nâng cấp thành dự án hàng đầu của Apple
- Là hệ cơ sở dữ liệu phân tán, kết hợp giữa Google Bigtable và Amazon DynamoDB.
- Ngôn ngữ phát triển: Java
- Được thiết kế có thể chạy trên phần cứng giá rẻ.
- Cung cấp write throughtput khá cao và read throughput thấp
- Dễ dàng scale theo chiều ngang
Cassandra rất thích hợp trong những ứng dụng hay service làm về chat Hiện nay có 1 số công ty đang dùng như Facebook, Discord.
Cassandra cũng rất thích hợp cho những dòng ứng dụng mà có tốc độ dữ liệu gửi đến cực khủng từ nhiều thiết bị khác.
- Social Media Analytics and recommendation engine
Cassandra cũng rất thích hợp cho những chức năng về recommendation hay
1 vài chức năng liên quan đến analytics. Điểm mạnh của Cassandra
Cassandra, được phát triển dựa trên Amazon DynamoDB, có khả năng mở rộng cao Khi hệ thống không đáp ứng đủ tốc độ xử lý, chỉ cần thêm node mới để cải thiện hiệu suất.
Là kiến trúc phân phối dữ liệu trên nhiều node bên trong cluster.
Dựa theo thuật toán Consistent Hashing thì mỗi node sẽ được cấp phát 1 token, và dựa vào token này sẽ phân phối dữ liệu đến từng node.
Dữ liệu được tạo ra nhờ replication sẽ tự động phân chia đến từng node.
Là giao thức truyền thông giữa các node trong cluster Cơ bản là truyền thông P2P.
Không gian bộ nhớ (memtable)
- Tính nhất quán dữ liệu trong cluster