坂本  健一

坂本 健一

1655983740

AzureSQLデータベースとAzureCosmosDB —どちらを選択する必要がありますか?

最近、アプリケーションの開発またはMicrosoft Azureへの移植を開始しましたか?もしそうなら、おそらくあなたが決定しなければならないことの1つは、使用したいデータベースソリューションです。Microsoftクラウドには複数のオプションがあり、最も人気のある2つはAzure SQLデータベース(およびその2つの兄弟、AzureSQLマネージドインスタンスとAzureVM上のSQLServer)とAzureCosmosDBです。

最近、私は自分のアプリケーションでこれら2つの選択肢を比較していました。私は読者と共有したいいくつかの洞察を得ました。まず、両方の製品を別々に見て、それらが提供する機能を確認しましょう。

AzureSQLデータベース

Azure SQLは、Azureで提供されるMicrosoftのSQLServerです。AzureSQLに関連する3つのサービスから選択できます。

  • AzureSQLデータベース
  • AzureSQLマネージドインスタンス
  • AzureVM上のSQLServer

Azure SQL Databaseは、3つのうちで最も「マネージド」なサービスです。これは、SQLServerをすばやく簡単にセットアップできるPaaSオファリングです。バックアップ、更新、監視など、ほとんどの管理タスクが自動的に処理されます。また、基盤となるインフラストラクチャを管理する必要もありません。

構成可能なメモリとコンピューティングを備えた単一のデータベースオプション、複数のデータベース間でリソースを共有できるエラスティックプールオプション、用途に応じてリソースを動的に拡張できるサーバーレスオプションなど、複数のサービス層から選択できます。

AzureVM上のSQLServerを使用すると、プロビジョニングされた独自のAzure仮想マシンでSQLServerインスタンスを実行できます。これは、展開のあらゆる側面をほぼ完全に制御できることを意味します。これは、オンプレミスソリューションで実行するのに慣れているほとんどの管理タスクに注意する必要があることも意味します。

Azure SQLマネージドインスタンスは、これら2つのハイブリッドの一種です。一方では、オンプレミスのSQLServerデータベースをクラウドにシームレスに転送できます。一方、セキュリティの向上、自動パッチ適用、バージョン更新、自動バックアップなど、クラウドの多くの利点があります。

AzureSQLはSQLServerとほとんど互換性があるため、オンプレミス製品と同じトランザクション保証(ACID)も提供します。これらの強力な保証により、複数のサーバーインスタンスを追加することによるスケールアウトは、ほとんどの場合、読み取り専用レプリカに限定されます。これは、AzureSQLのジオレプリケーション機能にも当てはまります。

Azure SQL Databaseの料金は、必要なコンピューティングとメモリ(vCores)、および構成するローカルストレージとバックアップストレージに基づいています。全体的に、価格設定は理解しやすいようです。

Azure Cosmos DB

Cosmos DBは、Azure上のNoSQLオファリングです。これは、結果整合性の概念を完全に取り入れて、極端なスケーラビリティをサポートするようにゼロから設計されています。主なターゲットアプリケーションは、IoTとグローバル向けのクラウドアプリケーションです。この目的のために、Cosmos DBは、さまざまな整合性レベル、データアクセスメソッド(API)、およびスケーリングオプションを提供します。

Cosmos DBはNoSQLデータベースであるため、通常、アプリケーションでのデータの使用方法によく準拠しています。たとえば、「アイテム」をJSONドキュメントとしてデータベースに挿入でき、クエリの出力もJSONドキュメントになります。データベースとコンテナは、特定の追加機能を備えたアイテムの名前空間として使用されます。

極端な水平スケーリングをサポートするために、CosmosDBは複数のメカニズムを使用します。まず、Cosmos DBは、パーティションキーに従って各コンテナーをパーティション化します。これらのパーティションは、物理ノード全体に自動的に分散されます。さらに、データのグローバルな分散は、複数のAzureリージョンにデータをデプロイすることで実現されます。これにより、レイテンシが減少し、世界中で応答性が向上します。また、地域の停止時にフェイルオーバーを提供します。

当然のことながら、グローバルな配布には一貫性が犠牲になります。デフォルトで強力なACID保証を提供するSQLServerとは対照的に、Cosmos DBでは、それぞれが保証を提供する複数の整合性レベルから選択できます。これらの最も極端な結果整合性は、すべてのレプリカが将来のある時点で収束することを保証するだけです。

Cosmos DBの価格設定モデルは、リクエストユニット(RU)に基づいています。1RUは、1KBのポイント読み取りのコストです。それに応じて、クエリはより高価になります。リクエストユニットは十分に単純に見えますが、事前の経験がなければ、特定のデータアクセスパターンを考慮して使用量を見積もることは困難です。

長所と短所

両方の解決策を説明したので、どちらが自分に最も適しているかを尋ねることができますか?両方のデータベースの長所と短所について説明しましょう。

AzureSQLデータベースの長所

  • 柔軟な展開オプション。フルマネージドサービスが必要な場合でも、AzureのVMでSQL Serverを実行するだけの場合でも、AzureSQLDatabaseで対応できます。
  • SQL開発者に精通している。Azure SQL Databaseは、基本的にはよく知られているSQL ServerのAzure実装であるため、ほとんどのスキルはクラウド製品に直接移行します。
  • カスタマイズ性。独自のSQLServerインスタンスを実行する場合は、すべての設定を制御できます。
  • 透明性のある価格設定。料金は、必要なメモリ、コンピューティング、およびストレージリソースに基づいています。
  • 移行。基盤となるエンジンが同じであるため、オンプレミスのSQLServerデータベースをAzureSQLに比較的簡単に移行できます。
  • 安定性と信頼性。Microsoft SQL Serverは、最初は1989年にリリースされ、それ以来長い道のりを歩んできました。これは、成熟した、安定した、十分にテストされたデータベースエンジンです。

AzureSQLデータベースの短所

  • スキーマを修正しました。一般に、SQLデータベースは、スキーマが固定されているため、頻繁に変更されるソフトウェア要件にはあまり適していません。スキーマの移行は管理が難しい場合があります。SQL Serverは現在JSONデータを処理できますが(したがって、SQLとNoSQLの間のギャップを埋める)、特別な構文が必要であり、少し後付けのように感じます。
  • ACIDは、分散トランザクションを保証します。これらの機能は一部のアプリケーションでは非常に便利ですが、不要な場合はスケーラビリティが大幅に低下します。
  • 限られたスケーリング。スケールアップ(SQL Serverインスタンスにメモリまたはコンピューティングを追加することによる)はパフォーマンスを向上させるための迅速かつ簡単な方法ですが、特定のポイントを超えると非常に高額になる可能性があります。スケールアウト(SQL Serverの複数のインスタンスを追加することによる)は、ほとんどの場合、読み取り専用レプリカに制限されています。

AzureCosmosDBの長所

  • グローバルな配布。今日、多くの企業が世界中で活動しています。顧客は、場所に関係なく、アプリケーションに同じパフォーマンスを期待しています。これにより、標準のSQLデータベースモデルは非常に非効率になります。ソーシャルネットワークフィードやIoTデータストリームなどのタスクには、複数の読み取り専用レプリカを持つ1つの書き込み対応マスターノードを持つだけでは不十分です。
  • 複数の整合性レベル。一方、これらのアプリケーションは通常、従来のデータベースの整合性保証を必要としません。一貫性のあるプレフィックスや結果整合性など、より弱い一貫性モデルに依存する可能性があります。整合性レベルを自由に選択できることは、CosmosDBの主な利点です。
  • 自動インデックスのサポート。すべてのコンテナには、クエリを高速化するために設定されたインデックスポリシーがあります。デフォルトでは、すべてのプロパティにインデックスが付けられ、範囲インデックスが適用されます。ほとんどのユースケースではこれで十分です。ただし、高度なインデックス設定を使用できます。
  • すぐに使用できる複数の言語のサポート。.NET、Java、Python、Ruby、およびJavaScriptで使用できる既製のAPIがあります。複雑なORMレイヤーは必要ありません。
  • 複数のAPI。Cosmos DBは、独自のコアAPIと、他のNoSQLデータベースからの移行を支援する複数の代替データベースAPI(Gremlin API、Cassandra API、MongoDB API、Table API)を提供します。これにより、移行コストと学習曲線が低下します。

AzureCosmosDBの短所

  • 従来のDB管理者にとっては理解が困難です。Cosmos DBはNoSQLデータベースであり、必ずしも強力なACID保証を提供するわけではないため(構成によって異なります)、従来のSQLデータベースの処理に慣れているDB管理者にとっては理解が困難です。
  • SQLServerからの複雑な移行。SQL Serverベースのソリューションからの移行は非常にコストがかかることが判明する場合があり、極端な場合には、アプリケーションの主要部分を書き直す必要がある場合があります。その後の最適化には、さらに時間がかかります。グローバルスケーリングのメリットが努力を上回っている場合にのみ、これを行うことをお勧めします。
  • 理解しにくい価格設定モデル。価格設定モデルは、直感的でない可能性のあるリクエストユニットに基づいています。ポータルのCosmosDBCapacity Calculatorは、特定の主要なメトリックを見積もることができれば、コストの見積もりに役立つ場合があります。一般に、CosmosDBは非常に高価な場合があります。
  • パブリッククラウドのみ。Cosmos DBが展開される唯一の場所は、Microsoftのデータセンターです。現在、AzureArcなどのハイブリッドまたはオンプレミスのクラウドソリューションは提供されていません。

結論

どちらの製品も、Azureエコシステムに組み込まれています。Azure SQL Databaseは、オンプレミスのSQL Serverソリューションからの移行を容易にし、既存のSQL Serverの知識を活用するのに役立ちますが、Cosmos DBは、グローバルな配布用にゼロから設計され、完全に管理されています。

新しいプロジェクトに使用するデータベースを決定する必要がある場合は、Cosmos DBを使用します。これは、そのスケーラビリティと柔軟性が大好きだからです。NoSQLサービスとして、データベースとの対話は、従来のデータベースに必要な複雑なORMミドルウェアで作業するよりも、アプリケーションコードでより自然に感じられます。さらに、複数の整合性レベルを選択すると、速度と整合性の間の適切なバランスを非常に簡単に選択できます。

Cosmos DBに関する私の主な関心事は、従来のSQLデータベースの処理に慣れている管理者にとっての急な学習曲線です。最初のCosmosDBデータベースをセットアップするのは大変なことです。特定の要件を満たすようにサービスを設定する方法を理解するには、多くのドキュメントを読むか、多くのチュートリアルを見る必要があります。

ただし、採用率が上がるにつれて、時間の経過とともに改善されると思います。Cosmos DBは短期間ですでに長い道のりを歩んでおり、次の方向性を見るのが待ちきれません。

ソース:https ://betterprogramming.pub/azure-sql-database-vs-cosmos-db-which-should-you-choose-cda17b60d6d2

#cosmosdb #azure #sql 

What is GEEK

Buddha Community

AzureSQLデータベースとAzureCosmosDB —どちらを選択する必要がありますか?
坂本  健一

坂本 健一

1655983740

AzureSQLデータベースとAzureCosmosDB —どちらを選択する必要がありますか?

最近、アプリケーションの開発またはMicrosoft Azureへの移植を開始しましたか?もしそうなら、おそらくあなたが決定しなければならないことの1つは、使用したいデータベースソリューションです。Microsoftクラウドには複数のオプションがあり、最も人気のある2つはAzure SQLデータベース(およびその2つの兄弟、AzureSQLマネージドインスタンスとAzureVM上のSQLServer)とAzureCosmosDBです。

最近、私は自分のアプリケーションでこれら2つの選択肢を比較していました。私は読者と共有したいいくつかの洞察を得ました。まず、両方の製品を別々に見て、それらが提供する機能を確認しましょう。

AzureSQLデータベース

Azure SQLは、Azureで提供されるMicrosoftのSQLServerです。AzureSQLに関連する3つのサービスから選択できます。

  • AzureSQLデータベース
  • AzureSQLマネージドインスタンス
  • AzureVM上のSQLServer

Azure SQL Databaseは、3つのうちで最も「マネージド」なサービスです。これは、SQLServerをすばやく簡単にセットアップできるPaaSオファリングです。バックアップ、更新、監視など、ほとんどの管理タスクが自動的に処理されます。また、基盤となるインフラストラクチャを管理する必要もありません。

構成可能なメモリとコンピューティングを備えた単一のデータベースオプション、複数のデータベース間でリソースを共有できるエラスティックプールオプション、用途に応じてリソースを動的に拡張できるサーバーレスオプションなど、複数のサービス層から選択できます。

AzureVM上のSQLServerを使用すると、プロビジョニングされた独自のAzure仮想マシンでSQLServerインスタンスを実行できます。これは、展開のあらゆる側面をほぼ完全に制御できることを意味します。これは、オンプレミスソリューションで実行するのに慣れているほとんどの管理タスクに注意する必要があることも意味します。

Azure SQLマネージドインスタンスは、これら2つのハイブリッドの一種です。一方では、オンプレミスのSQLServerデータベースをクラウドにシームレスに転送できます。一方、セキュリティの向上、自動パッチ適用、バージョン更新、自動バックアップなど、クラウドの多くの利点があります。

AzureSQLはSQLServerとほとんど互換性があるため、オンプレミス製品と同じトランザクション保証(ACID)も提供します。これらの強力な保証により、複数のサーバーインスタンスを追加することによるスケールアウトは、ほとんどの場合、読み取り専用レプリカに限定されます。これは、AzureSQLのジオレプリケーション機能にも当てはまります。

Azure SQL Databaseの料金は、必要なコンピューティングとメモリ(vCores)、および構成するローカルストレージとバックアップストレージに基づいています。全体的に、価格設定は理解しやすいようです。

Azure Cosmos DB

Cosmos DBは、Azure上のNoSQLオファリングです。これは、結果整合性の概念を完全に取り入れて、極端なスケーラビリティをサポートするようにゼロから設計されています。主なターゲットアプリケーションは、IoTとグローバル向けのクラウドアプリケーションです。この目的のために、Cosmos DBは、さまざまな整合性レベル、データアクセスメソッド(API)、およびスケーリングオプションを提供します。

Cosmos DBはNoSQLデータベースであるため、通常、アプリケーションでのデータの使用方法によく準拠しています。たとえば、「アイテム」をJSONドキュメントとしてデータベースに挿入でき、クエリの出力もJSONドキュメントになります。データベースとコンテナは、特定の追加機能を備えたアイテムの名前空間として使用されます。

極端な水平スケーリングをサポートするために、CosmosDBは複数のメカニズムを使用します。まず、Cosmos DBは、パーティションキーに従って各コンテナーをパーティション化します。これらのパーティションは、物理ノード全体に自動的に分散されます。さらに、データのグローバルな分散は、複数のAzureリージョンにデータをデプロイすることで実現されます。これにより、レイテンシが減少し、世界中で応答性が向上します。また、地域の停止時にフェイルオーバーを提供します。

当然のことながら、グローバルな配布には一貫性が犠牲になります。デフォルトで強力なACID保証を提供するSQLServerとは対照的に、Cosmos DBでは、それぞれが保証を提供する複数の整合性レベルから選択できます。これらの最も極端な結果整合性は、すべてのレプリカが将来のある時点で収束することを保証するだけです。

Cosmos DBの価格設定モデルは、リクエストユニット(RU)に基づいています。1RUは、1KBのポイント読み取りのコストです。それに応じて、クエリはより高価になります。リクエストユニットは十分に単純に見えますが、事前の経験がなければ、特定のデータアクセスパターンを考慮して使用量を見積もることは困難です。

長所と短所

両方の解決策を説明したので、どちらが自分に最も適しているかを尋ねることができますか?両方のデータベースの長所と短所について説明しましょう。

AzureSQLデータベースの長所

  • 柔軟な展開オプション。フルマネージドサービスが必要な場合でも、AzureのVMでSQL Serverを実行するだけの場合でも、AzureSQLDatabaseで対応できます。
  • SQL開発者に精通している。Azure SQL Databaseは、基本的にはよく知られているSQL ServerのAzure実装であるため、ほとんどのスキルはクラウド製品に直接移行します。
  • カスタマイズ性。独自のSQLServerインスタンスを実行する場合は、すべての設定を制御できます。
  • 透明性のある価格設定。料金は、必要なメモリ、コンピューティング、およびストレージリソースに基づいています。
  • 移行。基盤となるエンジンが同じであるため、オンプレミスのSQLServerデータベースをAzureSQLに比較的簡単に移行できます。
  • 安定性と信頼性。Microsoft SQL Serverは、最初は1989年にリリースされ、それ以来長い道のりを歩んできました。これは、成熟した、安定した、十分にテストされたデータベースエンジンです。

AzureSQLデータベースの短所

  • スキーマを修正しました。一般に、SQLデータベースは、スキーマが固定されているため、頻繁に変更されるソフトウェア要件にはあまり適していません。スキーマの移行は管理が難しい場合があります。SQL Serverは現在JSONデータを処理できますが(したがって、SQLとNoSQLの間のギャップを埋める)、特別な構文が必要であり、少し後付けのように感じます。
  • ACIDは、分散トランザクションを保証します。これらの機能は一部のアプリケーションでは非常に便利ですが、不要な場合はスケーラビリティが大幅に低下します。
  • 限られたスケーリング。スケールアップ(SQL Serverインスタンスにメモリまたはコンピューティングを追加することによる)はパフォーマンスを向上させるための迅速かつ簡単な方法ですが、特定のポイントを超えると非常に高額になる可能性があります。スケールアウト(SQL Serverの複数のインスタンスを追加することによる)は、ほとんどの場合、読み取り専用レプリカに制限されています。

AzureCosmosDBの長所

  • グローバルな配布。今日、多くの企業が世界中で活動しています。顧客は、場所に関係なく、アプリケーションに同じパフォーマンスを期待しています。これにより、標準のSQLデータベースモデルは非常に非効率になります。ソーシャルネットワークフィードやIoTデータストリームなどのタスクには、複数の読み取り専用レプリカを持つ1つの書き込み対応マスターノードを持つだけでは不十分です。
  • 複数の整合性レベル。一方、これらのアプリケーションは通常、従来のデータベースの整合性保証を必要としません。一貫性のあるプレフィックスや結果整合性など、より弱い一貫性モデルに依存する可能性があります。整合性レベルを自由に選択できることは、CosmosDBの主な利点です。
  • 自動インデックスのサポート。すべてのコンテナには、クエリを高速化するために設定されたインデックスポリシーがあります。デフォルトでは、すべてのプロパティにインデックスが付けられ、範囲インデックスが適用されます。ほとんどのユースケースではこれで十分です。ただし、高度なインデックス設定を使用できます。
  • すぐに使用できる複数の言語のサポート。.NET、Java、Python、Ruby、およびJavaScriptで使用できる既製のAPIがあります。複雑なORMレイヤーは必要ありません。
  • 複数のAPI。Cosmos DBは、独自のコアAPIと、他のNoSQLデータベースからの移行を支援する複数の代替データベースAPI(Gremlin API、Cassandra API、MongoDB API、Table API)を提供します。これにより、移行コストと学習曲線が低下します。

AzureCosmosDBの短所

  • 従来のDB管理者にとっては理解が困難です。Cosmos DBはNoSQLデータベースであり、必ずしも強力なACID保証を提供するわけではないため(構成によって異なります)、従来のSQLデータベースの処理に慣れているDB管理者にとっては理解が困難です。
  • SQLServerからの複雑な移行。SQL Serverベースのソリューションからの移行は非常にコストがかかることが判明する場合があり、極端な場合には、アプリケーションの主要部分を書き直す必要がある場合があります。その後の最適化には、さらに時間がかかります。グローバルスケーリングのメリットが努力を上回っている場合にのみ、これを行うことをお勧めします。
  • 理解しにくい価格設定モデル。価格設定モデルは、直感的でない可能性のあるリクエストユニットに基づいています。ポータルのCosmosDBCapacity Calculatorは、特定の主要なメトリックを見積もることができれば、コストの見積もりに役立つ場合があります。一般に、CosmosDBは非常に高価な場合があります。
  • パブリッククラウドのみ。Cosmos DBが展開される唯一の場所は、Microsoftのデータセンターです。現在、AzureArcなどのハイブリッドまたはオンプレミスのクラウドソリューションは提供されていません。

結論

どちらの製品も、Azureエコシステムに組み込まれています。Azure SQL Databaseは、オンプレミスのSQL Serverソリューションからの移行を容易にし、既存のSQL Serverの知識を活用するのに役立ちますが、Cosmos DBは、グローバルな配布用にゼロから設計され、完全に管理されています。

新しいプロジェクトに使用するデータベースを決定する必要がある場合は、Cosmos DBを使用します。これは、そのスケーラビリティと柔軟性が大好きだからです。NoSQLサービスとして、データベースとの対話は、従来のデータベースに必要な複雑なORMミドルウェアで作業するよりも、アプリケーションコードでより自然に感じられます。さらに、複数の整合性レベルを選択すると、速度と整合性の間の適切なバランスを非常に簡単に選択できます。

Cosmos DBに関する私の主な関心事は、従来のSQLデータベースの処理に慣れている管理者にとっての急な学習曲線です。最初のCosmosDBデータベースをセットアップするのは大変なことです。特定の要件を満たすようにサービスを設定する方法を理解するには、多くのドキュメントを読むか、多くのチュートリアルを見る必要があります。

ただし、採用率が上がるにつれて、時間の経過とともに改善されると思います。Cosmos DBは短期間ですでに長い道のりを歩んでおり、次の方向性を見るのが待ちきれません。

ソース:https ://betterprogramming.pub/azure-sql-database-vs-cosmos-db-which-should-you-choose-cda17b60d6d2

#cosmosdb #azure #sql