in place 適切に

significant: 大量

targeted fashion: raw datasetと対になっている。rawの対なのでデータマートのデータと解釈するのがよい?fashinを流行や流儀と訳すと意味が取りにくい

come at a cost 高くつく

innards 内部、内蔵

前提

Updateの対象がのデータって何を指してる?ってなり少し読む際にややこしいかも

特に記載がなければUpdateの対象はテーブル全体であって、いわゆるSQLのレコードのupdateを指しているわけではない。(後半でin-place updateとしてレコードにupdateは出てくるけど)

この章で考えているようなケース: システムのDBのユーザーテーブルを変換してデータレイクに最新ユーザー情報のテーブルを置くことを考える

graph TD
  システムのユーザーテーブル -->|Transformation| データレイクのユーザーテーブル

ここのシステムのユーザーテーブルは巨大で数千万のレコードがあるとする。データ更新(データレイクのユーザーテーブルを更新)する際にデータレイクのユーザーテーブルを全洗い替えするのは負荷が大きい。そのため変更があったユーザーレコードだけ更新したりなど、いろいろな手段で対策することを考える。

対となる概念

列指向(カラムナ) 行指向(row oriented)
DWH 通常のRDB
BigQuery, Redshift, snowflake… MySQL, PostgresSQL
OLAP OLTP

Update Patterns

変換したデータは永続化されるので、それを適切に更新することがよくある。データ更新はデータエンジニアにとって一番難しい問題で、とりわけデータ技術をまたがる際に問題となる。ここでは全勝で紹介したSQLでのDMLを対象として話す。

この本では何度か言及してきたが、もともとのデータレイクのコンセプトにおいてはデータ更新について考えてはこなかった。これは今は馬鹿げたものにみえるかもしれない。データの更新はbig dataのコミュニティが無視していたとしても、重要な課題であり続けた。更新機能がないからといって、大量のジョブを再実行することはばかげている。そんなわけでデータレイクハウスの考えは更新機能の上に成り立っている。またGDPRやデータ削除の基準では組織に対して、生のデータセット含め、データマートからのデータも削除することを求める

これからいくつかのデータ更新のパターンを見ていこう

Truncate and reload

Truncateは何も更新しない更新パターンである。これにおいては単に古いデータを消す。Truncate and reload パターンではテーブルはクリアされ、変換された新しいデータがロードされ、新しいバージョンのテーブルが作成される。