Giới thiệu về SQL Azure

Một phần của tài liệu (LUẬN văn THẠC sĩ) GIẢI PHÁP THỰC tế của điện TOÁN đám mây và ỨNG DỤNG TRONG GIẢNG dạy đại học (Trang 53)

2.3.1. Giới thiệu

SQL Azure là dịch vụ cơ sở dữ liệu quan hệ của Microsoft trên đám mây. SQL Azure cung cấp tính sẵn sàng cao cho cơ sở dữ liệu của ta. Tại bất kì thời điểm, SQL Azure duy trì ba bản sao của cơ sở dữ liệu của ta trên đám mây.

SQL Azure dựa vào cơ cấu cơ sở dữ liệu quan hệ Microsoft SQL Server. Việc cho ra đời SQL Azure, Microsoft nhằm mục đích cung cấp một cơ sở dữ liệu quan hệ trên đám mây như một dịch vụ cho ứng dụng on-premise và ứng dụng đám mây. SQL Azure không cung cấp tất cả các tính năng sẵn có trong SQL Server, nhưng nó cung cấp các tính năng tối thiểu cần thiết để triển khai và duy trì một cơ sở dữ liệu trên đám mây. Ví dụ các tính năng như Service Broker, store procedure.

44

2.3.2. Tổng quan kiến trúc2.3.2.1 Mô hình Provisioning 2.3.2.1 Mô hình Provisioning

SQL Azure được thiết kế để hỗ trợ khả năng mở rộng cực đại và chi phí thấp, cung cấp môi trường thân thiện cho nhà quản trị và lập trình viên. Nó có mô hình phân cấp được mô tả như sau:

- Tài khoản Windows Azure Platform:

Để sử dụng SQL Azure, ta phải tạo một tài khoản Windows Azure. Sử dụng tài khoản này, ta có thể truy xuất tất cả chức năng của nền tảng Windows Azure. Tài khoản này được sử dụng để thanh toán việc sử dụng các dịch vụ Windows Azure.

- Máy chủ Windows Azure Platform :

Mỗi tài khoản Windows Azure có thể chứa nhiều máy chủ SQL Azure. Mỗi máy chủ bao gồm hệ thống đăng nhập và ta cũng có thể chỉ định vị trí địa lý mà máy chủ của ta được đặt ở cấp này.

Ta sử dụng cổng SQL Azure để tạo và quản lí máy chủ cơ sở dữ liệu của ta. Cổng này cung cấp giao diện dễ dàng sử dụng để ta có thể tạo đăng nhập và cung cấp cơ sở dữ liệu.

2.3.2.2 Cơ sở dữ liệu SQL Azure :

Mỗi máy chủ Cơ sở dữ liệu SQL Azure có thể chứa nhiều cơ sở dữ liệu. Một máy chủ cơ sở dữ liệu mới có một cơ sở dữ liệu chính. Trong mỗi cơ sở dữ

liệu, ta có thể tạo table, view, stored procedure và các đối tượng cơ sở dữ liệu quen thuộc khác. Ta có thể sử dụng cổng SQL Azure để tạo cơ sở dữ liệu.

Cơ sở dữ liệu SQL Azure được nhân rộng các phân vùng dữ liệu trên nhiều máy tính vật lý tại một trung tâm dữ liệu SQL Azure. Kiến trúc này cung cấp chuyển đổi dự phòng tự động và cân bằng tải. Dữ liệu khách hàng được lan truyền

45

qua nhiều máy chủ vật lý trong phạm vi địa điểm địa lý được thiết lập. Bằng cách này, Cơ sở dữ liệu SQL Azure đ ạt được độ sẵn sàng cao và ổn định cho tất cả các ứng dụng từ nhỏ nhất đến lớn nhất mà không cần nỗ lực quản lí chuyên sâu.

- Mô hình dữ liệu quan hệ

Mục tiêu thiết kế chính cho SQL Azure là cung cấp một môi trường thân thuộc cho lập trình viên cơ sở dữ liệu. Do đó, các đối tượng được tạo ra trong Cơ sở dữ liệu SQL Azure giống như các đối tượng hiện có trong cơ sở dữ liệu SQL Server. Như : Table, Index, View, Stored Procedure, Trigger.

Cả SQL Server và SQL Azure sử dụng ngôn ngữ TSQL để tạo cơ sở dữ

liệu và thao tác dữ liệu. Do đó, các lập trình viên cơ sở dữ liệu và người quản trị

có thể sử dụng các kỹ năng chuyên môn hiện có của họ cho SQL Azure.

- Kiến trúc truy xuất dữ liệu

Cơ sở dữ liệu SQL Azure expose một endpoint Tabular Data Stream (TDS) cho cơ sở dữ liệu trên đám mây. Một ứng dụng desktop của client có thể

kết nối vào Cơ sở dữ liệu SQL Azure tương tự như cách kết nối một thể hiện SQL Server on-premise. Truy vấn được sử dụng bằng ngôn ngữ TSQL. Secure Sockets Layer(SSL) được yêu cầu khi một ứng dụng client kết nối vào endpoint TDS Cơ sở dữ liệu SQL Azure nhằm đảm bảo bảo mật.

Trong kịch bản ứng dụng desktop và Cơ sở dữ liệu SQL Azure, ta phải xem xét độ trễ xảy ra trên đám mây và trong xử lý của client. Độ trễ này chắc chắn cao hơn so với cơ sở dữ liệu được đặt trên cơ sở của ta. Một cách để tránh độ

trễ này là tạo ra một giao diện người dùng trên nền Web cho các ứng dụng cơ sở dữ liệu của ta và máy chủ lưu trữ nó trong Windows Azure. Trong kịch bản này, mã nguồn client và các dữ liệu được lưu trữ tại trung tâm cùng với cơ sở

dữ liệu, do đó, độ trễ thấp.

46

Kiến trúc thứ ba mà SQL Azure hỗ trợ, ta có thể tạo một ứng dụng bằng cách sử dụng ADO.Net và Entity Framework, chứa nó trên Windows Azure. Sau đó ta có thể sử dụng ADO.NET Data Services để công bố ứng dụng này như một dịch vụ, sử dụng SOAP, REST hoặc giao tiếp JSON, và xây dựng ứng dụng client nhẹ để sử dụng dữ liệu từ dịch vụ.

2.3.2.3 Mô hình bảo mật (adsbygoogle = window.adsbygoogle || []).push({});

Nhiều cơ sở dữ liệu chứa các thông tin nhạy cảm, vì thế nó cần phải kiểm soát truy cập cẩn thận. Trong SQL Azure, ta có thể sử dụng các cách bảo mật sau để chứng thực truy xuất và bảo vệ dữ liệu của ta:

SQL Server Login: được dùng để chứng thực truy xuất vào SQL Azure ở

cấp độ máy chủ.

Database User: được dùng để cấp quyền truy cập vào SQL Azure tại cấp độ cơ sở dữ liệu.

Database Role: được dùng cho nhóm người dùng , để cấp quyền truy xuất vào SQL Azure tại cấp độ cơ sở dữ liệu.

2.3.2.4 Triển khai

Có thể tạo và đặt một cơ sở dữ liệu hoàn toàn bằng cơ sở dữ liệu SQL Azure bằng cách sử dụng Transact-SQL. Tuy nhiên, trong hầu hết trường hợp, các lập trình viên hoặc quản trị viên sẽ thiết kế và đặt cơ sở dữ liệu trên máy tính lập trình viên hoặc máy chủ on-premise. Khi ứng dụng được hoàn thành, cơ sở dữ liệu sẽ được triển khai đến các đám mây.

Để triển khai một cơ sở dữ liệu trên SQL Azure, ta có thể tạo một script TSQL CREATE DATABASE trong Microsoft SQL Server® Management Studio với Generate Script Wizard. Sau đó ta có thể chạy TSQL trong SQL Azure để tạo cơ sở dữ liệu.

47

2.3.3. Ứng dụng của SQL Azure

Một ứng dụng Windows Azure có thể lưu trữ dữ liệu trong Cơ sở dữ liệu SQL Azure. Trong khi bộ lưu trữ Windows Azure không hỗ trợ các bảng dữ

liệu quan hệ, mà nhiều ứng dụng đang tồn tại sử dụng cơ sở dữ liệu quan hệ. Vì vậy, lập trình viên có thể chuyển ứng dụng đang chạy sang ứng dụng Windows Azure với lưu trữ dữ liệu trong Cơ sở dữ liệu SQL Azure.

48

CHƢƠNG 3: ỨNG DỤNG WINDOWS AZURE TRONG GIẢNG DẠY ĐẠI HỌC

3.1. Xây dựng hệ thống nhập học sinh viên, tạo khóa học và tập huấn trên Microsoft Azure sử dụng ASP.NET MVC5

3.1.1. Cài đặt môi trƣờng phát triển :

Để bắt đầu ta cần cài đặt Azure SDK for .NET.

Để cài đặt SDK ta click vào link dưới đây http://azure.microsoft.com/en- us/downloads/

Click vào VS 2012 Install hoặc VS 2013 Install (tuỳ vào VS ta đang sử dụng) Khi được hỏi Run hoặc Save ta chọn Run

Ở cửa sổ Web Platform Installer , click Install .

Hình 3.1: Cài đặt Windows Azure SDK

Khi cài đặt hoàn tất mọi thứ gần như đã sẵn sàng để bắt đầu làm việc.

3.1.2. Tạo một ứng dụng ASP.NET MVC5 :

Tiếp theo ta sẽ dùng Visual Studio tạo một ứng dụng web application project sau đó publish tới Azure.

Mở Visual Studio 2012 hoặc Visual Studio 2012 for Web Express. TừFile menu, click New, và sau đóclick Project.

49

Hình 3.2: Tạo New Project

Ở cửa sổ New Project , ta click Visual C# sau đó chọn mẫu Web Templates, ở đây mình chọnASP.NET MVC 5 Web Application.

Ta phải chắc chắn là đã chọn .NET Framework 4.5 ở mục bên trên target framework. Đặt tên ứng dụng và click OK.

Hình 3.3: Đặt tên dự án và thư mục lưu trữ (adsbygoogle = window.adsbygoogle || []).push({});

Sau đó ở cửa sổ tiếp theo như hình bên dưới chọn MVC và chọn Change

Authentication

50

Hình 3.4: Chọn MVC

+ Ở trangChange Authentication đặtNo Authentication, và chọn OK.

Hình 3.5: Chọn N Authentication

Trở lại trang New ASP.NET Project , chọn OK xuất hiện màn hình với các cài đặt mặc định cho trang web ktvUniversity

Hình 3.6: Màn hình hệ thống thống nhập học sinh viên, tạo khóa học và tập huấn

51

3.2. Tạo trang Web quản lý việc nhập học của sinh viên, tạo khóa học vàtập huấn. tập huấn.

3.2.1. Mô hình cơ sở dữ liệu :

3.2.1.1 Bảng cơ sở dữ liệu Person : Lưu thông tin về khoa kết nối, họ đệm, tên, ngày thuê, ngày nhập học, phân loại

TT Tên trƣờng 1 ID 2 LastName 3 FirstName 4 HireDate 5 EnrollmentDate 6 Discriminator Bảng 3.1 : Thiết kế bảng Person

3.2.1.2 Bảng cơ sở dữ liệu OffceAssignment : Lưu trữ thông tin mã khoa, địa chỉ

TT Tên trƣờng

1 InstructorID 2 Location

Bảng 3.2 : Thiết kế bảng OfficeAssignment

3.2.1.3 Bảng cơ sở dữ liệu Enrollment : Lưu trữ thông tin mã giảng viên, mã khóa học, mã sinh viên

TT Tên trƣờng 1 EnrollmentID 3 CourseID 4 StudentID 5 Grade Bảng 3.3 : Thiết kế bảng Enrollment 52 download by : skknchat@gmail.com

3.2.1.4 Bảng cơ sở dữ liệu Department : Lưu trữ thông tin về mã khoa, tên khoa, học phí, ngày bắt đầu học, mã khóa giảng viên, khóa hàng

TT Tên trƣờng 1 DepartmentID 2 Name 3 Budget 4 StartDate 5 InstructorID 6 RowVersion Bảng 3.4 : Thiết kế bảng Department

3.2.1.5 Bảng cơ sở dữ liệu CourseInstructor : Lưu trữ thông tin khóa liên kết

giữa khóa học và giảng viên

TT 1 2

Bảng 3.5 : Thiết kế bảng CourseInstructor

3.2.1.6 Bảng cơ sở dữ liệu Course : Lưu trữ thông tin về mã môn học ; tên môn học, học phí liên kết với mã khoa phụ trách giảng dạy

TT Tên tƣờng 1 CourseID 2 Title 3 Credits 4 DepartmentID Bảng 3.6 : Thiết kế bảng Course 53 download by : skknchat@gmail.com

+ Lƣợc đồ cơ sở dữ liệu :

Hình 3.7: Lược đồ cơ sở dữ liệu

3.2.2 Xây dựng các thành phần của ứng dụng : (adsbygoogle = window.adsbygoogle || []).push({});

Mô tả các lớp đối tượng và phương thức tương ứng + Lp Person :

using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema;

54

namespace ktvUniversity.Models {

public abstract class Person {

public int ID { get; set; } [Required]

[StringLength(50)]

[Display(Name = “Last Name”)] public string LastName { get; set; } [Required]

[StringLength(50, ErrorMessage = “First name cannot be longer than 50 characters.”)]

[Column(“FirstName”)]

[Display(Name = “First Name”)]

public string FirstMidName { get; set; } [Display(Name = “Full Name”)]

public string FullName {

get {

return LastName + “, “ + FirstMidName; } } } } + Lp Student : using System; using System.Collections.Generic; 55 download by : skknchat@gmail.com

using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema; namespace ktvUniversity.Models

{

public class Student : Person {

[DataType(DataType.Date)]

[DisplayFormat(DataFormatString = “{0:yyyy-MM-dd}”,

ApplyFormatInEditMode = true)] [Display(Name = “Enrollment Date”)] public DateTime

EnrollmentDate { get; set; }

public virtual Icollection<Enrollment> Enrollments { get; set; }

} } + Lp OffceAssignment : using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace ktvUniversity.Models {

public class OfficeAssignment {

[Key]

[ForeignKey(“Instructor”)]

public int InstructorID { get; set; } [StringLength(50)] (adsbygoogle = window.adsbygoogle || []).push({});

[Display(Name = “Offce Location”)] public string Location { get; set; }

56

public virtual Instructor Instructor { get; set; } } } + Lp Instructor : using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace ktvUniversity.Models {

public class Instructor : Person {

[DataType(DataType.Date)]

[DisplayFormat(DataFormatString = “{0:yyyy-MM-dd}”,

ApplyFormatInEditMode = true)] [Display(Name = “Hire Date”)] public DateTime HireDate { get; set; }

public virtual Icollection<Course> Courses { get; set; }

public virtual OffceAssignment OfficeAssignment { get; set; }

} } + Lp Enrollment : using System.ComponentModel.DataAnnotations; namespace ktvUniversity.Models {

public enum Grade

57

{

A,B,C,D,F }

public class Enrollment {

public int EnrollmentID { get; set; } public int CourseID { get; set; } public int StudentID { get; set; } [DisplayFormat(NullDisplayText = “N grade”)] public Grade? Grade { get; set; }

public virtual Course Course { get; set; } public virtual Student Student { get; set; } } } + Lp Department : using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespacektvUniversity.Models {

public class Department {

public int DepartmentID { get; set; } [StringLength(50, MinimumLength = 3)] public string Name { get; set; }

58

[DataType(DataType.Currency)] [Column(TypeName = “money”)] public decimal Budget { get; set; } [DataType(DataType.Date)]

[DisplayFormat(DataFormatString = “{0:yyyy-MM-dd}”,

ApplyFormatInEditMode = true)]

[Display(Name = “Start Date”)] public DateTime StartDate { get; set; } public int? InstructorID { get; set; } [Timestamp]

public byte[] RowVersion { get; set; }

public virtual Instructor Administrator { get; set; } public virtual Icollection<Course> Courses { get; set; }

} } + Lp Course: using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace ktvUniversity.Models {

public class Course {

[DatabaseGenerated(DatabaseGeneratedOption.Nne)] [Display(Name = “Number”)] public int CourseID { get; set; }

59 (adsbygoogle = window.adsbygoogle || []).push({});

[StringLength(50, MinimumLength = 3)] public string Title { get; set; }

[Range(0, 5)]

public int Credits { get; set; }

public int DepartmentID { get; set; }

public virtual Department Department { get; set; }

public virtual Icollection<Enrollment> Enrollments { get; set; } public virtual Icollection<Instructor> Instructors { get; set; }

} }

3.2.3 Xây dựng các phân hệ :

+ Trang chủ :

Hình 3.8: Trang chủ của trang web

+ Sinh viên : Tạo mới các thông tin về sinh viên: họ đêm, tên sinh viên, ngày nhập học gồm các thao tác : sửa, hiện thị, xóa các thông tin sinh viên

60

Hình 3.9: Cập nhật các thông tin cho sinh viên

+ Môn học :Tạo mới các thông tin về môn học: Mã môn, tên môn, số tín chỉ, khoa giảng dạy gồm các thao tác : sửa, hiện thị, xóa các thông tin môn học

Hình 3.10: Cập nhật thông tin các môn học

61

+ Giảng viên: Tạo mới các thông tin về giảng viên: Họ đệm, tên giảng viên, ngày, ngày dạy, địa chỉ, môn học gồm các thao tác : sửa, hiện thị, xóa các thông tin giảng viên

Hình 3.11: Cập nhật thông tin về giảng viên

62

+ Khoa giảng dạy:Tạo mới các thông tin về khoa giảng dạy: tên khoa, học phí, ngày dạy giảng viên gồm các thao tác : sửa, hiện thị, xóa các thông tin giảng viên

Hình 3.12: Cập nhật thông tin về khoa giảng dạy

3.3. Đăng kí tài khoản Microft Azure

Đầu tiên ta cần phải đăng kí tài khoản Microsoft Azure thực hiện qua các bước như sau:

b1: Vào địa chỉ của trang Web Microsoft là

https://azure.microsoft.com/en-es/. Sau đó nhấn chọn nút “try for free”.

Hình 3.13. Vào địa chỉ của trang Web Microsoft

63

b2: Nhấn chọn nút “try it now”. Micrsoft sẽ cho một tháng sử dụng miễn phí. Đăng kí miễn phí và nhận 200$ để chi tiêu cho các dịch vụ của Azure.

Hình 3.14. Đăng ký tài khoản Microsoft Azure

b3: Tại đây nếu có tài khoản Microsoft Azure thì đăng nhập sử dụng dịch vụ trên Microsoft Azure bình thường. Nếu chưa có tài khoản ta cần đăng kí tài khoản mới rồi mới có thể đăng nhập bằng cách nhấn vào nút “Sign up now” để đăng kí. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.15. Đăng nhập tài khoản.

64

b4: Tại đây điền đầy đủ thông tin cần đăng kí tài khoản. Sau đó chọn nút

“Create Acount” để tạo tài khoản.

Hình 3.16. Điền thông tin đăng ký

65

b5: Sau khi tạo Account kích chọn nút “Send email” để xác nhận tài khoản.

Hình 3.17. Gửi thông tin vào mail kích hoạt tài khoản

b6: Sau khi xác nhận tài khoản tiến hành đăng nhập và chuyển đến trang đăng nhập yêu cầu một số thông tin để hoàn tất. Để đăng kí được cần phải có thẻ Visa.

Hình 3.18 . Nhập các thông tin về để mở tài khoản.

66

b7: Sau khi đăng kí thành công kích vào Portal để sử dụng Azure. Đăng kí

thành công Microsoft Azure sẽ cho 30 ngày dùng thử miễn phí.

Hình 3.19 . Màn hình Microsoft Azure Portal

3.4. Đƣa trang Web lên Windows Azure3.4.1. Tạo trang Web rỗng trên Windows Azure 3.4.1. Tạo trang Web rỗng trên Windows Azure

1. Đăng nhập vào Quản lýPortal Azure.

2. Nhấp vào biểu tượngNew trên bên trái phía dưới của bảng điều khiển.

3. Nhấp vào biểu tượngWEP APP, và nhấp chọn CUSTOM CREATE

67

Một phần của tài liệu (LUẬN văn THẠC sĩ) GIẢI PHÁP THỰC tế của điện TOÁN đám mây và ỨNG DỤNG TRONG GIẢNG dạy đại học (Trang 53)