Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
cocone Teck Talk Vol.4 - 膨大になったDBを何とかする /dealing_huge_db
cocone
October 14, 2021
Programming
0
120
cocone Teck Talk Vol.4 - 膨大になったDBを何とかする /dealing_huge_db
長年運営をしてきた「ポケコロ」のDBに関して、現在の課題とその対応策についてお話します。
cocone
October 14, 2021
Tweet
Share
More Decks by cocone
See All by cocone
cocone corporation(JPN)Letter for Designer
cocone
0
76
cocone corporation(JPN)/Handbook2022
cocone
1
24k
cocone Tech Talk vol.5 - Unity Dotsを使ってみた
cocone
0
170
ココネ会社説明資料2022
cocone
0
37k
cocone corporation(JPN)/Letter to Engineer
cocone
0
520
cocone corporation(JPN)/Letter to Planner
cocone
0
150
cocone Teck Talk Vol.3 - (Unity) 3D表現を豊かに Shader Graphの実践事例
cocone
0
93
cocone Teck Talk Vol.4 - 2021年版 2Dスマホゲームにおける圧縮テクスチャについて
cocone
0
160
cocone Teck Talk Vol.2 -クソコードをシンプルにする
cocone
0
130
Other Decks in Programming
See All in Programming
スモールチームがAmazon Cognitoでコスパよく作るサービス間連携認証
tacke_jp
2
360
iOSアプリの技術選択2022
tattn
6
2.4k
Get Ready for Jakarta EE 10
ivargrimstad
0
2.4k
TechFeed Conference 2022 - Kotlin Experimental
jmatsu
0
770
Kueue入門/Kueue Introduction
bells17
0
510
Is Rust a great language for building Kubernetes ecosystem
deepu105
0
140
Better Reliability through Observability (and Experimentation)
ksatirli
PRO
1
240
How useEvent would change our applications
koba04
1
1.6k
You CANt teach an old dog new tricks
michaelbukachi
0
110
SPA/MPA 議論の俯瞰と 現代における設計のポイント - #tfcon 2022 フロントエンド設計
ahomu
3
1.8k
From Java 11 to 17 and beyond
josepaumard
0
300
コードの解析と言語習得の心得
jinjin33333
0
130
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
261
37k
A Tale of Four Properties
chriscoyier
149
20k
Art, The Web, and Tiny UX
lynnandtonic
280
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
52k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
3
440
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
19
1.4k
Producing Creativity
orderedlist
PRO
333
37k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
15k
Stop Working from a Prison Cell
hatefulcrawdad
261
17k
Fantastic passwords and where to find them - at NoRuKo
philnash
25
1.5k
GitHub's CSS Performance
jonrohan
1020
410k
Intergalactic Javascript Robots from Outer Space
tanoku
261
25k
Transcript
膨大になったDBを何とかする ポケコロサーバー開発 忻 楽鳴
¿名前 忻 楽鳴 ¿社歴 2017年入社して、ポケコロサーバー開発 を担当しております。 その前職はSIerとして、5,6年ぐらい調査 会社のシステム開発をやっていました。大 量データの取り扱いがそこからです。 ¿趣味 ゲーム、寝る
¿出身 上海@中国
まず、現状どうなっている?? mariaDB、mongoDB、redisDBなど、機能によって使い 分けています。問題になっているのは mariaDBです。 左のようにmaster-slave構成となっています。 masterのdisk使用量が92%まで上昇されています。(月 3~4%ぐらい増え続ける) 簡単計算すると何もしないと余命2ヶ月です(笑) 大量データがあって slow
queryも出やすい状態です。 slave遅延がひどくなるとサービスに影響も出てます。
なにが入ってる?? 所持してるアイテム(約50%) アイテムの獲得履歴、異動履歴 (約15%) 保存してるコーディネート (約15%) 所持数制限がない 何と履歴は削除しない!
・サーバースペックを上げても限界が あります ・仮に容量を拡張できたとしても、逆 にslowqueryがもっと酷くなります
まず、データを減らして、容量 を確保しなきゃ!!!! 1. 必要のないデータを消す 2. 保存期間を設ける 3. 格納するデータを軽量化する 4. 似てようなデータを1つに
通帳など履歴データは基本 3ヶ月しか見せなかった!!
1. しょっちゅう問合せがあって、以前の データを調べたりする必要がある 2. 警察に情報の提供を協力する場合も ある 3. 履歴データは分析する材料でもある 簡単に消すには行かなかった んです。。。
1年以上のデータのことな ら問合せがほぼ来ないの で、削除OKです CXチーム どうしても必要の場合、 BigQueryに移します。 BIチーム 利用契約に追記してもらい ます 運営チーム、法務
バッチ実装して、一定期間 過ぎたデータを継続的に削 除しますように サーバーチーム メンテで過去のデータを削 除します サーバーチーム CMSなど参照先を変更な ど対応します。 サーバーチーム
不要なデータや期間のある履歴を 消したけど、そこまで減っていなかっ たんです
データを移動させ、容量を確保 できるじゃん!!!! 1. 同じDBの別インスタンスに移す 2. 違うDBに移す 3. 非アクティブユーザーデータのアーカ イブ
同じDBの別インスタンスに移すのは簡 単そうに見えるんです。 が、 オンプレミスなので、DBサーバーを用意 するのは結構時間が必要です。 そして、RDBなので、別インスタンスにな ると、分散トランザクションに変えなけれ ば行けないんです。
MariaDBからMongoDBに移します。 ・可能の限り1User 1Docment ・予めshardingに 非アクティブユーザーのデータをアーカイブ 用DB移して削除します ・復帰した場合、自動的にデータを戻せる 仕組みも用意
92% 80% 60% 今ここ disk使用率
None
将来のために何かを準備しな いといけないんだ!! 容量の危機が一旦回避しただけで す。いくつのテーブルが大きいすぎ、 slow queryなどはまだ解消されていま せん 倍以上のDAU、MAUになった時でも 耐えられるようにアーキテクチャにシフト しないといけません。
None
None