Экспорт (0) Печать
Развернуть все

Перенос данных в хранилище таблиц Windows Azure

Обновлено: Май 2014 г.

Хранилище таблиц Azure — это нереляционное структурированное хранилище с высокой степенью масштабируемости в облаке. Таблица Azure представляет собой набор сущностей (строк). Сущность может иметь до 255 свойства (столбцов), где каждое свойство имеет атрибуты имени, типа и значения. Каждая сущность в таблице имеет три зарезервированных свойства: PartitionKey, RowKey и Timestamp. Хранилище таблиц использует ключ секции для секционирования и распределения сущностей по узлам хранения Azure. Секция хранилища таблиц содержит сущности с одинаковым ключом секции. Ключ строки уникально определяет сущность в пределах секции. Отметка времени — системное свойство только для чтения, используемое для отслеживания изменений. В хранилище таблиц не требуется определение схемы сущностей в таблице. Таблица может содержать сущности с разным набором свойств. Подробные общие сведения о хранилище таблиц приведены на портале Windows Azure.

Автор: Шридхар Пеллуру (Sreedhar Pelluru)
Соавтор: Джеймс Подгорски (James Podgorski)
Рецензенты: Валерий Мизонов (Valery Mizonov), Кун Чен (Kun Cheng), Стив Ховард (Steve Howard)

При миграции приложений, использующих хранилище таблиц Azure, учитывайте следующие факторы.

  • Какой тип данных можно хранить в хранилище таблиц?

  • Каким образом перенесенное приложение может получить доступ к данным в хранилище таблиц?

  • Поддерживает ли хранилище высокий уровень доступности, масштабируемость, аварийное восстановление и требования безопасности перенесенного приложения?

  • Как передать существующие данные в хранилище таблиц?

Первый шаг процесса миграции заключается в определении того, подходит ли хранилище таблиц для хранения данных, которые использует локальное приложение. Хранилище таблиц оптимизировано для хранения данных, соответствующих следующим требованиям.

  • Данные структурированы и обычно хранятся в табличном формате.

  • Это нереляционные данные. Данные, которые планируется хранить в одной таблице, не связаны с данными в других таблицах. Хранилище таблиц Azure не поддерживает хранение реляционных данных с применением таких механизмов, как обеспечение ссылочной целостности данных в базах данных. Хранилище таблиц оптимизировано для хранения нереляционных структурированных данных.

  • Обработка данных на стороне сервера не требуется. Убедитесь в том, что для данных не требуется выполнение операций на стороне сервера, таких как соединения, хранимые процедуры, триггеры, поддерживающих реляционную базу данных. В хранилище таблиц не поддерживается обработка данных на стороне сервера. Поддерживаются базовые операции, такие как Insert, Update, Delete и Select, с простой фильтрацией на стороне сервера по свойствам PartitionKey и RowKey.

  • Данные в основном индексируются; поиск в них выполняется с использованием значения подстановки или ключа. Ключ секции определяет секцию, а ключ строки определяет уникальную строку в пределах секции. Ключ секции и ключ строки вместе уникально определяют сущность в таблице. После выяснения того, что хранилище таблиц хорошо подходит для хранения данных, оцените, какая часть может использоваться в качестве ключа секции для таблицы. См. раздел Проектирование масштабируемой стратегии секционирования для хранилища таблиц Windows Azure.

  • Данные могут храниться с использованием типов данных, поддерживаемых хранилищем таблиц. В хранилище таблиц поддерживаются следующие типы данных: String, Byte Array, GUID, DateTime, Int32, Int64, Double и Boolean.

  • Для данных не требуются межсекционные транзакции. Хранилище таблиц не поддерживает распределенные или межсекционные транзакции. Поддерживаются только транзакции групп сущностей. Поэтому важно выбрать правильный ключ секции и хранить взаимосвязанные данные в одной секции. Например, может понадобиться хранить сведения о клиенте и его заказах в одной секции, чтобы можно было одновременно обновлять данные по клиенту и заказам одной транзакцией, что обеспечивает целостность данных.

  • Размер данных может достигать порядка гигабайтов и терабайтов (необязательно). Максимальный размер таблицы Azure — 100 ТБ, это предел размера для хранилища Windows Azure (включая таблицы, большие двоичные объекты и очереди).

  • Данные, хранимые в одной строке, могут отличаться по структуре и типу от данных, хранимых в другой строке той же таблицы (необязательно). В хранилище таблиц Windows Azure не требуется определять фиксированную схему для строк или сущностей. Таким образом, в одной таблице можно хранить различные типы данных. Например, можно хранить сведения о заказе в одной строке и информацию о клиенте в другой строке той же таблицы.

В хранилище таблиц размещаются структурированные данные, так же как и в базе данных SQL Windows Azure. Поэтому при миграции приложений с локальной платформы на платформу Windows Azure часто возникает вопрос, использовать хранилище таблиц или базу данных SQL. Главное различие между базой данных SQL и хранилищем таблиц таково: база данных SQL Database является системой управления реляционными базами данных, предоставляющей функции обработки данных в виде соединений, представлений и хранимых процедур. В свою же очередь хранилище таблиц Windows Azure не является реляционным хранилищем данных и не предоставляет средств обработки данных, которые поддерживает база данных SQL.

Если приложение хранит и извлекает большие наборы данных, но ему не требуются функции обработки данных, то хранилище таблиц Windows Azure является лучшим выбором. Если приложению требуется выполнять обработку больших наборов данных, реляционных по своей природе, то лучше выбрать базу данных SQL. Также перед совершением выбора между базой данных SQL и хранилищем таблиц Azure следует рассмотреть несколько других факторов. В таблице темы Общие сведения о службах управления данными в Windows Azure приведено более подробное сравнительное описание указанных методов хранения.

Клиентские приложения могут осуществлять доступ к хранилищу таблиц Windows Azure посредством HTTP API-интерфейса REST независимо от языка программирования и операционной системы. К хранилищу таблиц можно получить доступ посредством клиентских библиотек, разработанных для определенных ОС и языков программирования. Есть библиотеки для .NET, Node.js, Java и PHP, которые доступны для загрузки в центре разработчиков Windows Azure. Например, клиентская библиотека хранилища .NET обеспечивает строго типизированные оболочки .NET вокруг API-интерфейса REST для облегчения работы разработчиков .NET.

Если существующее локальное приложение использует структурированные, но не реляционные данные и планируется использовать хранилище таблиц для хранения этих данных на платформе Windows Azure, нужно переписать часть кода, который обращается к данным с помощью клиентской библиотеки хранилища.

При хранении данных в хранилище таблиц Azure можно автоматически пользоваться несколькими важными преимуществами, такими как следующие:

  • Масштабируемость: система хранения Windows Azure автоматически распределяет секции по всем узлам хранения на основе шаблонов секций. Например, если к определенным секциям имеется много обращений, то система автоматически распределит их на отдельные узлы хранения, таким образом нагрузка распределится на несколько серверов.

  • Высокий уровень доступности, устойчивость к сбоям: таблицы в Windows Azure хранятся в трех реплицированных копиях в одном центре обработки данных, что обеспечивает устойчивость к сбоям оборудования. Независимо от используемой службы хранилища данные реплицируются на разные домены ошибок, что увеличивает степень доступности данных.

  • Аварийное восстановление: таблицы Windows Azure также географически реплицируются между двумя центрами обработки данных на одном континенте, обеспечивая таким образом дополнительную долговечность данных в случае серьезной аварии.

  • Безопасность: каждый запрос, выполняемый к службам хранения Windows Azure, должен пройти проверку подлинности, кроме случаев анонимного запроса к ресурсу общедоступного контейнера. Дополнительные сведения см. в разделе Аутентификация доступа к учетной записи хранилища.

  • Доступ к данным независимо от клиента и места: доступ к хранилищу таблиц осуществляется с помощью API-интерфейса REST по HTTP(S)-протоколу. Таким образом, любое клиентские приложение, выполняемое на любой ОС, может обращаться к хранилищу таблиц посредством REST.

После перепроектирования приложения для использования преимуществ нереляционного хранилища таблиц с высокой степенью масштабируемости может потребоваться перенести существующие данных из файловой системы или базы данных SQL Server в хранилище таблиц. Для этого можно написать собственный код с использованием HTTP(S) API-интерфейса REST или клиентской библиотеки .NET либо использовать один из следующих инструментов:

Показ:
© 2014 Microsoft