Azure Table cho phép các nhà phát triển mở rộng kích cỡ lưu trữ nên tới nhiều terabyte dữ liệu nếu cần thiết. Nó cho phép các bảng mở rộng đến hàng ngàn nút lưu trữ bằng cách phân phối các thực thể trong bảng bằng cách phân phối các entity trong table. Khi phân phối các entity, nó đảm bảo một tập hợp các entity luôn cùng nằm trên
Khoa Công Nghệ Thông Tin – Đại học Công nghệ Hà Nội Trang 56
một nút lưu trữ. Tất cả các thực thể (entity) có cùng khóa phân vùng (partition key) sẽ chia sẻ trong cùng một phân vùng. Mỗi một phân vùng được lưu trữ tại các nút riêng rẽ.
Hệ thống sẽ tự động thực hiện cân bằng phân vùng, quá trình này được dựa trên kích cỡ, lưu lượng và các nhân tố khác. Quá trình điều chỉnh, thiết lập các phân vùng được thực hiện bằng cách chọn giá trị thích hợp cho PartitionKey trong mỗi thực thể.
Hình số 2.16: Minh họa sự phân vùng
Quá trình thực hiện phân vùng cuả Azure table làm tăng tính hiệu quả của quá trình truy vấn dữ liệu lưu trữ trong Azure table. Trong quá trình truy vấn, các PartitionKey được sử dụng như một điều kiện lọc truy vấn. Sử dụng ParititionKey trong bộ lọc truy vấn hạn chế thực thi truy vấn đến một phân vùng đơn hoặc thành phần con của phân cùng (tùy thuộc vào điều kiện sử dụng), do đó cải thiện được hiệu suất truy vấn.
Nếu PartitionKey không phải là một phần của truy vấn, thì truy vấn phải đi qua tất cả các phân vùng trong bảng để tìm ra thực thể cần tìm, điều này thực sự không mang lại hiệu quả.
Ví dụ dữ liệu được lưu trữ trong bảng Superhero như sau [25]:
PartitionKey RowKey
(Character name)
Property 3 (Superpower)
Property N
Marvel Cyclops Heat Ray The X-Men (#1) Marvel Wolverine Healing + Adamantium
Skeleton
The Incredible Hulk (#180)
DC Superman Flight, super-strength, and so on
Action Comics (#1)
DC Batman None Detective Comics (#2) DC Lex Luthor None Action Comics (#24) DC Flash Super speed Flash Comics (#1)
Khoa Công Nghệ Thông Tin – Đại học Công nghệ Hà Nội Trang 57
Câu lệnh truy vấn thứ nhất.
PartitionKey partition = "DC" and RowKey="Flash" Câu lệnh truy vấn thứ hai.
PartitionKey="DC" and SuperPower=None
Câu lệnh truy vấn thứ ba.
SuperPower=None
Với câu lệnh thứ nhất thì quá trình truy vấn được thực hiện tốc độ nhanh nhất vì
partitionkey và rowkey là hai thuộc tính khóa. Câu lệnh thứ hai chỉ có partitionkey là được xác định, câu lệnh truy vấn này được thực hiện tốc độ cao tuy nhiên không thể nhanh bằng câu lệnh truy vấn thứ nhất. Câu lệnh truy vấn thứ ba là thực hiện chậm nhất trong loại câu lênh truy vấn đã đề cập.