Microsoft DP-420(Azure Cosmos DB Developer Specialty) 1-10

表示モード
画像位置
文字位置
理解度の自動記録
STATUS FILTER

表示する理解度を選択

読み込み中...
Q1DP-420
列名 データの種類 データの長さ(バイト)
車のブランド 文字列 30
車のモデル 文字列 30
モデル年 整数 4
部品名 文字列 50
部品の説明 文字列 500
保管場所 文字列 50
車のブランド 車のモデル モデル年 部品名 保管場所 部品の説明
フォード エスコート 1999 ドアハンドル 棚5、ビン3 説明1
フォード エスコート 2000 ドアハンドル 棚5、ビン5 説明2
フォード エスコート 2001 ドアハンドル 棚32、ビン17 説明3
フォード エスケープ 1999 ドアハンドル 棚43、ビン12 説明4
シボレー ベイサー 1975 ドアハンドル 棚19、ビン12 説明5
シボレー ボルト 2024 トランクリリース 棚20、ビン17 説明6
物理パーティションキー

論理パーティションキー

解答を見る
正解:モデル年式/車種

モデル年式は提示データで5種類の異なる値を持ち、ブランドや部品名よりカーディナリティが高いため、書き込みを広く分散でき、I/O競合やホットパーティションの発生を抑えられます。
このため物理パーティションキーにはモデル年式が適しています。
論理パーティションキーに車種を選ぶと、同じモデル年式のデータを車種単位でさらに細分化でき、モデル年式と車種の組み合わせは提示データで一意になります。
Azure Cosmos DBでは論理パーティションがパーティションキー値で形成され、物理パーティションへの配置はサービスが自動的に管理します。
そのため、データと要求を均等に分散できるキーを選ぶことが重要です。
Azure Cosmos DBでのパーティション分割と水平方向のスケーリング

Q2DP-420
解答を見る
正解:D. プリトリガー

プリトリガーはデータベース項目が変更される前に実行されるため、削除処理が行われる前にJavaScriptで例外をスローし、操作を中止してApp1へエラーを返せます。
ポストトリガーは変更後に実行され、UDFは主にクエリ内の計算に使われるため、この用途には適しません。
トリガーは自動実行されないため、App1の削除要求時にプリトリガーを明示的に指定する必要があります。
なお、問題文の「ドキュメント」は、現在のMicrosoft公式資料では主に「項目(item)」と表記されます。
Azure Cosmos DB でストアド プロシージャ、トリガー、およびユーザー定義関数を記述する方法

Q3DP-420
シナリオ1

シナリオ2

解答を見る
正解:増分モードでARMテンプレートを2回デプロイする/Azure PowerShell

リージョンの追加・削除と、その他のプロパティ変更は同一のデプロイで同時に実行できません。
そのためシナリオ1では、読み取りリージョンの追加とRU/sの増加を2回の増分デプロイに分割します。
増分モードなら、テンプレートに含まれない既存リソースが削除されません。
手動スループットから自動スケーリングへの移行はPOST操作であり、ARMテンプレートではサポートされないため、シナリオ2ではAzure PowerShellを使用します。
Azure Resource Manager テンプレートを使用して Azure Cosmos DB for NoSQL リソースを管理する
Azure Resource Manager のデプロイ モード

Q4DP-420
解答を見る
正解:A. “connector.class”: “com.azure.cosmos.kafka.connect.source.CosmosDBSourceConnector”、C. “key.converter”: “io.confluent.connect.avro.AvroConverter”、D. “connect.cosmos.containers.topicmap”: “iot#telemetry”

Cosmos DBからKafkaへデータを送信するため、CosmosDBSourceConnectorを使用します。
Sinkコネクターは逆に、KafkaからCosmos DBへデータを書き込む際に使用します。
コンパクトなバイナリ形式にはAVROを用いるため、AvroConverterが必要です。
また、topicmapは「Kafkaトピック名#Cosmos DBコンテナー名」の形式となるため、iot#telemetryと設定します。
実際の構成では、データ本体に対するvalue.converterやスキーマレジストリの設定も確認が必要です。
Azure Cosmos DB用Kafka Connect
Kafka Connect for Azure Cosmos DB – ソース コネクタ

Q5DP-420
解答を見る
正解:A. 各注文の注文明細を、その注文と同じコンテナー内に埋め込みます。

注文と注文明細を常に一緒に読み取る場合は、注文明細を配列として注文のJSON項目内に埋め込む非正規化設計が適しています。
注文全体を1回のポイント読み取りで取得でき、複数項目へのクエリや複数回の読み取りが不要になるため、待機時間とRU消費を抑えられます。
別コンテナーや別項目へ分割すると、追加の要求や結合処理が発生します。
Azure Cosmos DB for NoSQLは現行の正式名称で、旧称のSQL APIから変更されています。
Azure Cosmos DB for NoSQL でのデータ モデリング
Azure Cosmos DB での要求コストを最適化する

Q6DP-420
解答を見る
正解:B. カーディナリティが高い、D. 静的である

カーディナリティが高いキーは、多数の異なる値によって項目を細かい論理パーティションへ分散できるため、各パーティションのサイズを小さく保ちやすくなります。
カーディナリティが低いと、多くの項目が同じキー値に集中する恐れがあります。
静的なキーは値が変化しないため、変更に伴う項目の削除・再作成を避け、メンテナンス作業を抑えられます。
Azure Cosmos DBでは、作成済み項目のパーティションキー値をその場で変更することはできません。
Azure Cosmos DBでのパーティション分割と水平方向のスケーリング

Q7DP-420
解答を見る
正解:D. | where OperationName startswith “SqlContainersThroughputUpdate”

Azure Cosmos DB for NoSQLコンテナーのスループット変更は、OperationNameが「SqlContainersThroughputUpdate」で始まるコントロールプレーン操作として記録されます。
したがって、Dを追加すればRU/sが変更された日時を抽出できます。
RegionAddCompleteはリージョン追加、SqlContainersCreateはコンテナー作成、MongoCollectionsThroughputUpdateはMongoDB用APIのコレクションに対するスループット変更を表します。
AzureDiagnosticsは現在レガシモードの共通テーブルであり、新しい構成ではリソース固有テーブルも選択できますが、このクエリではAzureDiagnosticsを使用します。
Azure Cosmos DB コントロール プレーン操作を監査する方法
Azure Cosmos DB を監視する

Q8DP-420
解答を見る
正解:A. はい

最初のJOINでchildren配列の各要素が展開され、c.familyNameから子どもの姓を取得できます。
続く複数値サブクエリは、各子どものpets配列をtypeがcatである要素だけに絞り込み、そのgivenNameをpetNameとして返します。
その結果、f.id、子どもの姓、猫の名前という要求された項目を取得できるため、目標を満たします。
現在の公式資料でも、配列内の自己結合とJOIN前に配列を絞り込む複数値サブクエリがサポートされています。
サブクエリ – Cosmos DB のクエリ言語 (Azure と Fabric)
自己結合 – Cosmos DB のクエリ言語 (Azure と Fabric)

Q9DP-420
解答を見る
正解:B. Azure Data Factory

Azure Data Factoryのコピーアクティビティでは、RESTコネクターをソースとしてREST APIからデータを取得し、Azure Cosmos DB for NoSQLコネクターをシンクとしてコンテナーへ書き込めます。
また、スケジュールトリガーで繰り返し間隔を設定できるため、パイプラインを毎週自動実行できます。
Azure Migrateは主にサーバーなどのAzureへの移行に使用し、Database Migration AssistantはSQL Server系の評価や移行を目的とするため、定期的なREST連携には適しません。
Azure Data Factoryを使用して REST エンドポイントとの間でデータをコピーおよび変換する
Azure Data Factoryを使用してNoSQLのAzure Cosmos DB内のデータをコピーおよび変換する

Q10DP-420
問題文 はい いいえ
テンプレートをデプロイすると、acct01という名前のAzure Cosmos DBアカウントが存在しない場合に、そのアカウントが作成される。
テンプレートをデプロイすると、mydb内にmycontainerという名前のコンテナーが存在しない場合に、そのコンテナーが作成される。
テンプレートをデプロイすると、mycontainerが存在しパーティションキーがnameである場合に、そのパーティションキーがcompanyidへ変更される。
解答を見る
正解:1問目「いいえ」/2問目「はい」/3問目「いいえ」

テンプレートにはコンテナーの子リソースだけが定義されているため、存在しないacct01アカウントやmydbデータベースは自動的には作成されません。
親リソースが既に存在していれば、増分デプロイによって未作成のmycontainerは作成されます。
既存コンテナーのパーティションキーは/nameから/companyidへ直接変更できず、別のパーティションキーを使うには新しいコンテナーへのデータ移行が必要です。
Microsoft.DocumentDBは現在もAzure Cosmos DBで使用される正式なリソースプロバイダー名前空間です。
Microsoft.DocumentDB データベースアカウント/sqlデータベース/コンテナ
子リソースの名前と種類を設定する