SnowPro Advanced: Architect 無料問題 8 / 10 ・ 分野3: Data Engineering
永続の表 SALES_HIST(約2TB)から、開発用に transient の表 DEV_SALES を CREATE TRANSIENT TABLE ... CLONE で作り、DEV_SALES ではまだ一部の行しか書き換えていない。その後 SALES_HIST を DROP TABLE で落とし、Time Travel の保持期間も過ぎた。DEV_SALES と共有していたマイクロパーティションの扱いとして、公式ドキュメントに合うものはどれか。
- 共有していたバイトは SALES_HIST の保持期間が過ぎると Fail-safe に入るが、DEV_SALES の行としては読める
- SALES_HIST の保持期間が過ぎた時点でそのまま Fail-safe に入り、DEV_SALES からは共有していた行が読めなくなる
- DEV_SALES が transient で Fail-safe を持たないので、共有していたバイトは Fail-safe を経ずに消える
- 共有していたバイトは DEV_SALES を消すまで Fail-safe に入らず、その間は DEV_SALES の保存として残り続ける
正解と解説を見る
正解: D
正解の理由
永続の表から transient の表をクローンで作ると、ゼロコピーのクローンになり、作った時点では元の表のマイクロパーティションをすべて共有する。クローンで行を足す・消す・書き換えると、クローンだけのマイクロパーティションができる。公式は、永続の表を消すと7日の Fail-safe に入るが、transient のクローンが永続の表とマイクロパーティションを共有していると、共有しているバイトは transient の表を消したときに初めて Fail-safe に入ると書いている。そのため、DEV_SALES を消すまでは、共有していたバイトは DEV_SALES の保存として残り、Fail-safe に入る時期が遅れる。
違う選択肢
「SALES_HIST の保持期間が過ぎた時点でそのまま Fail-safe に入り、DEV_SALES からは共有していた行が読めなくなる」… 公式は、transient のクローンと共有しているバイトは、transient の表を消したときに Fail-safe に入ると書いている。元の表を落としても、クローンが共有しているバイトは Fail-safe に入らず、クローンから読める。
「DEV_SALES が transient で Fail-safe を持たないので、共有していたバイトは Fail-safe を経ずに消える」… 公式は、共有していたバイトも、transient の表を消したときに Fail-safe に入ると書いている。元の表が永続の表なので、Fail-safe を経ずに消えるのではなく、Fail-safe に入る時期が transient の表を消すまで遅れる。
「共有していたバイトは SALES_HIST の保持期間が過ぎると Fail-safe に入るが、DEV_SALES の行としては読める」… 共有していたバイトが Fail-safe に入るのは、transient の表を消したときである。元の表の保持期間が過ぎた時点で Fail-safe に入るのではない。
押さえどころ
Fail-safe のバイトにも保存の費用がかかる。開発用に永続の表から transient のクローンを作ると、元の表を消しても、その分のバイトの Fail-safe は transient のクローンを消すまで始まらない。費用の見積もりでは、クローンを残す期間も見込む。