Slide 1

Slide 1 text

DynamoDB Global Tables MRSC・ pgvector 0.8.0・caching_sha2_password 関連アップデート JAWS-UG 横浜 #79 AWS re:Invent 2024 re:Cap Database 2025/1/11 まつひさ(hmatsu47)

Slide 2

Slide 2 text

自己紹介 松久裕保(@hmatsu47) ● https://qiita.com/hmatsu47 ● Web インフラのお守り係をしています ● 普段は JAWS-UG 名古屋(・浜松)で DB ネタを中心 に話しています(主に RDS / Aurora・たまに DynamoDB) 2

Slide 3

Slide 3 text

取り上げるアップデート ● DynamoDB Global Tables がマルチリージョンの強い 整合性(MRSC)をサポート(プレビュー) ● RDS for PostgreSQL が pgvector 0.8.0 をサポート ● RDS for MySQL 8.4 LTS 提供開始 ● RDS Proxy が caching_sha2_password 認証をサポート (Aurora MySQL / RDS for MySQL) 3

Slide 4

Slide 4 text

Aurora DSQL については? ● 昨年末の名古屋での Recap ✖ 2 で触れたので今回はパス ○ Aurora DSQL と楽観的同時実行制御(OCC) https://www.docswell.com/s/hmatsu47/53GJ4P-2024-12-25-014945 ○ RDS/Aurora アップデート(2024 年版) https://www.docswell.com/s/hmatsu47/5MXQRL-2024-12-27-003032 4

Slide 5

Slide 5 text

[1] DynamoDB Global Tables MRSC(プレビュー) ● 12/3 に発表 ○ https://aws.amazon.com/jp/about-aws/whats-new/2024/12/amazon-dyna modb-global-tables-previews-multi-region-strong-consistency/ ● リージョン間のデータレプリケーション自体は非同期 ○ Multi-Regional Journal(MRJ)によって厳密な順序で記録 ○ ハートビートを使うことで読み取り時の整合性を保証 5

Slide 6

Slide 6 text

設定してみる(1/2) 参考 : https://dev.classmethod.jp/articles/amazon-dynamodb-global-tables-previews-multi-region-strong-consistency/ 6

Slide 7

Slide 7 text

設定してみる(2/2) ● DynamoDB Streams を使っている 参考 : https://dev.classmethod.jp/articles/amazon-dynamodb-global-tables-previews-multi-region-strong-consistency/ 7

Slide 8

Slide 8 text

書き込み時 出典 : https://zenn.dev/kiiwami/articles/8a1cd54b61115c20 8 最初のリージョンで書き 込む→ MRJ に記録後、 MRJ を経由して他の 2 リージョンに複製 最初のリージョンも含めて MRJ からコールバックを受け取る 各リージョンでコールバックを 受け取り、2 つの AZ に書き込む と「書き込み完了」に 3 つ目の AZ へは遅延書き込み可

Slide 9

Slide 9 text

読み取り時 出典 : https://zenn.dev/kiiwami/articles/8a1cd54b61115c20 9 MRJ に対して ハートビートを送る そのハートビートの直前までに ログに記録されているデータが 読み取り対象のデータとなる リージョンから MRJ に送信した ハートビートがコールバックさ れた=読み取り対象の全データ がリージョンに書き込み完了し 整合性が保証された状態

Slide 10

Slide 10 text

[2] pgvector 0.8.0 サポート(RDS for PostgreSQL) ● 11/21 に発表(re:Invent 2024 前) ○ https://aws.amazon.com/jp/about-aws/whats-new/2024/11/amazon-rds-fo r-postgresql-pgvector-080/ ● 反復インデックススキャンをサポート ○ HNSW / IVFFlat インデックスと WHERE 句での非ベクトル列の 絞り込みを併用する際のデータ取りこぼしを回避 10

Slide 11

Slide 11 text

pgvector 0.7.x の HNSW インデックスでは 出典 : https://www.timescale.com/blog/how-we-made-postgresql-as-fast-as-pinecone-for-vector-data 11 hnsw.ef_search=5 のときに、右図のように HNSW インデックスで検索した上位 5 件の department 列がすべて finance だった場合 WHERE 句で department = ‘engineering’ の絞り込みを行う 前に HNSW インデックスでの絞り込みが行われ、上位 5 件ま で絞り込んだ時点でインデックス検索を終了してしまうため (上位 5 件すべて department = ‘finance’)、結果が 0 件に なってしまう

Slide 12

Slide 12 text

pgvector 0.8.0 の HNSW インデックスでは (先の図を改変) 12 最初の検索で結果の数が不足した場合、閾値 に達するまで反復して HNSW インデックスを 検索する 2 回目の検索で続きの 5 件を取得するため、department = ‘engineering’ の行が取得できる hnsw.iterative_scan・hnsw.max_scan_tuples・hnsw.scan _mem_multiplier で動作を調整する 一方、HNSW インデックスはメモリ内に収ま らないと作成も検索も非常に遅くなる pgvector 0.8.0 では DiskANN 系のインデックスには非対応 RDS でも StreamingDiskANN インデックスをサポートした pgvectorscale に対応してほしい

Slide 13

Slide 13 text

2/1(土)Burikaigi2025(富山県立大)にて ● pgvector を含むベクトルストアの基礎について話します ○ https://fortee.jp/burikaigi-2025/proposal/473ffcda-c642-4fb6-bced-199ca7 16c741 ○ https://burikaigi.dev/ 13

Slide 14

Slide 14 text

[3] RDS for MySQL 8.4 LTS 提供開始 ● 11/21 に発表(re:Invent 2024 前) ○ https://aws.amazon.com/jp/about-aws/whats-new/2024/11/amazon-rds-fo r-mysql-8-4-lts-release/ ● デフォルトの認証プラグインが変更された ○ caching_sha2_password に ■ 本家は MySQL 8.0 の時点でデフォルトが変更されていたが、RDS(8.0) / Aurora(v3)では mysql_native_password のままだった(変更もできず) 14

Slide 15

Slide 15 text

DB パラメータグループを見てみる(1/2) ● デフォルト認証プラグインは変更可能に 15

Slide 16

Slide 16 text

DB パラメータグループを見てみる(2/2) ● 旧プラグインは無効化はできない仕様に ○ 本家 MySQL 8.4 ではデフォルト無効 16

Slide 17

Slide 17 text

[3’] RDS Proxy が caching_sha2_password 対応 ● 12/19 に発表(re:Invent 2024 後) ○ https://aws.amazon.com/jp/about-aws/whats-new/2024/12/amazon-rds-pr oxy-sha2-password-authentication-mysql-aurora-rds/ ● これまでは mysql_native_password しか使えず ○ 以前も RDS(8.0) / Aurora(v3)で明示的な選択・指定により caching_sha2_password 認証を使うユーザーを作成できたが、 RDS Proxy では使えなかった 17

Slide 18

Slide 18 text

2/22(土)PHP カンファレンス名古屋 2025 にて ● MySQL 8.4 以降との付き合い方について話します ○ https://fortee.jp/phpcon-nagoya-2025/proposal/1decff64-5513-442b-848b -28d798b1fa8b ○ https://phpcon.nagoya/2025/ 18