Microsoft Azure - Tables
在这里,存储表并不意味着关系型数据库。Azure Storage 可以仅存储一个表,而无需任何外键或其他任何类型的关系。这些表具有高度可扩展性,非常适合处理大量数据。表可以存储和查询大量数据。关系型数据库可以使用 SQL Data Services 来存储,这是一个独立的服务。
服务的三个主要部分是 −
- Tables
- Entities
- Properties
例如,如果 Book 是一个 entity,它的 properties 将是 Id、Title、Publisher、Author 等。为一组 entities 创建表。可以有 252 个自定义 properties 和 3 个系统 properties。每个 entity 始终具有系统 properties,即 PartitionKey、RowKey 和 Timestamp。Timestamp 是系统生成的,但在将数据插入表时,您必须指定 PartitionKey 和 RowKey。下例将使之更清晰。表名和 property 名是区分大小写的,在创建表时应始终考虑这一点。
使用 PowerShell 管理表
步骤 1 − 下载并安装 Windows PowerShell,如教程前面所述。
步骤 2 − 右键单击 Windows PowerShell,选择“固定到任务栏”,将其固定到计算机的任务栏上。
步骤 3 − 选择“以管理员身份运行 ISE”。
创建表
步骤 1 − 复制以下命令并粘贴到屏幕中。将高亮显示的文本替换为您的账户信息。
步骤 2 − 登录您的账户。
$StorageAccountName = "mystorageaccount" $StorageAccountKey = "mystoragekey" $Ctx = New-AzureStorageContext $StorageAccountName - StorageAccountKey $StorageAccountKey
步骤 3 − 创建一个新表。
$tabName = "Mytablename" New-AzureStorageTable Name $tabName Context $Ctx
以下图像显示了一个名为 book 的表正在被创建。
您可以看到它返回了以下端点。
https://.table.core.windows.net/Book
类似地,您可以使用 PowerShell 中的预设命令检索、删除并向表中插入数据。
检索表
$tabName = "Book" Get-AzureStorageTable Name $tabName Context $Ctx
删除表
$tabName = "Book" Remove-AzureStorageTable Name $tabName Context $Ctx
向表中插入行
function Add-Entity() {
[CmdletBinding()]
param(
$table,
[String]$partitionKey,
[String]$rowKey,
[String]$title,
[Int]$id,
[String]$publisher,
[String]$author
)
$entity = New-Object -TypeName Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity
-ArgumentList $partitionKey, $rowKey
$entity.Properties.Add("Title", $title)
$entity.Properties.Add("ID", $id)
$entity.Properties.Add("Publisher", $publisher)
$entity.Properties.Add("Author", $author)
$result = $table.CloudTable.Execute(
[Microsoft.WindowsAzure.Storage.Table.TableOperation]
::Insert($entity))
}
$StorageAccountName = ""
$StorageAccountKey = Get-AzureStorageKey -StorageAccountName $StorageAccountName
$Ctx = New-AzureStorageContext $StorageAccountName - StorageAccountKey
$StorageAccountKey.Primary
$TableName = "Book"
$table = Get-AzureStorageTable Name $TableName -Context $Ctx -ErrorAction Ignore
#向表中添加多个实体。
Add-Entity -Table $table -PartitionKey Partition1 -RowKey Row1 -Title .Net -Id 1
-Publisher abc -Author abc
Add-Entity -Table $table -PartitionKey Partition2 -RowKey Row2 -Title JAVA -Id 2
-Publisher abc -Author abc
Add-Entity -Table $table -PartitionKey Partition3 -RowKey Row3 -Title PHP -Id 3
-Publisher xyz -Author xyz
Add-Entity -Table $table -PartitionKey Partition4 -RowKey Row4 -Title SQL -Id 4
-Publisher xyz -Author xyz
检索表数据
$StorageAccountName = ""
$StorageAccountKey = Get-AzureStorageKey - StorageAccountName $StorageAccountName
$Ctx = New-AzureStorageContext StorageAccountName $StorageAccountName -
StorageAccountKey $StorageAccountKey.Primary;
$TableName = "Book"
#获取表的引用。
$table = Get-AzureStorageTable Name $TableName -Context $Ctx
#创建表查询。
$query = New-Object Microsoft.WindowsAzure.Storage.Table.TableQuery
#定义要选择的列。
$list = New-Object System.Collections.Generic.List[string]
$list.Add("RowKey")
$list.Add("ID")
$list.Add("Title")
$list.Add("Publisher")
$list.Add("Author")
#设置查询详情。
$query.FilterString = "ID gt 0"
$query.SelectColumns = $list
$query.TakeCount = 20
#执行查询。
$entities = $table.CloudTable.ExecuteQuery($query)
#以表格格式显示实体属性。
$entities | Format-Table PartitionKey, RowKey, @{ Label = "Title";
Expression={$_.Properties["Title"].StringValue}}, @{ Label = "ID";
Expression={$_.Properties[ID].Int32Value}}, @{ Label = "Publisher";
Expression={$_.Properties[Publisher].StringValue}}, @{ Label = "Author";
Expression={$_.Properties[Author].StringValue}} -AutoSize
输出结果将如下图所示。
从表中删除行
$StorageAccountName = ""
$StorageAccountKey = Get-AzureStorageKey - StorageAccountName $StorageAccountName
$Ctx = New-AzureStorageContext StorageAccountName $StorageAccountName -
StorageAccountKey $StorageAccountKey.Primary
#检索表。
$TableName = "Book"
$table = Get-AzureStorageTable -Name $TableName -Context $Ctx -ErrorAction
Ignore
#如果表存在,则开始删除其实体。
if ($table -ne $null) {
#PartitionKey 和 RowKey 组合唯一标识表中的每个实体。
$tableResult = $table.CloudTable.Execute(
[Microsoft.WindowsAzure.Storage.Table.TableOperation]
::Retrieve(Partition1, "Row1"))
$entity = $tableResult.Result;
if ($entity -ne $null) {
$table.CloudTable.Execute(
[Microsoft.WindowsAzure.Storage.Table.TableOperation]
::Delete($entity))
}
}
上述脚本将从表中删除第一行,您可以看到我们在脚本中指定了 Partition1 和 Row1。删除行后,您可以通过运行检索行的脚本检查结果,您将看到第一行已被删除。
在运行这些命令时,请确保将 accountname 替换为您的账户名称,accountkey 替换为您的账户密钥。
使用 Azure Storage Explorer 管理 Table
步骤 1 − 登录您的 Azure 帐户并转到您的 storage account。
步骤 2 − 点击如下图紫色圆圈所示的 Storage explorer 链接。
步骤 3 − 从列表中选择 Azure Storage Explorer for Windows。这是一个免费工具,您可以下载并安装到您的计算机上。
步骤 4 − 在您的计算机上运行该程序,并点击顶部的 Add Account 按钮。
步骤 5 − 输入 Storage Account Name 和 Storage account Key,然后点击 Test Access。按钮如下图所示。
步骤 6 − 如果您的 storage 中已有任何 tables,您将在左侧面板的 Tables 下看到它们。点击它们即可查看行。
创建 Table
步骤 1 − 点击 New,并输入 table name,如下图所示。
向 Table 中插入 Row
步骤 1 − 点击 New。
步骤 2 − 输入 Field Name。
步骤 3 − 从下拉菜单中选择 data type 并输入 field value。
步骤 4 − 要查看创建的行,请点击左侧面板中的 table name。
Azure Storage Explorer 是一个非常基础且易用的界面,用于管理 tables。您可以使用此界面轻松创建、删除、上传和下载 tables。与在 Windows PowerShell 中编写冗长的脚本相比,这让开发人员的工作变得非常简单。