.NET ヘルプ

Azureテーブル(開発者のための仕組み)

公開済み 2024年10月24日
共有:

クラウドコンピューティングの広大なランドスケープにおいて、データストレージは最新のアプリケーションのアーキテクチャとスケーラビリティを形成する上で極めて重要な役割を果たしています。 Azure テーブルMicrosoft Azureが提供するフルマネージドNoSQLデータストアであるStorageは、クラウドに構造化データを保存するための汎用的なソリューションを開発者に提供します。 Azure Table Storageの機能、使用例、利点を探る旅に出かけましょう。

Azureテーブルストレージを理解する

Azure Table Storageは、構造化データのスキーマレスストレージを提供するクラウドベースのNoSQLデータベースサービスです。 Azure Tablesは、キーと値のペアベースのデータモデルを提供し、各エンティティはパーティションキーと行キーによって一意に識別されます。 このデザインは、データの効率的なクエリと検索を可能にし、大規模なデータセットへの高速アクセスを必要とするシナリオに最適です。

構造化データの管理にAzure Table Storageかリレーショナルデータベースのどちらを使うか決めかねている場合、Azure Table Storageの大規模データセット処理能力とAzureエコシステムとの統合により、開発者のツールキットにAzure Table Storageがあると便利です。

主な機能と機能

  1. **従来のリレーショナル・データベースとは異なり、Azure Table Storageはデータにスキーマを適用しません。 この柔軟性により、開発者は同じテーブル内にさまざまな構造を持つエンティティを格納することができ、アジャイル開発が容易になり、進化するデータ要件に対応することができます。

  2. スケーラビリティとパフォーマンス: Azure Table Storageはスケーラビリティのために設計されており、大量のデータを簡単に扱うことができます。 作業負荷の増加に合わせて自動的に拡張し、予測可能なパフォーマンスを提供するため、高スループットのアプリケーションや低遅延のデータアクセスを必要とするシナリオに適しています。

  3. パーティショニングとロードバランシング: Azure Table Storageのデータは、パーティションキーに基づいてパーティショニングされ、複数のストレージノードにデータを効率的に分散することができます。 このパーティショニング戦略により、水平方向のスケーラビリティと負荷分散が可能になり、最適なパフォーマンスとリソースの利用が保証されます。

  4. **Azure Table Storageは、データ検索のために主にパーティションキーと行キーを使用しますが、複合キーとクエリプロジェクションを使用することで、セカンダリインデックスもサポートしています。 この機能により、開発者は効率的な範囲クエリを実行したり、二次属性に基づいてデータをフィルタリングしたりできるようになり、データアクセスパターンの柔軟性が向上します。

  5. Azureエコシステムとの統合: Azure Table Storageは、Azure Functions、Azure Cosmos DB、Azure Logic Appsなどの他のAzureサービスとシームレスに統合されており、開発者はエンドツーエンドのソリューションを簡単に構築することができます。 サーバーレス機能によるデータストリームの処理であれ、高度な分析ツールによるデータの分析であれ、Azure Table Storageはスケーラブルで弾力性のあるアプリケーションを構築するための基盤となるコンポーネントとして機能します。

ユースケース

Azure Table Storageは、以下のようなさまざまな業界の幅広いユースケースに対応しています:

  1. **モノのインターネット(IoT)Azure Table Storageは、IoTデバイスからの遠隔測定データの保存に適しており、リアルタイムのデータ取り込み、分析、可視化を可能にします。 スケーラビリティとパフォーマンスにより、IoT デプロイメントで生成される大量のデータを処理するのに理想的です。

  2. コンテンツ管理: ブログ、記事、ユーザー作成コンテンツなど、コンテンツメタデータの構造化ストレージを必要とするアプリケーションに対して、Azure Table Storageはコスト効率と拡張性に優れたソリューションを提供します。 スキーマレスの設計により、スキーマを柔軟に進化させることができ、時間の経過によるコンテンツ構造の変化に対応できます。

  3. **Azure Table Storage は、Web アプリケーションのセッション状態データの保存に使用でき、分散型でスケーラブルな セッション管理ソリューションを提供します。 セッションの状態をAzure Table Storageにオフロードすることで、開発者は、スケーラビリティの向上、フォールトトレランス、負荷分散環境でのセッションの親和性を実現できます。

  4. 分散システム: 分散システムアーキテクチャでは、Azure Table Storageは、コンポーネント間の共有状態と連携を維持するための基礎データストアとして機能します。 パーティショニングとスケーラビリティの機能により、分散キャッシュ、構成管理、マイクロサービス間の調整を必要とするシナリオに適しています。

IronPDFの紹介

Azure Tables(開発者のための仕組み):図1

IronPDFは、.NETプロジェクトでPDF文書の生成、管理、コンテンツの抽出を可能にするC# PDFライブラリです。 以下は主な機能です:

  1. HTMLからPDFに変換:

    • HTML、CSS、JavaScriptコンテンツをPDFドキュメントに変換します。

    • ChromeレンダリングエンジンでピクセルパーフェクトなPDFを。
    • URL、HTMLファイル、HTML文字列を入力としてPDFを生成します。
  2. 画像とコンテンツの変換

    • 画像をPDFに、またはPDFから変換します。

    • 既存のPDF文書からテキストと画像を抽出します。
    • JPG、PNGなど様々な画像形式をサポート。
  3. 編集と操作

    • PDFのプロパティ、セキュリティ、権限を設定します。

    • デジタル署名を追加する。
    • メタデータとリビジョン履歴を編集する。
  4. クロスプラットフォームサポート:

    • .NET Coreで動作します。(8, 7, 6, 5, および3.1+).NET 標準(2.0以上)、および .NET Framework(4.6.2+).

    • Windows、Linux、macOSに対応。
    • NuGetで簡単にインストールできる。

IronPDFとAzureテーブルを使ってPDFドキュメントを生成する

まず始めに、Visual Studioを使って以下のようにコンソール・アプリケーションを作成してください:

Azure Tables(開発者のための仕組み):図2

プロジェクト名を提供してください:

Azure Tables(開発者のための仕組み):図3

.NET バージョンを提供してください:

Azure Tables(開発者のための仕組み):図4

インストールIronPDFパッケージをNuGetパッケージマネージャからダウンロードします:

Azure Tables(開発者のための仕組み):図5

Azure Tablesライブラリへのアクセスには、NuGetパッケージマネージャで見つけることができるAzure.Data.TablesというAzure Tablesクライアントライブラリを使用します。

Azure Tables(開発者のための仕組み):図6

Azure Tablesを使い始めるには、Azure Storageアカウントを作成してください:

Azure Tables(開発者のための仕組み):図7

レビューと作成をクリックしてください。

以下のコードをプログラムに入力し、Azure Tables を使用して PDF ドキュメントを生成してください。

using Azure;
using Azure.Data.Tables;
using Azure.Data.Tables.Models;
namespace CodeSample
{
    public static class AzureTableDemo
    {
        public static async Task Execute()
        {
            var tableName = "IronDemo";
            var connectionString = "DefaultEndpointsProtocol=https;AccountName=irondemo;AccountKey=9Pe6LJlkjA721VgWvSuRCMk+WJR5/kFoyPtR1ewjRsNbGJNJOmWYhCB32fakANmWeAcfyIg++iHl+AStDNYlGw==;EndpointSuffix=core.windows.net";
            Console.WriteLine("Demo IronPDF with Azure.Data.Tables");
            Installation.EnableWebSecurity = true;
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo IronPDF with Azure.Data.Tables</h1>";
            content += "<h2>Create TableServiceClient</h2>";
            content += "<p></p>";
            var serviceClient = new TableServiceClient(connectionString);
            content += "<p>var serviceClient = new TableServiceClient(connectionString);</p>";
            content += "<h2>Create CreateTableIfNotExists</h2>";
            TableItem table = await serviceClient.CreateTableIfNotExistsAsync(tableName);
            Console.WriteLine($"Created table: {table.Name}.");
            content += $"<p>Created table: {table.Name}.</p>";
            content += "<h2>Deletes If Required</h2>";
            // Deletes the table made previously.
            // serviceClient.DeleteTable(tableName);
            content += "<p>serviceClient.DeleteTable(tableName);</p>";
            content += "<h2>GetTableClient</h2>";
            var tableClient = serviceClient.GetTableClient(tableName);
            content += "<p>var tableClient = serviceClient.GetTableClient(tableName);</p>";
            content += "<h2>Add Table Entity</h2>";
            // Make a dictionary entity by defining a <see cref="TableEntity">.
            var tableEntity = new TableEntity() { { "Book", "Awesome IronPDF Package" }, { "Price", 5.00 }, { "Quantity", 21 } };
            content += "<p>new TableEntity() { { \"Book\", \"Awesome IronPDF\" }, { \"Price\", 5.00 }, { \"Quantity\", 21 } };</p>";
            tableEntity.PartitionKey = tableEntity["Book"].ToString();
            tableEntity.RowKey = tableEntity["Price"].ToString();
            content += $"<p>tableEntity.PartitionKey = {tableEntity["Book"]}</p>";
            content += $"<p>tableEntity.RowKey = {tableEntity["Price"]}</p>";
            Console.WriteLine($"{tableEntity.RowKey}: {tableEntity["Book"]} costs ${tableEntity.GetDouble("Price")}.");
            content += $"<p>{tableEntity.RowKey}: {tableEntity["Book"]} costs ${tableEntity.GetDouble("Price")}</p>";
            // Add the newly created entity.
            tableClient.AddEntity(tableEntity);
            content += "<p></p>";
            content += "<h2>Query Table</h2>";
            Pageable<TableEntity> queryResultsFilter = tableClient.Query<TableEntity>(filter: $"PartitionKey eq '{tableEntity.PartitionKey}'");
            content += "<p>Using tableClient.Query<TableEntity></p>";
            // Iterate the <see cref="Pageable"> to access all queried entities.
            foreach (TableEntity qEntity in queryResultsFilter)
            {
                content += $"<p>{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}</p>";
                Console.WriteLine($"{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}");
            }
            Console.WriteLine($"The query returned {queryResultsFilter.Count()} entities.");
            content +=$"<p>The query returned {queryResultsFilter.Count()} entities.</p>";
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("AwesomeAzureDataTables.pdf");
        }
    }
}
using Azure;
using Azure.Data.Tables;
using Azure.Data.Tables.Models;
namespace CodeSample
{
    public static class AzureTableDemo
    {
        public static async Task Execute()
        {
            var tableName = "IronDemo";
            var connectionString = "DefaultEndpointsProtocol=https;AccountName=irondemo;AccountKey=9Pe6LJlkjA721VgWvSuRCMk+WJR5/kFoyPtR1ewjRsNbGJNJOmWYhCB32fakANmWeAcfyIg++iHl+AStDNYlGw==;EndpointSuffix=core.windows.net";
            Console.WriteLine("Demo IronPDF with Azure.Data.Tables");
            Installation.EnableWebSecurity = true;
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo IronPDF with Azure.Data.Tables</h1>";
            content += "<h2>Create TableServiceClient</h2>";
            content += "<p></p>";
            var serviceClient = new TableServiceClient(connectionString);
            content += "<p>var serviceClient = new TableServiceClient(connectionString);</p>";
            content += "<h2>Create CreateTableIfNotExists</h2>";
            TableItem table = await serviceClient.CreateTableIfNotExistsAsync(tableName);
            Console.WriteLine($"Created table: {table.Name}.");
            content += $"<p>Created table: {table.Name}.</p>";
            content += "<h2>Deletes If Required</h2>";
            // Deletes the table made previously.
            // serviceClient.DeleteTable(tableName);
            content += "<p>serviceClient.DeleteTable(tableName);</p>";
            content += "<h2>GetTableClient</h2>";
            var tableClient = serviceClient.GetTableClient(tableName);
            content += "<p>var tableClient = serviceClient.GetTableClient(tableName);</p>";
            content += "<h2>Add Table Entity</h2>";
            // Make a dictionary entity by defining a <see cref="TableEntity">.
            var tableEntity = new TableEntity() { { "Book", "Awesome IronPDF Package" }, { "Price", 5.00 }, { "Quantity", 21 } };
            content += "<p>new TableEntity() { { \"Book\", \"Awesome IronPDF\" }, { \"Price\", 5.00 }, { \"Quantity\", 21 } };</p>";
            tableEntity.PartitionKey = tableEntity["Book"].ToString();
            tableEntity.RowKey = tableEntity["Price"].ToString();
            content += $"<p>tableEntity.PartitionKey = {tableEntity["Book"]}</p>";
            content += $"<p>tableEntity.RowKey = {tableEntity["Price"]}</p>";
            Console.WriteLine($"{tableEntity.RowKey}: {tableEntity["Book"]} costs ${tableEntity.GetDouble("Price")}.");
            content += $"<p>{tableEntity.RowKey}: {tableEntity["Book"]} costs ${tableEntity.GetDouble("Price")}</p>";
            // Add the newly created entity.
            tableClient.AddEntity(tableEntity);
            content += "<p></p>";
            content += "<h2>Query Table</h2>";
            Pageable<TableEntity> queryResultsFilter = tableClient.Query<TableEntity>(filter: $"PartitionKey eq '{tableEntity.PartitionKey}'");
            content += "<p>Using tableClient.Query<TableEntity></p>";
            // Iterate the <see cref="Pageable"> to access all queried entities.
            foreach (TableEntity qEntity in queryResultsFilter)
            {
                content += $"<p>{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}</p>";
                Console.WriteLine($"{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}");
            }
            Console.WriteLine($"The query returned {queryResultsFilter.Count()} entities.");
            content +=$"<p>The query returned {queryResultsFilter.Count()} entities.</p>";
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("AwesomeAzureDataTables.pdf");
        }
    }
}
Imports Azure
Imports Azure.Data.Tables
Imports Azure.Data.Tables.Models
Namespace CodeSample
	Public Module AzureTableDemo
		Public Async Function Execute() As Task
			Dim tableName = "IronDemo"
			Dim connectionString = "DefaultEndpointsProtocol=https;AccountName=irondemo;AccountKey=9Pe6LJlkjA721VgWvSuRCMk+WJR5/kFoyPtR1ewjRsNbGJNJOmWYhCB32fakANmWeAcfyIg++iHl+AStDNYlGw==;EndpointSuffix=core.windows.net"
			Console.WriteLine("Demo IronPDF with Azure.Data.Tables")
			Installation.EnableWebSecurity = True
			' Instantiate Renderer
			Dim renderer = New ChromePdfRenderer()
			Dim content = "<h1>Demo IronPDF with Azure.Data.Tables</h1>"
			content &= "<h2>Create TableServiceClient</h2>"
			content &= "<p></p>"
			Dim serviceClient = New TableServiceClient(connectionString)
			content &= "<p>var serviceClient = new TableServiceClient(connectionString);</p>"
			content &= "<h2>Create CreateTableIfNotExists</h2>"
			Dim table As TableItem = Await serviceClient.CreateTableIfNotExistsAsync(tableName)
			Console.WriteLine($"Created table: {table.Name}.")
			content &= $"<p>Created table: {table.Name}.</p>"
			content &= "<h2>Deletes If Required</h2>"
			' Deletes the table made previously.
			' serviceClient.DeleteTable(tableName);
			content &= "<p>serviceClient.DeleteTable(tableName);</p>"
			content &= "<h2>GetTableClient</h2>"
			Dim tableClient = serviceClient.GetTableClient(tableName)
			content &= "<p>var tableClient = serviceClient.GetTableClient(tableName);</p>"
			content &= "<h2>Add Table Entity</h2>"
			' Make a dictionary entity by defining a <see cref="TableEntity">.
			Dim tableEntity() As New TableEntity() From {
				{ "Book", "Awesome IronPDF Package" },
				{ "Price", 5.00 },
				{ "Quantity", 21 }
			}
			content &= "<p>new TableEntity() { { ""Book"", ""Awesome IronPDF"" }, { ""Price"", 5.00 }, { ""Quantity"", 21 } };</p>"
			tableEntity.PartitionKey = tableEntity("Book").ToString()
			tableEntity.RowKey = tableEntity("Price").ToString()
			content &= $"<p>tableEntity.PartitionKey = {tableEntity("Book")}</p>"
			content &= $"<p>tableEntity.RowKey = {tableEntity("Price")}</p>"
			Console.WriteLine($"{tableEntity.RowKey}: {tableEntity("Book")} costs ${tableEntity.GetDouble("Price")}.")
			content &= $"<p>{tableEntity.RowKey}: {tableEntity("Book")} costs ${tableEntity.GetDouble("Price")}</p>"
			' Add the newly created entity.
			tableClient.AddEntity(tableEntity)
			content &= "<p></p>"
			content &= "<h2>Query Table</h2>"
			Dim queryResultsFilter As Pageable(Of TableEntity) = tableClient.Query(Of TableEntity)(filter:= $"PartitionKey eq '{tableEntity.PartitionKey}'")
			content &= "<p>Using tableClient.Query<TableEntity></p>"
			' Iterate the <see cref="Pageable"> to access all queried entities.
			For Each qEntity As TableEntity In queryResultsFilter
				content &= $"<p>{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}</p>"
				Console.WriteLine($"{qEntity.GetString("Book")}: {qEntity.GetDouble("Price")}")
			Next qEntity
			Console.WriteLine($"The query returned {queryResultsFilter.Count()} entities.")
			content &=$"<p>The query returned {queryResultsFilter.Count()} entities.</p>"
			Dim pdf = renderer.RenderHtmlAsPdf(content)
			' Export to a file or Stream
			pdf.SaveAs("AwesomeAzureDataTables.pdf")
		End Function
	End Module
End Namespace
VB   C#

コードの説明

コードはAzure Table Storageとどのようにやりとりし、IronPDFを使ってPDFを生成するかを示しています:

  1. Azure Table Storage Interaction

    • Azure SDK for .NETを使用します。(Azure.Data.Tables)Azure Table Storageに接続します。

    • そして、"IronDemo "という名前のテーブルが存在するかどうかをチェックします; そうでない場合は、作成します。

    • 新しいエンティティを追加(データベースの行に似ている)をテーブルに追加し、「Book」、「Price」、「Quantity」などのプロパティを指定します。
    • フィルタ条件に基づいてエンティティを取得するためにテーブルを照会します。
  2. IronPDFによるPDF生成:

    • IronPDFのChromePdfRendererを使ってHTMLコンテンツをPDFファイルにレンダリングします。
    • Azure Table Storage操作の詳細を含むダイナミックHTMLコンテンツからPDFを生成します。

    Azure Tables(開発者のための仕組み):図8

PDF

Azure Tables(開発者のための仕組み):図9

IronPDF ライセンシング

IronPDFパッケージの実行にはライセンスが必要です。 パッケージにアクセスする前に、アプリケーションの最初に以下のコードを追加してください。

IronPdf.License.LicenseKey = "IRONPDF-KEY";
IronPdf.License.LicenseKey = "IRONPDF-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

試用版ライセンスありこれ.

結論

Azure Table Storageは、拡張性、柔軟性、コスト効率に優れたデータストレージソリューションをクラウドで開発者に提供するというMicrosoftのコミットメントの証です。 スキーマレス設計、水平スケーラビリティ、Azureエコシステムとのシームレスな統合により、Azure Table Storageは、開発者が現代のビジネス環境の動的な要求に適応できる、弾力的で俊敏なアプリケーションを構築できるようにします。

IoTデータストリームの管理であれ、コンテンツメタデータの保存であれ、分散システムのオーケストレーションであれ、Azure Table Storageは、クラウドネイティブなアプリケーションの可能性を最大限に引き出すための多目的プラットフォームを提供します。 組織がデジタルトランスフォーメーションイニシアチブを採用し、クラウドへの移行を続ける中、Azure Table Storageは最新のデータストレージアーキテクチャの礎石であり続け、イノベーションを推進し、ますますデータ駆動型になる世界でビジネスを成功に導きます。

IronPDFは、プログラムでPDF文書を作成・操作するために使用される.NETライブラリです。 開発者は、HTML、ASPXページ、画像、テキストをPDFファイルに変換できます。 主な機能には、HTMLからPDFへの変換、PDF編集機能、さまざまな.NET環境のサポートが含まれ、.NETアプリケーション内でPDFドキュメントを生成し、処理するための汎用的なツールとなっています。

次へ >
C# ConfigureAwait (開発者のための仕組み)