604 Views
January 11, 25
スライド概要
JAWS-UG 横浜 #79 AWS re:Invent 2024 re:Cap Database 2025/1/11
Qiita や Zenn でいろいろ書いてます。 https://qiita.com/hmatsu47 https://zenn.dev/hmatsu47 MySQL 8.0 の薄い本 : https://github.com/hmatsu47/mysql80_no_usui_hon Aurora MySQL v1 → v3 移行計画 : https://zenn.dev/hmatsu47/books/aurora-mysql3-plan-book https://speakerdeck.com/hmatsu47
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)
自己紹介 松久裕保(@hmatsu47) ● https://qiita.com/hmatsu47 ● Web インフラのお守り係をしています ● 普段は JAWS-UG 名古屋(・浜松)で DB ネタを中心 に話しています(主に RDS / Aurora・たまに DynamoDB) 2
取り上げるアップデート ● 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
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
[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
設定してみる(1/2) 参考 : https://dev.classmethod.jp/articles/amazon-dynamodb-global-tables-previews-multi-region-strong-consistency/ 6
設定してみる(2/2) ● DynamoDB Streams を使っている 参考 : https://dev.classmethod.jp/articles/amazon-dynamodb-global-tables-previews-multi-region-strong-consistency/ 7
書き込み時 最初のリージョンで書き 込む→ MRJ に記録後、 MRJ を経由して他の 2 リージョンに複製 最初のリージョンも含めて MRJ からコールバックを受け取る 各リージョンでコールバックを 受け取り、2 つの AZ に書き込む と「書き込み完了」に 3 つ目の AZ へは遅延書き込み可 出典 : https://zenn.dev/kiiwami/articles/8a1cd54b61115c20 8
読み取り時 MRJ に対して ハートビートを送る そのハートビートの直前までに ログに記録されているデータが 読み取り対象のデータとなる リージョンから MRJ に送信した ハートビートがコールバックさ れた=読み取り対象の全データ がリージョンに書き込み完了し 整合性が保証された状態 出典 : https://zenn.dev/kiiwami/articles/8a1cd54b61115c20 9
[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
pgvector 0.7.x の HNSW インデックスでは hnsw.ef_search=5 のときに、右図のように HNSW インデックスで検索した上位 5 件の department 列がすべて finance だった場合 WHERE 句で department = ‘engineering’ の絞り込みを行う 前に HNSW インデックスでの絞り込みが行われ、上位 5 件ま で絞り込んだ時点でインデックス検索を終了してしまうため (上位 5 件すべて department = ‘finance’)、結果が 0 件に なってしまう 出典 : https://www.timescale.com/blog/how-we-made-postgresql-as-fast-as-pinecone-for-vector-data 11
pgvector 0.8.0 の HNSW インデックスでは 最初の検索で結果の数が不足した場合、閾値 に達するまで反復して 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 に対応してほしい (先の図を改変) 12
2/1(土)Burikaigi2025(富山県立大)にて ● pgvector を含むベクトルストアの基礎について話します ○ https://fortee.jp/burikaigi-2025/proposal/473ffcda-c642-4fb6-bced-199ca7 16c741 ○ https://burikaigi.dev/ 13
[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
DB パラメータグループを見てみる(1/2) ● デフォルト認証プラグインは変更可能に 15
DB パラメータグループを見てみる(2/2) ● 旧プラグインは無効化はできない仕様に ○ 本家 MySQL 8.4 ではデフォルト無効 16
[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
2/22(土)PHP カンファレンス名古屋 2025 にて ● MySQL 8.4 以降との付き合い方について話します ○ https://fortee.jp/phpcon-nagoya-2025/proposal/1decff64-5513-442b-848b -28d798b1fa8b ○ https://phpcon.nagoya/2025/ 18