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 |
変換したデータは永続化されるので、それを適切に更新することがよくある。データ更新はデータエンジニアにとって一番難しい問題で、とりわけデータ技術をまたがる際に問題となる。ここでは全勝で紹介したSQLでのDMLを対象として話す。
この本では何度か言及してきたが、もともとのデータレイクのコンセプトにおいてはデータ更新について考えてはこなかった。これは今は馬鹿げたものにみえるかもしれない。データの更新はbig dataのコミュニティが無視していたとしても、重要な課題であり続けた。更新機能がないからといって、大量のジョブを再実行することはばかげている。そんなわけでデータレイクハウスの考えは更新機能の上に成り立っている。またGDPRやデータ削除の基準では組織に対して、生のデータセット含め、データマートからのデータも削除することを求める
これからいくつかのデータ更新のパターンを見ていこう
Truncateは何も更新しない更新パターンである。これにおいては単に古いデータを消す。Truncate and reload パターンではテーブルはクリアされ、変換された新しいデータがロードされ、新しいバージョンのテーブルが作成される。