Dữ liệu thể hiện ở nhiều hình dạng, kích cỡ và được sử dụng cho rất nhiều mục đích khác nhau. Nhiều doanh nghiệp, tổ chức lưu trữ dữ liệu ở các cơ sở dữ liệu (CSDL) quan hệ. Tuy nhiên, mô hình quan hệ không phải lúc nào cũng là mô hình phù hợp nhất. Cấu trúc của dữ liệu không phải lúc nào cũng dễ dàng được mô hình hóa và tổ chức thành các bảng quan hệ, chẳng hạn như dữ liệu chứa video, âm thanh, thông tin mang tính tạm thời, văn bản tự do, thông tin mã hóa hay các loại dữ liệu khác không có tính quan hệ. Thêm vào đó, các yêu cầu xử lý dữ liệu có thể sẽ không phù hợp trong trường hợp bạn cần chuyển các dữ liệu đó thành dạng quan hệ. Trong những trường hợp này, bạn nên lưu trữ dữ liệu trong kho dữ liệu phi quan hệ ở dạng dữ liệu gốc, cho phép nhanh chóng lưu trữ và tiếp cận để lấy dữ liệu. Có hai cách phổ biến để lưu trữ dữ liệu phi quan hệ là kho Azure Table Storage và kho Azure Blob Storage.
Các nội dung chính
Cơ sở dữ liệu phi quan hệ Azure Table Storage
Azure Table Storage là gì?
Azure Table Storage thực thi mô hình NoSQL key-value. Trong mô hình này, dữ liệu cho từng đối tượng sẽ được lưu như một set các trường, và đối tượng đó được định danh là một unique key (khóa duy nhất).

Azure Table Storage giống như một kho chứa các key-value lưu trữ trên đám mây (cloud). Bạn sẽ tạo ra một bảng bằng tài khoản Azure storage.
Trong một bảng Azure Table Storage, các đối tượng được lưu trữ thành từng dòng, và các trường là các cột. Tuy nhiên, bạn đừng để mình bị nhầm lẫn giữa các thuật ngữ này: bảng trong Azure Table Storage không giống như bảng trong CSDL quan hệ. Một bảng Azure sẽ cho phép bạn lưu trữ dữ liệu bán cấu trúc. Mọi dòng trong bảng đều phải có khóa, trong khi các cột có thể thay đổi. Khác với CSDL quan hệ truyền thống, các bảng trong Azure Table Storage không có quan hệ, quá trình lưu trữ, index thứ hai hay khóa ngoại. Dữ liệu thường sẽ được denormalized (tạm dịch: phi chuẩn hóa), mỗi dòng chứa toàn bộ các giá trị cho một thực thể có tính logic. Ví dụ, bảng lưu trữ thông tin về khách hàng sẽ lưu trữ họ, tên, một hoặc nhiều số điện thoại, một hoặc nhiều địa chỉ cho mỗi khách hàng. Số lượng các trường của một dòng có thể khác nhau, tùy thuộc vào người đó có bao nhiêu số điện thoại và địa chỉ. Trong CSDL quan hệ, loại thông tin này sẽ được chia thành nhiều dòng trong nhiều bảng. Trong ví dụ này, sử dụng Azure Table Storage sẽ giúp truy cập vào chi tiết từng khách hàng một cách dễ dàng hơn bởi vì dữ liệu cho một khách hàng chỉ nằm trên một dòng duy nhất mà không cần phải join các bảng thông qua các quan hệ như bạn vẫn làm với CSDL quan hệ.

Để giúp người dùng truy cập nhanh hơn, Azure Table Storage chia bảng thành các phần – partitions. Partitioning là cơ chế nhóm các dòng liên quan lại với nhau dựa trên một thuộc tính chung, hay gọi là partition key (khóa thành phần). Các dòng có cùng partition key sẽ được lưu cùng nhau. Partitioning không chỉ giúp tổ chức giữ liệu mà còn nâng cao hiệu năng.
- Các partitions là độc lập lẫn nhau, và có thể co dãn khi các dòng mới được thêm vào hoặc xóa đi khỏi partition đó. Một bảng có thể có bất kỳ bao nhiêu partitions.
- Khi bạn tìm kiếm dữ liệu, bạn có thể thêm partition key trong điều kiện tìm. Việc này sẽ giúp bạn giảm bớt khối lượng dữ liệu cần phân tích, nâng cao hiệu suất bằng các giảm bớt khối lượng của I/O (reads and writes) cần thiết để tìm thấy dữ liệu.
Khóa trong bảng Azure Table Storage bao gồm hai thành phần: partition key xác định partition chứa dòng đó (như đã nói ở trên), và row key duy nhất cho từng dòng ở trong cùng một partition. Các đối tượng ở trong cùng một partition sẽ được lưu trữ theo thứ tự của row key. Nếu một ứng dụng thêm 1 dòng vào bảng, Azure sẽ đảm bảo rằng dòng đó được đặt vào đúng vị trí ở trong bảng. Ở ví dụ dưới đây, trong một viễn cảnh của IoT (Internet of Things), row key là giá trị thời gian:

Mô hình này cho phép một ứng dụng có thể nhanh chóng thực hiện Point queries (truy vấn điểm) để tìm ra một dòng nhất định, và Range queries (truy vấn đoạn) để tìm ra một khối các dòng trong một partition.
Trong truy vấn điểm, khi một ứng dụng lấy ra một dòng, partition key sẽ cho phép Azure nhanh chóng tìm ra partition chính xác, và row key cho phép Azure tìm ra dòng chính xác ở trong partition đó. Bạn có thể có hàng trăm triệu dòng, nhưng nếu bạn đã định nghĩa partition key và row key một cách cẩn thận, thì việc lấy dữ liệu sẽ được thực hiện rất nhanh chóng. Partition key và row key sẽ định nghĩa index theo cụm dữ liệu một cách cực kỳ hiệu quả.

Trong truy vấn đoạn, ứng dụng sẽ tìm ra một nhóm các dòng trong một partition, xác định điểm bắt đầu và kết thúc của nhóm các row key. Loại truy vấn này cũng rất nhanh chóng nếu như bạn định nghĩa row key theo yêu cầu truy vấn mà ứng dụng đang thực hiện.

Các cột trong bảng có thể chứa dữ liệu dạng số, chuỗi, số nhị phân lên đến 64 KB. Một bảng có thể có đến 252 cột, không tính cột partition key và row key. Mỗi dòng có thể chứa đến 1MB dữ liệu.
Các use-cases và lợi ích của việc sử dụng Azure Table Storage
Các bảng trong Azure Table Storage không có schema. Bạn có thể dễ dàng đưa dữ liệu vào theo yêu cầu của ứng dụng. Bạn có thể sử dụng bảng để lưu trữ các bộ dữ liệu rất linh hoạt như dữ liệu từ ứng dụng web, thông tin thiết bị hay các loại metadata khác mà bạn yêu cầu. Quan trọng nhất là bạn phải chọn partition key và row key một cách cẩn thận.
Các ưu điểm của bảng Azure Table Storage so với các phương pháp lưu trữ dữ liệu khác bao gồm:
- Dễ dàng mở rộng quy mô. Azure Table Storage có thể thêm dữ liệu vào một bảng trống hay một bảng chứa cả tỷ dòng trong cùng một thời khoảng thời gian. Tài khoản Azure storage có thể lưu đến 500 TB dữ liệu.
- Một bảng có thể lưu dữ liệu bán cấu trúc
- Không cần phải tạo và duy trì các quan hệ phức tạp như CSDL quan hệ được chuẩn hóa
- Nhanh chóng insert (chèn) dòng
- Nhanh chóng truy xuất dữ liệu nếu được chỉ rõ partition key và row key trong điều kiện truy vấn.
Tuy nhiên cách lưu trữ dữ liệu này cũng có những nhược điểm như sau:
- Không đảm bảo việc cập nhật chéo dữ liệu giữa các dòng.
- Không có tính toàn vẹn: bất kỳ quan hệ nào giữa các dòng đều cần phải được duy trì ở bên ngoài phạm vi bảng.
- Khó lọc và sắp xếp dữ liệu không có khóa. Truy vấn mà tìm các trường không có khóa có thể sẽ trả về một bảng sai.
Azure Table Storage phù hợp với:
- Lưu trữ hàng TB dữ liệu có cấu trúc từ các ứng dụng web. Các ví dụ chẳng hạn như danh mục sản phẩm trong ứng dụng eCommerce (thương mại điện tử), và thông tin khách hàng mà dữ liệu có thể được xác định và sắp xếp bởi một composite key (khóa tổng hợp). Trong trường hợp danh mục sản phẩm, partition key có thể là nhóm ngành hàng (product category), và row key xác định chính xác sản phẩm ở trong nhóm sản phẩm đó.
- Lưu trữ các bộ dữ liệu không yêu cầu các join, khóa ngoại hay quá trình lưu trữ phức tạp, và có thể được phi chuẩn hóa để truy cập được nhanh chóng. Trong một hệ thống IoT, bạn có thể sẽ sử dụng Azure Table Storage để lưu trữ dữ liệu trong thiết bị cảm biến. Mỗi thiết bị sẽ có partition riêng, và dữ liệu có thể được sắp xếp theo thời gian mà các kết quả đo lường được ghi lại.
- Lưu trữ các bộ dữ liệu không yêu cầu kết nối phức tạp, khóa nước ngoài hoặc thủ tục được lưu trữ và có thể được phi chuẩn hóa để truy cập nhanh. Trong hệ thống IoT, bạn có thể sử dụng Azure Table Storage để thu thập dữ liệu cảm biến thiết bị. Mỗi thiết bị có thể có phân vùng riêng và dữ liệu có thể được sắp xếp theo ngày và thời gian mỗi phép đo được chụp.
- Ghi lại dữ liệu của các sự kiện và quản lý chúng. Thu thập dữ liệu ghi nhật ký sự kiện và giám sát hiệu suất. Nhật ký sự kiện và thông tin hiệu suất thường chứa dữ liệu được cấu trúc theo loại sự kiện hoặc thước đo hiệu suất được ghi lại. Dữ liệu có thể được phân vùng theo loại đo lường sự kiện hoặc hiệu suất và được sắp xếp theo ngày và thời gian nó được ghi lại. Ngoài ra, bạn có thể phân vùng dữ liệu theo ngày, nếu bạn cần phân tích một loạt các sự kiện có trật tự và các biện pháp hiệu suất theo thứ tự thời gian. Nếu bạn muốn phân tích dữ liệu theo loại và theo thời gian, hãy suy nghĩ về việc lưu trữ dữ liệu hai lần: một lần theo nhóm, một lần theo thời gian. Nếu bạn muốn phân tích dữ liệu theo loại và ngày /giờ, hãy xem xét lưu trữ dữ liệu hai lần, phân vùng theo loại và một lần nữa theo ngày. Viết dữ liệu nhanh và dữ liệu là tĩnh một khi nó đã được ghi lại.
Azure Table Storage được thiết kế để hỗ trợ dữ liệu khối lượng lớn, lên đến vài trăm TB. Khi bạn thêm dòng vào bảng, Azure Table sẽ tự động phân bổ dòng đó đến partition tương ứng. Bạn không cần thực hiện thêm bất kỳ thao tác nào khác.
Azure Table Storage cung cấp đảm bảo tính khả dụng cao trong một khu vực duy nhất. Dữ liệu cho mỗi bảng được sao chép ba lần trong một khu vực Azure. Để tăng tính khả dụng, nhưng với chi phí bổ sung, bạn có thể tạo bảng trong bộ nhớ dự phòng địa lý. Trong trường hợp này, dữ liệu cho mỗi bảng được sao chép thêm ba lần nữa ở một khu vực khác cách đó vài trăm dặm. Nếu một bản sao trong khu vực địa phương không khả dụng, Azure sẽ chuyển sang bản sao hoạt động một cách minh bạch trong khi bản sao thất bại được phục hồi. Nếu toàn bộ khu vực bị mất điện, bảng của bạn an toàn ở vùng sâu vùng xa và bạn có thể nhanh chóng chuyển đổi ứng dụng của mình để kết nối với khu vực xa xôi đó.
Azure Table Storage giúp bảo vệ dữ liệu của bạn. Bạn có thể cấu hình bảo mật và kiểm soát truy cập dựa trên vai trò để đảm bảo rằng chỉ những người hoặc ứng dụng cần xem dữ liệu của bạn mới thực sự có thể truy xuất dữ liệu đó.
Tạo và xem một bảng bằng cổng Azure portal
Cách dễ nhất để tạo một bảng trong Azure Table Storage là sử dụng cổng Azure portal. Thực hiện các bước sau:
- Đăng nhập vào cổng Azure bằng tài khoản Azure của bạn
- Ở trang chủ cổng Azure, chọn +Create a resource.

- Trên trang New, chọn Storage account – blob, file, table, queue

- Trên trang Create storage account nhập vào các thông tin chi tiết như sau, và chọn Review + create.
Field | Value |
Subscription | Select your Azure subscription |
Resource group | Select Create new, and specify the name of a new Azure resource group. Use a name of your choice, such as mystoragegroup |
Storage account name | Enter a name of your choice for the storage account. The name must be unique though |
Location | Select your nearest location |
Performance | Standard |
Account kind | StorageV2 (general purpose v2) |
Replication | Read-access geo-redundant storage (RA-GRS) |
Access tier | Hot |
- Trên trang validation, chọn Create, và chờ cho đến khi tài khoản lưu trữ mới được thiết đặt.
- Khi trang Your deployment is complete xuất hiện, chọn Go to resource.

- Trên trang Overview của tài khoản lưu trữ mới tạo, chọn Tables.

- Trên trang Tables, chọn + Table.

- Trong hộp Add table, nhập tên bảng là testtable sau đó chọn OK.
- Sau khi tạo bảng, chọn Storage Explorer.
- Trên trang Storage Explorer, mở rộng thẻ Tables, và chọn testtable. Chọn Add để thêm entity mới vào bảng.
NOTE: Trong Storage Explorer, các dòng được gọi là các entities.
- Trong hộp Add Entity nhập giá trị của bảng vào PartitionKey và RowKey sau đó chọn Add Property. Thêm một trường String (văn bản) tên là Name và đặt giá trị là tên bạn. Chọn Add Property và thêm Double (số) tên là Age, sau đó đặt giá trị là tuổi của bạn. Chọn Insert để lưu.
- Hãy chắc chắn rằng rằng thực thể mới đã được tạo. Thực thể phải chứa các giá trị bạn đã chỉ định, cùng với dấu thời gian chứa ngày và thời gian mà thực thể được tạo ra.
- Nếu thời gian cho phép, hãy thử nghiệm với việc tạo ra các thực thể bổ sung. Không phải tất cả các thực thể phải có cùng một thuộc tính. Bạn có thể sử dụng hàm Edit để sửa đổi các giá trị trong thực thể và thêm hoặc loại bỏ thuộc tính. Hàm Query cho phép bạn tìm các thực thể có thuộc tính với một tập hợp các giá trị được chỉ định.
Cơ sở dữ liệu phi quan hệ Azure Blob Storage
Azure Blob Storage là gì?
Azure Blob storage là một dịch vụ cho phép bạn lưu trữ một lượng lớn dữ liệu phi cấu trúc, hoặc blobs, trong đám mây. Giống như bộ nhớ Azure Table, bạn tạo các blob bằng tài khoản lưu trữ Azure.
Lưu ý: Thuật ngữ blob là viết tắt cho Binary Large Object.
Azure hiện đang hỗ trợ ba loại blob khác nhau:
- Block blobs: Một khối blob (block blobs) được xử lý như một tập hợp các khối. Mỗi khối có thể khác nhau về kích thước, lên đến 100 MB. Một blob khối có thể chứa tới 50.000 khối, cho kích thước tối đa hơn 4,7 TB. Khối này là lượng dữ liệu nhỏ nhất có thể được đọc hoặc viết như một đơn vị riêng lẻ. Các blobs khối được sử dụng tốt nhất để lưu trữ các đối tượng rời rạc, lớn, nhị phân thay đổi không thường xuyên.
- Page blobs: Một blob trang (page blob) được tổ chức như một bộ sưu tập các trang 512 byte kích thước cố định. Một blob trang được tối ưu hóa để hỗ trợ các hoạt động đọc và ghi ngẫu nhiên; bạn có thể lấy và lưu trữ dữ liệu cho một trang duy nhất nếu cần thiết. Một blob trang có thể chứa tới 8 TB dữ liệu. Azure sử dụng các blobs trang để thực hiện lưu trữ đĩa ảo cho các máy ảo.
- Append blobs: Một append blob là một blob khối được tối ưu hóa để hỗ trợ các hoạt động ghép nối (append). Bạn chỉ có thể thêm các khối vào cuối một append blob; cập nhật hoặc xóa các khối hiện có không được hỗ trợ. Mỗi khối có thể khác nhau về kích thước, lên đến 4 MB. Kích thước tối đa của một append blob chỉ hơn 195 GB.
Bên trong tài khoản lưu trữ Azure, bạn tạo các blob bên trong container. Một container cung cấp một cách thuận tiện để nhóm các blob liên quan với nhau và bạn có thể sắp xếp các blob trong một hệ thống phân cấp các thư mục, tương tự như các tệp trong hệ thống tệp trên đĩa. Bạn kiểm soát những người có thể đọc và viết các blob bên trong một container ở cấp độ container.

Lưu trữ Blob cung cấp ba tầng truy cập, giúp cân bằng độ trễ truy cập và chi phí lưu trữ:
- Tầng Hot là mặc định. Bạn sử dụng tầng này cho các blob được truy cập thường xuyên. Dữ liệu blob được lưu trữ trên phương tiện hiệu suất cao.
- Tầng Cool. Tầng này có hiệu suất thấp hơn và phải chịu phí lưu trữ giảm so với tầng Hot. Sử dụng bậc Cool cho dữ liệu được truy cập không thường xuyên. Thông thường, các blob mới được tạo ra được truy cập thường xuyên ban đầu, nhưng ít hơn khi thời gian trôi qua. Trong những tình huống này, bạn có thể tạo blob trong tầng Hot, nhưng di chuyển nó sang tầng Cool sau. Bạn có thể di chuyển một blob tạo thành tầng Cool trở lại tầng Nóng.
- Tầng Archive. Tầng này cung cấp chi phí lưu trữ thấp nhất, nhưng với độ trễ tăng lên. Tầng Archive dành cho dữ liệu lịch sử không bị mất, nhưng chỉ được yêu cầu hiếm khi. Các vết bẩn trong tầng Archive được lưu trữ hiệu quả ở trạng thái ngoại tuyến. Độ trễ đọc điển hình cho các tầng Hot và Cool là vài mili giây, nhưng đối với tầng Archive, có thể mất hàng giờ để dữ liệu có sẵn. Để truy xuất một blob từ tầng Archive, bạn phải thay đổi tầng truy nhập thành Hot hoặc Cool. Blob sau đó sẽ được khởi động (hydrate). Bạn chỉ có thể đọc blob khi quá trình này hoàn tất.
Bạn có thể tạo chính sách quản lý vòng đời cho các blob trong tài khoản lưu trữ. Chính sách quản lý vòng đời có thể tự động di chuyển một blob từ Hot sang Cool, và sau đó đến tầng Archive, vì nó lâu dần và được sử dụng ít thường xuyên hơn (chính sách dựa trên số ngày kể từ khi sửa đổi). Chính sách quản lý vòng đời cũng có thể sắp xếp để xóa các blob lỗi thời.
Các use cases and và lợi ích khi sử dụng Azure Blob Storage
Các ứng dụng phổ biến của Azure Blob Storage bao gồm:
- Phục vụ hình ảnh hoặc tài liệu trực tiếp đến trình duyệt, dưới dạng trang web tĩnh.
- Lưu trữ tệp để truy nhập phân tán
- Phát trực tuyến video và âm thanh
- Lưu trữ dữ liệu để sao lưu và khôi phục, khắc phục thảm họa và lưu trữ
- Lưu trữ dữ liệu để phân tích bởi dịch vụ tại chỗ hoặc Azure-hosted
NOTE: Azure Blob storage cũng được sử dụng làm cơ sở cho bộ nhớ Azure Data Lake. Bạn có thể sử dụng bộ nhớ Azure Data Lake để thực hiện phân tích dữ liệu lớn.
Để đảm bảo tính khả dụng, bộ nhớ Azure Blob cung cấp dự phòng. Blobs luôn được sao chép ba lần trong khu vực mà bạn đã tạo tài khoản của mình, nhưng bạn cũng có thể chọn dự phòng địa lý, sao chép dữ liệu của bạn ở khu vực thứ hai (với chi phí bổ sung).
Các tính năng khác có sẵn với bộ nhớ Azure Blob bao gồm:
- Versioning: Bạn có thể duy trì và khôi phục các phiên bản trước đó của một blob.
- Soft delete: Tính năng này cho phép bạn khôi phục một blob đã được loại bỏ hoặc ghi đè, do tai nạn hoặc cách khác.
- Snapshots: Ảnh chụp nhanh là một phiên bản chỉ đọc của một blob tại một thời điểm cụ thể trong thời gian.
- Change Feed: Nguồn cấp dữ liệu thay đổi cho một blob cung cấp một bản ghi có trật tự, chỉ đọc, về các bản cập nhật được thực hiện cho một blob. Bạn có thể sử dụng nguồn cấp dữ liệu thay đổi để theo dõi những thay đổi này và thực hiện các thao tác như:
- Cập nhật chỉ mục phụ, đồng bộ hóa với bộ nhớ cache, công cụ tìm kiếm hoặc bất kỳ kịch bản quản lý nội dung nào khác.
- Trích xuất thông tin chi tiết và số liệu phân tích kinh doanh, dựa trên những thay đổi xảy ra với các đối tượng của bạn, theo cách phát trực tuyến hoặc chế độ theo từng đợt.
- Lưu trữ, kiểm toán và phân tích các thay đổi đối với đối tượng của bạn, trong bất kỳ khoảng thời gian nào, để bảo mật, tuân thủ hoặc thông minh cho quản lý dữ liệu doanh nghiệp.
- Xây dựng các giải pháp để sao lưu, phản chiếu hoặc sao chép trạng thái đối tượng trong tài khoản của bạn để quản lý hoặc tuân thủ thảm họa.
- Xây dựng các đường ống ứng dụng được kết nối phản ứng với các sự kiện thay đổi hoặc lên lịch thực hiện dựa trên các đối tượng đã tạo hoặc thay đổi.
Tạo và xem một khối blob bằng cổng thông tin Azure
Bạn có thể tạo các blob khối bằng cách sử dụng cổng thông tin Azure. Hãy nhớ rằng các blob được lưu trữ trong các thùng chứa và bạn tạo một container bằng tài khoản lưu trữ. Các bước sau đây giả sử bạn đã tạo tài khoản lưu trữ được mô tả trong đơn vị trước đó.
- Trên trang chủ, chọn Storage accounts.
- Trên trang Storage accounts chọn nơi lưu trữ mà bạn đã lưu ở buổi trước
- Trên trang Overview của tài khoản lưu trữ, chọn Storage Explorer.
- Trên trang Storage Explorer click chuột phải vào BLOB CONTAINERS, rồi chọn Create blob container.
- Trên hộp thoại New Container đặt tên cho container, chấp thuận các cấp độ truy cập công khai được cài mặc định, sau đó chọn Create.
- Trong cửa sổ Storage Explorer mở rộng BLOB CONTAINERS,và chọn blob container.
- Trong cửa số blob, chọn Upload.
- Trong hộp thoại Upload blob, sử dụng nút files để chọn file trong máy tính của bạn và chọn Upload
- Sau khi tải lên xong, đóng hộp thoại Upload blob.
Như vậy, chúng ta đã nắm được khái niệm, mục đích sử dụng và cách dùng của hai kho lưu trữ dữ liệu phi quan hệ: Azure Table Storage và Azure Blob Storage.
Bạn cũng có thể tìm hiểu lại về Cơ sở dữ liệu quan hệ tại đây