Windows Azure Table - программирование
Базовые операции таблиц и сущностей
- создание;
- извлечение с применением фильтров;
- обновление (только сущности);
- удаление;
- транзакции над группами сущностей, находящимися в одной таблице и секции;
Таблица интерфейсов программирования приложений, поддерживаемых таблицами и сущностями (источник http://msdn.microsoft.com/ru-ru/library/ee872426.aspx)
Расширенные операции над таблицами и сущностями:
- разбиение на страницы;
- обработка конфликтов параллельных обновлений.
Контроль версий
Для обеспечения контроля версия для всех решений Windows Azure Storage был введен HTTP-заголовок "x-ms-version". Все изменения API хранилища регистрируются как версии с помощью этого заголовка. Это обеспечивает возможность выполнять предыдущие версии команд и при этом расширять возможности существующих команд и вводить новые.
Заголовок "x-ms-version" должен задаваться для всех запросов к Windows Azure Storage . При поступлении анонимного запросе без указания версии система хранения выполнит самую старую из поддерживаемых версию этой команды.
Класс сущностей
Схема таблицы описывается как C#-класс. Такую модель использует ADO.NET Data Services . Схема известна только клиентскому приложению и упрощает доступ к данным. Сервер схему не применяет.
Для примера рассмотрим работу с таблицей контактов - Contact .
Рассмотрим описание сущностей Contact , хранящихся в таблице Contacts . Каждая сущность содержит следующие данные:
- Группа контактов - Group ;
- Имя контакта - NameOf ;
- Дату создания контакта - DateOf ;
- Адрес электронной почты - Email ;
- Комментарии - Comment.
Для данной таблицы "Contacts" в качестве ключа секции используется Group, а в качестве ключа строки - NameOf. PartitionKey и RowKey – ключи таблицы Contacts, они объявляются посредством атрибута класса DataServiceKey (Ключ сервиса данных). Кроме ключей, в качестве свойств объявлены характерные для данного вида сущностей атрибуты. Все свойства имеют открытые ( public ) методы считывания и присвоения значения и хранятся в таблице Windows Azure Table . Итак, в примере ниже:
public class Contacts { public string PartitionKey { get; set; } public string RowKey { get; set; } public datetime DateOf { get; set; } public String Email { get; set; } public String Comments { get; set; } }
Создание таблиц
Далее рассмотрим, как создать таблицу Contacts для учетной записи хранилища. Создание таблицы аналогично созданию сущности в основной таблице "Tables" . Эта основная таблица определена для каждой учетной записи хранилища, и имя каждой таблицы, используемой учетной записью хранения, должно быть зарегистрировано в основной таблице. Описание класса основной таблицы приведено ниже, где свойство TableName (Имя таблицы) представляет имя создаваемой таблицы.
public class TableStorageTable { public string TableName { get; set; } }
Фактическое создание таблицы происходит следующим образом:
// Uri сервиса: "http://<Account>.table.core.windows.net/" DataServiceContext context = new DataServiceContext(serviceUri); TableStorageTable table = new TableStorageTable("Contacts "); // Создаем новую таблицу, добавляя новую сущность // в основную таблицу "Tables" context.AddObject("Tables", table); // результатом вызова SaveChanges является отклик сервера DataServiceResponse response = context.SaveChanges();
serviceUri – это uri сервиса таблицы, http://<Здесь указывается имя учетной записи>.table.core.windows.net/. DataServiceContext (Контекст сервиса данных) – один из основных классов сервиса данных ADO.NET , представляющий контекст времени выполнения для сервиса. Он обеспечивает API для вставки, обновления, удаления и запроса сущностей с помощью либо LINQ , либо RESTful URI и сохраняет состояние на стороне клиента. Более подробный пример работы с Windows Azure Table , начиная от создания приложения, будет рассмотрен в рамках соответствующего практического занятия.
СПИСОК МАТЕРИАЛОВ ДЛЯ САМОСТОЯТЕЛЬНОГО ИЗУЧЕНИЯ
Программирование Windows Azure Table
- http://windowsclient.net/blogs/anshulee/archive/2010/05/27/best-practices-for-ado-net-dataservices-when-using-azure-table-storage.aspx
- http://mscerts.net/programming/programming%20windows%20azure%20%20%20table%20operations%20-%20understanding%20pagination.aspx
- http://mscerts.net/programming/programming%20windows%20azure%20%20%20table%20operations%20-%20querying%20data.aspx