2010-11-16 21 views
10

Nhận ngoại lệ "Giá trị thuộc tính lớn hơn mức cho phép của Dịch vụ bảng" khi cố gắng chèn một bản ghi vào bộ nhớ bảng xanh.Nhận ngoại lệ - "Giá trị tài sản lớn hơn mức cho phép của Dịch vụ bảng", kích thước tối đa của hàng trong bảng lưu trữ azure

follwing là cấu trúc của tôi bảng, chuỗi PartitionKey, String RowKey, Id chuỗi, trang web chuỗi, tên chuỗi, byte [] Nội dung,
DateTime công createdtime

Và tôi đang cố gắng để tiết kiệm 83.755 byte array (82KB) trong trường nội dung và các trường khác tối đa 35 ký tự.

Bất cứ ai có thể vui lòng cho tôi biết kích thước tối đa của một hàng cho bảng lưu trữ Azure là gì?

Sau đây là url mà tôi đã giới thiệu .. có đề cập đến hàng có thể có tối đa 1MB. Nhưng tôi không vượt quá 100 KB.

http://blogs.msdn.com/b/jnak/archive/2010/01/06/walkthrough-windows-azure-table-storage-nov-2009-and-later.aspx

Cảm ơn,

Gopinath

Trả lời

12

Vâng, mỗi hàng có thể có đến 1MB. Tuy nhiên, mỗi thuộc tính mảng byte hoặc thuộc tính chuỗi được giới hạn ở 64K. Xem this MSDN reference để biết thông tin cụ thể về từng loại dữ liệu.

+0

Cảm ơn David Makogon. Sau đó, tôi sẽ tạo một kho lưu trữ blob, đặt nội dung của tôi ở đó và lưu trữ tham chiếu trong bảng lưu trữ của tôi. Có cách nào khác để giải quyết vấn đề này không? –

+0

Tôi nghĩ đó là ý tưởng đúng, vì các đốm màu có thể lớn hơn đáng kể (200GB cho các khối màu, 1TB cho các đốm màu trang), và cả blob và lưu trữ bảng đều có cùng một chi phí lưu trữ. Bạn có thể đặt tài liệu tham khảo của bạn hoặc trong lưu trữ bảng hoặc SQL Azure (sau này nếu bạn cần thêm khả năng truy vấn ngoài những gì Bảng lưu trữ cung cấp). –

+0

James, đó là cách tiếp cận tôi đã thực hiện. Tôi đã thêm logic để kiểm tra kích thước của văn bản, vì vậy tôi chỉ đặt nó vào một đốm màu khi nó quá lớn. Bằng cách đó bạn giảm số lượng giao dịch và tốc độ truy xuất dữ liệu khi có thể. –

5

Tôi khuyên bạn nên xem Lokad.Cloud for Azure khuôn khổ (Nguồn mở). Có một mã sản xuất thử nghiệm cho serializing các tổ chức lớn vào lưu trữ bảng với 960KB hạn (tách và quản lý tài sản được xử lý bởi khuôn khổ)

Dưới đây là cách sử dụng mẫu từ FatEntities wiki

// TODO: change your connection string here 
var providers = Standalone.CreateProviders(
    "DefaultEndpointsProtocol=https;AccountName=;AccountKey="); 

// 'books' is the name of the table 
var books = new CloudTable<Book>(providers.TableStorage, "books"); 

var potterBook = new Book 
    { Author = "J. K. Rowling", Title = "Harry Potter" }; 

var poemsBook = new Book 
    { Author = "John Keats", Title = "Complete Poems" }; 

// inserting (or updating record in Table Storage) 
books.Upsert(new[] 
    { 
     new CloudEntity<Book> { 
      PartitionKey = "UK", RowRey = "potter", Value = potterBook}, 
     new CloudEntity<Book> { 
      PartitionKey = "UK", RowRey = "poems", Value = poemsBook} 
    }); 

// reading from table 
foreach(var entity in books.Get()) 
{ 
    Console.WriteLine("{0} by {1} in partition '{2}' and rowkey '{3}'", 
     entity.Value.Title, entity.Value.Author, 
     entity.PartitionKey, entity.RowRey); 
} 

Console.WriteLine("Press enter to exit."); 
Console.ReadLine(); 
1

Tháng 2017, Azure đã giới thiệu Premium Table thực sự sử dụng Azure Cosmos DB (trước đây gọi là Azure DocumentDB) với Azure Table API.

Bảng Premium có cùng giới hạn 1MB cho mỗi thực thể (hàng), nhưng nó cho phép tối đa 1MB cho thuộc tính duy nhất (không giới hạn 64K).

Hơn nữa, nó cho phép số lượng không giới hạn tài sản (Azure Table: 255) và độ dài tên thuộc tính (Azure Table: 255) trong RU chuyên dụng. Đơn vị yêu cầu là đơn vị tiêu thụ tài nguyên cho Cosmos DB.

  • Ghi chú: cao cấp Bảng là khác nhau từ Premium Storage mà không hỗ trợ Bảng
Các vấn đề liên quan