

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 目的別データベースを検討する
<a name="net-purpose"></a>

## 概要:
<a name="net-purpose-overview"></a>

Microsoft ベースのワークロードを実行する上で最もコストのかかる側面の 1 つは、SQL Server などの商用データベースのライセンスに起因します。企業は、データベースプラットフォームの選択として SQL Server を標準とすることが多く、それが組織の開発文化に深く根付いています。開発者は通常、ユースケースに関係なく、リレーショナル SQL Server ベースのモデルを選択します。その理由には次のようなものがあります。
+ 企業は既に SQL Server のインスタンスやライセンスが利用可能になっている。
+ チームは、共有ライブラリ、ORM、ビジネスロジックを使用した SQL プログラミングモデルに慣れている。
+ 経営者側が代替案を認識していない。
+ 開発者が代替案を認識していない。

目的別データベースは、ユースケースのデータアクセスパターンに対応できます。これらのデータベースは、より最新のアーキテクチャ (マイクロサービスなど) が採用され、個々のアプリケーションの範囲が狭まるにつれて、企業でますます採用されています。

目的別データベースは、リレーショナルモデルを除外したり、NoSQL (非リレーショナル) モデルを必要としたりしません。実際、リレーショナルデータベースは、ワークロードの特定のニーズに応じて選択されると、目的別であると見なされます。目的別データベースを使用すると、チームは .NET アプリケーションに関連するデータベースコストを削減しながら、スケーラビリティ、耐障害性、差別化されていない困難な作業の削減などの標準的なクラウド上の利点を得ることができます。

次の表は、 が提供する専用データベースを示しています AWS。


****  

| データベース | タイプ | 特性 | 
| --- | --- | --- | 
| [Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) または [Amazon Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html) | リレーショナル | データが固定構造を持つユースケースリレーショナルデータベースは ACID トランザクションを通じてデータ整合性を自然に維持します。 | 
| [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) | キーと値のペア | ハッシュテーブルのデータ構造を使用してデータを保存する NoSQL データベース高性能ストレージと非構造化データの取得ユースケースには、ユーザープロファイル、セッション状態、ショッピングカートデータが含まれます。 | 
| [Amazon ElastiCache](https://aws.amazon.com/elasticache/) | インメモリ | 非構造化データをミリ秒未満のアクセス時間でメモリに保存する高性能 NoSQL データベースユーザーセッションなどの頻繁にアクセスされるエフェメラルデータに使用され、他の低速データストアの前のキャッシュレイヤーとして使用されます。ElastiCache (Redis OSS) と ElastiCache (Memcached) の両方のサポートが含まれます | 
| [Amazon MemoryDB](https://aws.amazon.com/memorydb/) | 耐久性のあるインメモリ | 耐久性のあるストレージを備えた Redis 互換の目的別データベース | 
| [Amazon Timestream](https://aws.amazon.com/timestream/) | 時系列 | 高スループットのデータインジェストを時間順に行うように設計されたデータベースユースケースには、モノのインターネット (IoT) アプリケーションや、メトリクスまたはテレメトリデータの保存が含まれます。 | 
| [ Amazon DocumentDB](https://aws.amazon.com/documentdb/) | ドキュメント | 所定の構造や、他のデータへの強制的な関係なしにデータを保存する NoSQL データベース多くの場合、製品カタログなどの読み取り負荷の高いワークロードに使用されます。 | 
| [Amazon Neptune](https://aws.amazon.com/neptune/) | グラフ | データと、データ項目間の接続の表現の両方を保持する NoSQL データベースユースケースには、不正検出、レコメンデーションエンジン、ソーシャルアプリケーションが含まれます。 | 
| [Amazon Keyspaces](https://aws.amazon.com/keyspaces/) | ワイドカラム | Apache Cassandra に基づく高性能分散データベースユースケースには、IoT アプリケーション、イベント処理、ゲームアプリケーションが含まれます。 | 

目的別データベースの採用の大きな推進要因は、商用ライセンスの排除にある可能性があります。ただし、[DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html) ([オンデマンドモード](https://aws.amazon.com/blogs/aws/amazon-dynamodb-on-demand-no-capacity-planning-and-pay-per-request-pricing/)を含む)、[Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Integrating.AutoScaling.html)、[Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/manage-console-autoscaling.html)、[Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/autoscaling.html) などのデータベースの自動スケーリング機能を使用すると、ピーク時の使用量ではなく、平均ケースのキャパシティをプロビジョニングできます。Timestream などの目的別データベースはサーバーレスであり、事前プロビジョニングなしで需要に合わせて自動的にスケーリングされます。

AWS は、専用のオープンソース互換リレーショナルデータベースを使用する場合、[Babelfish for Aurora PostgreSQL](https://aws.amazon.com/rds/aurora/babelfish/) を提供しますが、アプリケーションに大幅なコード変更を行うことができない、または行おうとしない場合があります。場合によっては、Babelfish を使用して、ほとんど変更を加えずに既存の SQL Server アクセスコードを使用できることがあります。

アプリケーションの目的別リレーショナルデータベースを選択するときは、アプリケーションに必要な機能と同じ (または機能的に同等の) 機能を保持することが重要です。この推奨事項では、アプリケーションのプライマリデータストアとして目的別データベースを取り上げています。特定のアプリケーション (キャッシュなど) については、他の推奨事項で言及しています。

## コストへの影響
<a name="net-purpose-cost"></a>

.NET ワークロードの目的別データベースを採用すると、コンピューティングの消費/コストに直接影響する可能性は低いものの、.NET アプリケーションが消費するデータベースサービスのコストに直接影響する可能性があります。実際、俊敏性、スケーラビリティ、耐障害性、データ耐久性という付加的な利点と比較して、コスト削減は副次的な目標になる可能性があります。

アプリケーションの目的別データベースを選択し、効果的に使用するためのデータ戦略を再設計する完全なプロセスを説明することは、このガイドの範囲外です。詳細については、 AWS チュートリアルディレクトリの「[Purpose-built databases](https://aws.amazon.com/tutorials/purpose-built-databases/)」を参照してください。

次の表に、SQL Server を目的別データベースに置き換えることでアプリケーションコストがどのように変化するかを示すいくつかの例を挙げます。これらは単純に概算見積もりであることに注意してください。正確な本番コストを計算するには、実際のワークロードのベンチマークと最適化が必要です。

これらは、オンデマンドコンピューティングと 100 GB SSD、`us-east-1` の単一インスタンスデータベースを含む、一般的に使用される目的別データベースの見積もりです。ライセンスコストには、SQL Server ライセンスとソフトウェア保証が含まれます。

次の表は、商用データベースの例の推定コストを示しています。


****  

| データベースエンジン | ライセンスモデル | インスタンスタイプ/スペック | AWS コンピューティング \$1 ストレージコスト | ライセンスコスト | 合計月額コスト | 
| --- | --- | --- | --- | --- | --- | 
| Amazon EC2 の SQL Server Standard Edition | ライセンスインクルード | r6i.2xlarge (8 CPU/64 GB RAM) | 1,345.36 USD | 0.00 USD | 1,345.36 USD | 
| Amazon EC2 の SQL Server Enterprise Edition | ライセンスインクルード | r6i.2xlarge (8 CPU/64 GB RAM) | 2,834.56 USD | 0.00 USD | 2,834.56 USD | 
| Amazon EC2 の SQL Server Standard Edition | BYOL | r6i.2xlarge (8 CPU/64 GB RAM) | 644.56 USD | 456.00 USD | 1,100.56 USD | 
| Amazon EC2 の SQL Server Enterprise Edition | BYOL | r6i.2xlarge (8 CPU/64 GB RAM) | 644.56 USD | 1,750.00 USD | 2,394.56 USD | 
| Amazon RDS の SQL Server Standard Edition |   | db.r6i.2xlarge (8 CPU/64 GB RAM) | 2,318.30 USD | 0.00 USD | 2,318.30 USD | 
| Amazon RDS の SQL Server Enterprise Edition |   | db.r6i.2xlarge (8 CPU/64 GB RAM) | 3,750.56 USD | 0.00 USD | 3,750.56 USD | 

次の表は、目的別の例の推定コストを示しています。


****  

| データベースエンジン | インスタンスタイプ/スペック | AWS コンピューティング \$1 ストレージコスト | ライセンスコスト | 合計月額コスト | 
| --- | --- | --- | --- | --- | 
| Amazon Aurora PostgreSQL | r6g.2xlarge (8 CPU/64 GB RAM) | 855.87 USD | 0.00 USD | 855.87 USD | 
| DynamoDB | プロビジョニング済みベース 100 WCU/400 RCU | 72.00 USD |   | 72.00 USD | 
| Amazon DocumentDB | db.r6i.2xlarge (8 CPU/64 GB RAM) | 778.60 USD |   | 778.60 USD | 

**重要**  
この表は、購入後の最初の 3 年間の、ソフトウェアアシュアランス付き SQL Server の推定ライセンスコストに基づいています。SQL Server Standard Edition の場合: 4,100 USD、2 コアパック、3 年間。SQL Server Enterprise Edition の場合: 15,700 USD、2 コアパック、3 年間。

目的別データベースを採用する前に、コストへの影響を考慮することをお勧めします。例えば、目的別データベースを使用するようにアプリケーションを更新するコストは、アプリケーションとソースデータベースの複雑さに関連します。このアーキテクチャの切り替えを計画するときは、総保有コストを必ず考慮してください。これには、アプリケーションのリファクタリング、新しいテクノロジーに関するスタッフのスキル向上、各ワークロードで予想されるパフォーマンスと消費の慎重な計画が含まれます。そこから、投資がコスト削減に値するかどうかを決定できます。ほとんどの場合、サポートが終了した製品を維持することはセキュリティとコンプライアンスのリスクであり、それを修復するコストは、労力と初期投資に見合う価値があります。

## コスト最適化の推奨事項
<a name="net-purpose-rec"></a>

SQL Server にアクセスする .NET アプリケーションには、目的別リレーショナルデータベース用の代替ライブラリがあります。これらのライブラリをアプリケーションに実装して、同様の SQL Server アプリケーションの機能を置き換えることができます。

次の表は、多くの一般的なシナリオで使用できるいくつかのライブラリを示しています。


****  

| Library | データベース | 置き換え元 | フレームワークの互換性 | 
| --- | --- | --- | --- | 
| [Npgsql Entity Framework Core プロバイダー](https://www.npgsql.org/efcore/index.html) | Amazon Aurora PostgreSQL | Entity Framework Core SQL Server プロバイダー | 最新の .NET | 
| [Npgsql Entity Framework 6 プロバイダー](https://www.npgsql.org/ef6/index.html) | Amazon Aurora PostgreSQL | Entity Framework 6.0 SQL Server プロバイダー | 特定のランタイムライブラリまたは .NET Framework の最小バージョンが必要です。 | 
| [Npgsql](https://www.npgsql.org/doc/index.html) (ADO.NET 互換 PostgreSQL ライブラリ) | Amazon Aurora PostgreSQL | ADO.NET | .NET Framework/最新の .NET | 
| [MySQL Entity Framework Core プロバイダー](https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core.html) | Amazon Aurora MySQL | Entity Framework Core SQL Server プロバイダー | 最新の .NET | 
| [Pomelo.EntityFrameworkCore.MySql](https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql) | Amazon Aurora MySQL | Entity Framework Core SQL Server プロバイダー | 最新の .NET | 

[Babelfish を使用して Amazon Aurora PostgreSQL に接続する](https://babelfishpg.org/docs/client/csharp/)場合、接続に特別なコーディングは必要ありません。ただし、使用前にすべてのコードを徹底的にテストする必要があります。

その他の目的別データベースには、目的別データベースにアクセスできるようにする、.NET 互換ライブラリにアクセスするためのライブラリがあります。以下に例を示します。
+ [Amazon DynamoDB NoSQL データベースの使用](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/dynamodb-intro.html) (AWS SDK for .NET ドキュメント)
+ 「[MongoDB C\$1 ドライバー](https://www.mongodb.com/docs/drivers/csharp/current/)」(MongoDB ドキュメント)
+ 「[.NET](https://docs.aws.amazon.com/timestream/latest/developerguide/getting-started.dot-net.html)」(Timestream ドキュメント)
+ 「[Using a Cassandra .NET Core client driver to access Amazon Keyspaces programmatically](https://docs.aws.amazon.com/keyspaces/latest/devguide/using_dotnetcore_driver.html)」(Amazon Keyspaces ドキュメント)
+ 「[Using .NET to connect to a Neptune DB instance](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-dotnet.html)」(Neptune ドキュメント)

目的別に構築されたデータベースに移行する場合は、 からこれらのツールを使用して移行プロセス AWS に役立てることができます。
+ [AWS Schema Conversion Tool (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/) は、SQL Server スキーマを Amazon Aurora および Amazon DynamoDB に変換するのに役立ちます。
+ [AWS Database Migration Service (AWS DMS)](https://aws.amazon.com/dms/schema-conversion-tool/) は、SQL Server から Aurora または DynamoDB にデータを 1 回または継続的に移行するのに役立ちます。
+ [Babelfish Compass](https://github.com/babelfish-for-postgresql/babelfish_compass) は、Babelfish for Aurora PostgreSQL で使用するための SQL Server データベースの互換性を確認するのに役立ちます。

## その他のリソース
<a name="net-purpose-resources"></a>
+ 「[Guidance for migrating SQL Server to Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-sql-server-to-amazon-aurora-postgresql-using-best-practices-and-lessons-learned-from-the-field/)」(AWS データベースブログ)
+ [Babelfish APP Modernization Immersion Day](https://catalog.workshops.aws/babelfish-app-modernization/en-US) (AWS Workshop Studio)
+ [.NET Immersion Day](https://catalog.us-east-1.prod.workshops.aws/workshops/02696107-09ac-4313-a6cb-3798048b07d7/en-US/3-choosing-a-cloud-native-database-for-my-net-application) (AWS Workshop Studio)
+ 「[Getting started with Amazon Timestream with .NET](https://github.com/awslabs/amazon-timestream-tools/tree/mainline/sample_apps/dotnet)」(GitHub)
+ [での最新の .NET アプリケーション専用のデータベース AWS](https://d1.awsstatic.com/events/Summits/reinvent2022/XNT304_Purpose-built-databases-for-modern-NET-applications-on-AWS.pdf) (AWS プレゼンテーション)