Quản lý dữ liệu trong Microsoft Windows Azure (P2)

Các thành phần của Windows Azure

Để nắm được những gì mà Windows Azure có thể cung cấp, chúng ta sẽ nhóm các dịch vụ của nó thành các mục riêng biệt như sau:

Quản lý dữ liệu trong Microsoft Windows Azure (P2)

Figure 1: Các dịch vụ của Windows Azure thực thi trên Microsoft Data Center

Bây giờ chúng ta sẽ đi tìm hiểu xem thành phần Data Management (Quản lý dữ liệu) là gì và khi nào thì chúng được sử dụng.

Data Management (Quản lý dữ liệu)

Các ứng dụng cần phải có dữ liệu, và các ứng dụng khác nhau sẽ đòi hỏi các loại dữ liệu khác nhau. Vì lý do đó, Windows Azure cung cấp nhiều cách khác nhau để lưu trữ và quản lý dữ liệu.

Một trong những điều này đã được mô tả ở bài trước: đó là khả năng chạy SQL Server hoặc DBMS khác trong một VM được tạo bởi Windows Azure Virtual Machine. Tuy nhiên một điều quan trọng cần được nhận thức là Windows Azure không chỉ giới hạn cho các hệ thống quan hệ; nó còn có khả năng để chạy các công nghệ NoSQL như MongoDB hay Cassandra. Windows Azure cung cấp 3 giải pháp quản lý dữ liệu như hình dưới đây.

Quản lý dữ liệu trong Microsoft Windows Azure (P2)

Figure 2 Windows Azure cung cấp giải pháp lưu trữ dưới dạng quan hệ, các bảng NoSQL có khả năng mở rộng, và lưu trữ nhị phân không cấu trúc Blobs

Mỗi một giải pháp dữ liệu này hướng tới một nhu cầu khác nhau: lưu trữ dạng quan hệ, truy cập nhanh tới khối lượng lớn dữ liệu với kiểu dữ liệu đơn giản, và lưu trữ nhị phân không cấu trúc. Trong tất cả các giải pháp này, dữ liệu được tự động sao chép (replicate) chéo giữa 3 máy tính khác nhau trông một data center của Windows Azure nhằm cung cấp khả năng sẵn sàng cao nhất. Một điểm đáng giá nữa là cả 3 lựa chọn dữ liệu này đều có thể truy cập trực tiếp bởi một ứng dụng Windows Azure hoặc một ứng dụng thực thi ở bất kỳ nơi nào, trong trung tâm dữ liệu của doanh nghiệp, trong máy tính cá nhân hay trên điện thoại thông minh.

SQL Database

Cho việc lưu trữ dưới dạng quan hệ, Windows Azure cung cấp SQL Database. Thường được gọi với tên SQL Azure, SQL Database cung cấp tất cả các tính năng chủ chốt của một hệ quản trị cơ sở dữ liệu quan hệ, bao gồm các giao dịch, truy cập dữ liệu đồng thời bởi nhiều người sử dụng với sự toàn vẹn dữ liệu, truy vấn dạng ANSI SQL, và các mô hình lập trình quen thuộc. Giống SQL Server, SQL Database có thể được truy cập sử dụng Entity Framework, ADO.NET, JDBC,và các công nghệ truy cập dữ liệu quen thuộc khác. Nó cũng hỗ trợ hầu hết ngôn ngữ T-SQL, đi kèm với SQL Server Tools như SQL Server Management Studio. Với tất cả ai đã quen với SQL Server ( hoặc cơ sở dữ liệu quan hệ khác), sử dụng SQL Database là không thể bàn cãi.

Nhưng SQL Database không chỉ là một DBMS trên cloud, nó là một dịch vụ PaaS. Bạn vẫn kiểm soát dữ liệu của mình và ai có thể truy cập chúng, nhưng SQL Database sẽ quản trị các công việc khác để cho nó thực thi như hạ tầng phần cứng hay cập hệ điều hành và phần mềm mới nhất. SQL Database cũng cung cấp một lựa chọn để phân tán dữ liệu giữa nhiều máy chủ. Điều này rất hữu dụng cho các ứng dụng với số lượng lớn dữ liệu hoặc cần thiết phải phân tách các yêu cầu truy cập dữ liệu tới các máy chủ khác nhau để đảm bảo hiệu năng được tốt nhất.

Nếu bạn đang tạo một ứng dụng Windows Azure, (sử dụng một trong 3 lựa chọn mô hình thực thi đã mô tả trong bài trước) mà cần đến lưu trữ dữ liệu quan hệ, SQL Database sẽ là một lựa chọn tốt. Các ứng dụng chạy bên ngoài môi trường Windows Azure cũng có thể sử dụng dịch vụ này, dó đó có rất nhiều kịch bản có thể được sử dụng. Lấy ví dụ, dữ liệu được lưu trữ trong SQL Database có thể được truy cập từ nhiều hệ thống phía client khác nhau như: ứng dụng để bàn, máy tính cá nhân, điện thoại thông minh. Và bởi vì SQL Database cung cấp sẵn khả năng sao chép liên tục để đảm bảo tính sẵn sàng cao nên giảm thiểu tối đa nguy hiểm về sự tạm dừng.

Tables

Giả sử bạn cần tạo một ứng dụng Windows Azure mà đảm bảo truy cập nhanh tới dữ liệu đã được định kiểu, có thể mất mát, nhưng không cần thiết phải thực hiện các câu lệnh truy vấn SQL phức tạp trên khối dữ liệu đó. Lấy ví dụ, bạn đang tạo ứng dụng cho người sử dụng đầu cuối, để lưu trữ thông tin profile của khách hàng cho mỗi người dùng. Ứng dụng đó sẽ trở nên rất phổ biến, do đó bạn cần cho phép mất mát dữ liệu, nhưng bạn sẽ không thao tác quá nhiều với dữ liệu này ngoài việc lưu trữ, và thực hiện lấy dữ liệu ra một cách đơn giản. Đây chính xác là kiểu tình huống mà Windows Azure Tables trở nên có ý nghĩa.

Đừng nhầm lẫn với cái tên: công nghệ này không cung cấp giải pháp lưu trữ quan hệ. Trong thực tế nó là một ví dụ của các tiếp cận NoSQL được gọi là lưu trữ cặp khoá/giá trị (key/value). Thay vì Windows Azure cho phép ứng dụng lưu trữ các thuộc tính của vài kiểu khác nhau như: chuỗi ký tự, số, và ngày tháng. Một ứng dụng có thể lấy ra một nhóm các thuộc tính này bằng việc cung cấp một khoá duy nhất cho nhóm đó. Trong khi đó các toán tử phức tạp như phép join không được hỗ trợ, Tables cho phép truy cập nhanh tới các dữ liệu đã được định kiểu. Do đó chúng rất dẽ mở rộng, với một table có khả năng chứa hàng terabyte dữ liệu. Và dễ dàng lôi dữ liệu ra, do đó Tables sẽ rẻ hơn rất nhiều so với việc lưu trữ dữ liệu quan hệ sử dụng SQL Database.

Blobs

Lựa chọn thứ 3 cho việc quản lý dữ liệu, Windows Azure Blobs, được thiết kế để lưu trữ dữ liệu nhị phân không cấu trúc. Giống như Tables, Blobs cung cấp giải pháp lưu trữ không đắt, và một blob có thể chứa hàng terabyte. Ví dụ một ứng dụng mà lưu trữ Video, hoặc sao lưu dữ liệu hoặc thông tin nhị phân có thể sử dụng Blobs cho đơn giản hoặc giá rẻ. Các ứng dụng Windows Azure cũng có thể sử dụng điểu khiển Windows Azure, cho phép các blobs cung cấp giải pháp lưu trữ liên tục (persistent storage) cho hệ thống file Windows được gắn trong một Windows Azure VM. Ứng dụng đó sẽ nhìn thấy file Windows nguyên gốc, nhưng thực tế nội dung của file được lưu dưới dạng một blob.

Bài tiếp theo: Hạ tầng mạng trong Windows Azure.