Slide 1

Slide 1 text

Oracle Databaseと比較しながら学ぶ 「マイクロパーティション」きほんのき kayo(嘉陽田 千里) / 2024-12-13 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. Snowflale女子会

Slide 2

Slide 2 text

AGENDA © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. 1. 自己紹介 2. Snowflake「マイクロパーティション」を Oracle Databaseと比較する 3. Snowflake「マイクロパーティション」良いところ 4. まとめ

Slide 3

Slide 3 text

自己紹介 【名前】kayo(@tshizuku03) 【主な職歴】 • 2013年9月~:Webサイト開発運用の事業会社 • Oracle Exadata→Oracle Exadataリプレイスなど経験 • 2022年8月~:DB関連Sier • オンプレミスOracle Database→AWS Aurora PostgreSQL(SCT/DMS)などを担当 • 2024年7月~:ちゅらデータ株式会社 • データエンジニア • 既存データ基盤をSnowflakeへ移行というPoC案件を担当 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. ⇐ いまここ★

Slide 4

Slide 4 text

自己紹介 アーキテクチャ クラウド クローン Snowsight マイクロパーティション ストレージ キャッシュ Time Travel © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. Snowflakeに触れるがRDBMS(Oracle Database)との違いに困惑する日々..

Slide 5

Slide 5 text

自己紹介 アーキテクチャ クラウド クローン Snowsight マイクロパーティション ストレージ キャッシュ Time Travel © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. その中で今回は Snowflake「マイクロパーティション」を Oracle Database機能と比較 してみましたのでご紹介します 新しいサービスも、なじみあるサービスと比べて学べば理解度が上がる

Slide 6

Slide 6 text

AGENDA © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. 1. 自己紹介 2. Snowflake「マイクロパーティション」を Oracle Databaseと比較する 3. Snowflake「マイクロパーティション」良いところ 4. まとめ

Slide 7

Slide 7 text

Oracle Database「パーティション・テーブル」 大きなテーブルをデータベース内部で複数の領域に分割して管理する © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. 通常の1つのテーブル パーティション化テーブル

Slide 8

Slide 8 text

Oracle Database「パーティション・テーブル」 CREATE TABLE customer ( costomer_id NUMBER(4) NOT NULL, c_name VARCHAR2(100), salse_date DATE) PARTITION BY RANGE(sales_date)) PARTITION p1 VALUES LESS THAN(TO_DATE(‘ 2024/09/01 ','YYYY/MM/DD’)) TABLESPACE Q9, PARTITION p2 VALUES LESS THAN(TO_DATE(‘ 2024/10/01 ','YYYY/MM/DD')) TABLESPACE Q10, PARTITION p3 VALUES LESS THAN(TO_DATE(‘ 2024/11/01 ','YYYY/MM/DD')) TABLESPACE Q11, PARTITION p4 VALUES LESS THAN(TO_DATE(‘ 2024/12/01 ','YYYY/MM/DD')) TABLESPACE Q12); © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. パーティション・テーブル作成例をご紹介 ※EEの有料オプション ※レンジパーティション例

Slide 9

Slide 9 text

OracleDatabase「パーティション・テーブル」 ・・・ PARTITION BY RANGE(sales_date)( PARTITION p1 VALUES LESS THAN(TO_DATE(' 2024/09/01 ','YYYY/MM/DD’)) TABLESPACE Q9, PARTITION p2 VALUES LESS THAN(TO_DATE(‘ 2024/10/01 ','YYYY/MM/DD')) TABLESPACE Q10, PARTITION p3 VALUES LESS THAN(TO_DATE(‘ 2024/11/01 ','YYYY/MM/DD')) TABLESPACE Q11, PARTITION p4 VALUES LESS THAN(TO_DATE(‘ 2024/12/01 ','YYYY/MM/DD')) TABLESPACE Q12); © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. テーブル作成時にパーティションで分割する範囲を指定 キー列を指定 分割範囲を指定 ※EEの有料オプション ※レンジパーティション例

Slide 10

Slide 10 text

一方、Snowflakeの「マイクロパーティション」は・・・? © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL.

Slide 11

Slide 11 text

データを小さい単位で分割して保存してくれる仕組みのこと CUSTOMER_ID C_NAME C_ADRESS C_DATE 50900001 山田 東京都 10/01 50900002 山川 神奈川県 10/01 50900003 鈴木 埼玉県 10/01 50900004 鈴田 群馬県 11/02 50900005 田中 茨城県 11/02 50900006 中里 栃木県 11/02 50900007 佐藤 東京都 12/03 50900008 藤田 神奈川県 12/03 Snowflakeの「マイクロパーティション」 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. ストレージ 分割 圧縮 格納

Slide 12

Slide 12 text

CUSTOMER_ID C_NAME C_ADRESS C_DATE 50900001 山田 東京都 10/01 50900002 山川 神奈川県 10/01 50900003 鈴木 埼玉県 10/01 50900004 鈴田 群馬県 11/02 50900005 田中 茨城県 11/02 50900006 中里 栃木県 11/02 50900007 佐藤 東京都 12/03 50900008 藤田 神奈川県 12/03 Snowflakeの「マイクロパーティション」 データを小さい単位で分割して保存してくれる仕組みのこと © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. 分割 圧縮 格納 ストレージ

Slide 13

Slide 13 text

Snowflakeの「マイクロパーティション」 データが更新されてもマイクロパーティションは「更新」はされず新規で作成 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. ストレージ クラウド サービス tableA tableA

Slide 14

Slide 14 text

Snowflakeの「マイクロパーティション」 入れ替わった過去のマイクロパーティション © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. tableA これは いつまで残る?

Slide 15

Slide 15 text

Snowflakeの「マイクロパーティション」 入れ替わった過去のマイクロパーティションは Enterprise Editionの場合1~90日間保持 ➢Standard Edition ⚫1日間 ➢Enterprise Edition以上 ⚫1~90日間 ⚫DATA_RETENTION_TIME_IN_DAYSで指定 ➢Fail-Safe ⚫Time Travel保持期間終了後7日間 ⚫要サポート連絡 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. tableA

Slide 16

Slide 16 text

Oracle Database「パーティションテーブル」 = データベース内部で複数領域に分割したテーブル Snowflake「マイクロマーティション」 = データを分割して格納する仕組み © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL.

Slide 17

Slide 17 text

Snowflake「マイクロパーティション」と Oracle Database「パーティションテーブル」の比較 「仕組み」と「テーブル」で異なるがパーティション・プルーニングのみ類似 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. Snowflake「マイクロパーティション」 Oracle Database「パーティションテーブル」 概念 データを分割・圧縮・格納する仕組み 分割キー(列)を指定してデータベース内部で複数 の領域に分割したテーブル パーティション・ プルーニング 参照したいデータ以外のファイルを読み 飛ばしてパフォーマンス向上を図る 参照したいデータがあるテーブルのみアクセス してパフォーマンス向上を図る 管理作業 表領域という概念はなくTime Travel/Failsageがバックアップとしても機 能している 各パーティション毎に表領域を配置することで 個別にバックアップ/リカバリが可能 ※表領域の説明は後術 可用性 クラウドプロバイダのオブジェクトスト レージに配置され可用性を担保 パーティション単位で障害の影響を限定

Slide 18

Slide 18 text

CUSTOMER_ID C_NAME C_ADRESS C_DATE 50900001 山田 東京都 10/01 50900002 山川 神奈川県 10/01 50900003 鈴木 埼玉県 10/01 50900004 鈴田 群馬県 11/02 50900005 田中 茨城県 11/02 50900006 中里 栃木県 11/02 50900007 佐藤 東京都 12/03 50900008 藤田 神奈川県 12/03 【再掲】Snowflakeの「マイクロパーティション」 データを小さい単位で分割して保存してくれる仕組みのこと © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. ストレージ 分割 圧縮 格納

Slide 19

Slide 19 text

CUSTOMER_ID C_NAME C_ADRESS C_DATE 50900001 山田 東京都 10/01 50900002 山川 神奈川県 10/01 50900003 鈴木 埼玉県 10/01 50900004 鈴田 群馬県 11/02 50900005 田中 茨城県 11/02 50900006 中里 栃木県 11/02 50900007 佐藤 東京都 12/03 50900008 藤田 神奈川県 12/03 Snowflakeの「マイクロパーティション」 実際に小分けにされた一つ一つのものはファイル © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. ストレージ 分割 圧縮 格納

Slide 20

Slide 20 text

Oracle Databaseにも 実際に小分けにされた一つ一つのものがある © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL.

Slide 21

Slide 21 text

Oracle Databaseは、データの最小単位をデータブロックという 表領域とは、複数のセグメント(テーブル、索引)を格納する領域のこと Oracle Database「データブロック」 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. 表領域 セグメント エクステント データブロック テーブル

Slide 22

Slide 22 text

Snowflake「マイクロパーティション」のファイルと Oracle Database「データブロック」の比較 どちらも実データを格納する入れ物 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. Snowflake「マイクロパーティション」ファイル Oracle Database「データブロック」 指向タイプ 列指向 行指向 圧縮タイプ 圧縮 非圧縮 サイズ 50~500MB(圧縮して16MB) テーブル作成時に指定(デフォルト8KB) 更新状態 不変(immutable)で 更新時に新規マイクロパーティション作成 同じデータブロックが何度も更新

Slide 23

Slide 23 text

AGENDA © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. 1. 自己紹介 2. Snowflake「マイクロパーティション」を Oracle Databaseと比較する 3. Snowflake「マイクロパーティション」良いところ 4. まとめ

Slide 24

Slide 24 text

今回は 「Time Travel」と「ゼロコピークローン」について Oracle Databaseと比較しながらご紹介します © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL.

Slide 25

Slide 25 text

まずは、 Snowflake「Time Travel」と Oracle Database「Flashback機能」の比較 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL.

Slide 26

Slide 26 text

Snowflake「Time Travel」について Time Travelは、ある時点のテーブルを再現できる機能 SELECT * FROM tableA AT (TIMESTAMP => ‘2024-10-01 12:00:00'); © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. ストレージ クラウド サービス tableA tableA

Slide 27

Slide 27 text

OracleDatabase「Flashback Query」について Oracle Databaseにもある時点のテーブルを再現できる機能がある SELECT * FROM tableA AS OF TIMESTAMP TO_TIMESTAMP(‘2024-10-01 12:00:00', 'yyyy-mm-dd hh:mi:ss’); © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL.

Slide 28

Slide 28 text

Oracle Database「Flashback機能」 カテゴリ 機能名 機能概要 リカバリ FlashbackDatabase DB全体を過去時点に戻す FlashbackTable テーブルのデータを過去時点に戻す FlashbackDrop 削除したテーブルを元に戻す 開発機能 FlashbackQuery 指定した過去時点のデータを参照 FlashbackVersionQuery 指定された2点間でのすべての変更データを表示 FlashbackTransactionQuery トランザクションの変更を戻すためのSQL文を表示 FlashbackTransaction トランザクションのロールバックを実行 FlashbackDataArchive テーブルに対する全てのトランザクションによる変更を追跡/格納 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. 他にもたくさんの機能があるけど 省略

Slide 29

Slide 29 text

Oracle Database「Flashback Query」と Snowflake「Time Travel」の比較 どちらも誤って削除されたデータの復元可能だが、戻れる期間が異なる © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. Snowflake「Time Travel」 OracleDatabase「Flashback Query」 機能内容 マイクロパーティションが不変(immutable)で あることを利用して過去データを参照 UNDO領域にINSERT/UPDATE/DELETEの更 新履歴を保存 そのUNDO領域を利用して過去データを 参照 いつまで戻れるか SE:1日 EE:1~90日 UNDO保存期間 ※保存期間、表領域サイズ、保存保障に依存 指定方法 1. TIMESTAMP 2. OFFSET(現在時刻との時差) 3. STATEMENT(queryID) 1. TIMESTAMP 2. INTERVAL(現在時刻との時差) 3. SCN(System Change Number)

Slide 30

Slide 30 text

続いて、 Snowflake「ゼロコピークローン」と Oracle Database「?」を比較 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL.

Slide 31

Slide 31 text

物理的なファイルコピーをせず全体をコピーする機能 CREATE TABLE tableB CLONE tableA; Snowflake「ゼロコピークローン」について © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. ストレージ クラウド サービス tableA tableA tableB

Slide 32

Slide 32 text

元テーブルとゼロコピークローンで複製されたテーブルはお互いに影響なし Snowflake「ゼロコピークローン」について © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. ストレージ クラウド サービス tableA tableA tableB

Slide 33

Slide 33 text

Snowflake「ゼロコピークローン」について ゼロコピークローンでテーブルコピーしてもストレージは0!? ゼロコピークローン実行 CREATE TABLE snowflake_wmn.wmn_schema.customer_clone CLONE snowflake_wmn.wmn_schema.customer; © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. クローン先 クローン元

Slide 34

Slide 34 text

Snowflake「ゼロコピークローン」について ゼロコピークローンでテーブルコピーしてもストレージは0!! TABLE_STARAGE_METRICSのACTIVE_BYTESを確認 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL.

Slide 35

Slide 35 text

一方、Oracle Databaseの類似機能は・・・ ? © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL.

Slide 36

Slide 36 text

Snowflake「ゼロコピークローン」と類似する Oracle Database機能は・・・ 物理的なコピーをせずメタデータだけクローンする機能はなし © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. 機能名 機能概要 Oracle Multitenant (Pluggable Databases) プラガブルデータベース(PDB)をクローンする機能あり ゼロコピークローンほどの即時性、ストレージ効果はなし RMAN(Recovery Manager) Duplicate バックアップ機能の一つにDB複製機能あり

Slide 37

Slide 37 text

AGENDA © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. 1. 自己紹介 2. Snowflake「マイクロパーティション」を Oracle Databaseと比較する 3. Snowflake「マイクロパーティション」良いところ 4. まとめ

Slide 38

Slide 38 text

まとめ ➢Snowflake「マイクロパーティション」と Oracle Databaseの「パーティション」は 「仕組み」と「テーブル」で異なるがパーティション・プルーニングのみ類似 ➢Snowflake「Time Travel」 は Oracle「Flashback Query」と類似するが 戻れる期間は異なる ➢Snowflale「ゼロコピークローン」のように物理コピーをしない機能は Oracle Databaseには類似機能なし © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. 新しいサービスも、なじみあるサービスと比べて学べば理解度が上がる

Slide 39

Slide 39 text

ご清聴ありがとうございました © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL.