Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
18
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.1k
Featured
See All Featured
Music & Morning Musume
bryan
46
6.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Building Adaptive Systems
keathley
43
2.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Side Projects
sachag
455
43k
Producing Creativity
orderedlist
PRO
346
40k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
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?