Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20221022-Kaigi_on_Rails_LT.pdf
Search
negocia, Inc.
November 01, 2022
0
19
20221022-Kaigi_on_Rails_LT.pdf
negocia, Inc.
November 01, 2022
Tweet
Share
More Decks by negocia, Inc.
See All by negocia, Inc.
negocia株式会社_中途採用向け説明資料/2022.12
negocia
0
3.2k
Featured
See All Featured
Believing is Seeing
oripsolob
0
10
Crafting Experiences
bethany
0
19
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Speed Design
sergeychernyshev
33
1.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
60
37k
Building an army of robots
kneath
306
46k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Test your architecture with Archunit
thirion
1
2.1k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
110
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
110
Transcript
Realize marketing that works with tech Copyright © negocia 数億レコードあるテーブルのDBマイグレーション
negocia株式会社 Kaigi on Rails スポンサーブース 2022年10月22日
Copyright © negocia corporate philosophy|2 pp self • id: kunitoo
• name: Kunihiko Ito • livein: Toyama • role: programmer and scrum master
None
Copyright © negocia corporate philosophy|4 Vision/Mission 「うれしい広告」 の実現へ バナー広告や動画広告などのデジタル広告は、時に「煩 わしい」「鬱陶しい」存在として語られることが多々あ
ります。 広告自体は決して悪ではなく、個人の嗜好やコンディ ションに即したものが表示されれば、それは新たな 気づきとなる存在であるはずです。 我々はAIを中心としたテクノロジーを駆使し、最適化 を究極まで追求。受け手が必要だと思う広告のみが届く 世界を実現することで、広告との出会いを良い体験に変 化させる、そのようなプロダクト提供を実現していきま す。 OUR VISION.
Copyright © negocia corporate philosophy|5 Vision/Mission Now Vision 「広告って鬱陶しい」と思われる世界観から、 「こんないい商品あるんだ!」「こんな便利なサービスあったんだ!」と
消費者が広告を有益な情報源として活用するのが 当たり前の世界観への変容を「うれしい広告」と表現しています。 AD AD うれしい広告とは?
Copyright © negocia corporate philosophy|6 Commerce Flow 国内初、Amazon広告に特化した AI広告運用ツールです。 AIが業務の自動化や広告効果の向上を
サポートします。 Commerce Flow コマースフロー ※2020年10月1日現在 ※ 1. AIによる広告運用業務自動化(工数削減) 2. AIによる広告の最適化(広告効果向上) 3. 広告運用のプロに向けた、洗練されたUI (使いやすさ)
Copyright © negocia corporate philosophy|7 やりたいこと • DB: Amazon Aurora
MySQL • table: daily_keywords(広告の実績値) ◦ レコード数は数億 • db:migrate でカラムの追加、削除、index 追加を実施したい • 実施すると数時間(数日?)実行が完了しない • 具体的にはbidding_price(入札額)を保存しているカラムを削除した かった ◦ チームがドメイン知識を獲得したことにより、このテーブルにこの 情報があるのはデータのライフサイクルとして間違っていること に気付いたため
Copyright © negocia corporate philosophy|8 DDL による影響 まったく影響のないもの(一瞬で終わる) • index
の削除 • index 名の変更 • カラム名の変更 • テーブル名の変更 オンラインで実行でき、更新をブロックしないもの データ量に応じて実行時間が長くなる可能性があり、レプリケーション遅延を引き起す可能性があるもの • カラム追加・削除 • カラム の NULL 可・不可の設定 • セカンダリインデックスの追加
Copyright © negocia corporate philosophy|9 移行手順 1. カラムがない前提のアプリケーションをデプロイする 2. 該当テーブル構成から削除したいカラムを除いたテーブルを作成す
る 3. 該当テーブルのレコードを移行後テーブルにコピーするスクリプトを 実行する 4. 旧テーブル名をリネーム、新テーブルを旧テーブル名にリネームす る 5. 旧テーブルのindexを削除する 6. 旧テーブルのデータを削除するスクリプトを実行する 7. 旧テーブルを削除する
Copyright © negocia corporate philosophy|10 まとめ • 数億レコードが入ったテーブルは気がるにマイグレートできない • いくつかのステップを踏む必要がある
• 今回は実績データは定期的に取得し、かつ遡ってサービスから取得 できるため、データの整合性はその取得にたよった • データをコピーしテーブルをリネームすることで新しいテーブルに入 れ替えを行った • 大変だが構造のリファクタリングは大切
Copyright © negocia corporate philosophy|11 We’re Hiring!! 「うれしい広告」の実現へ 検 索
negocia 採用
Any questions?