reduce-db-data-with-cloudian
by
syamauchi
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. DB容量肥大化への取り組み 山内 覚
Slide 2
Slide 2 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 自己紹介 •前職 • メールとウェブからの情報漏洩対策ソフトの開発 •現職 • 2019年7月 株式会社ラクス入社 • 楽楽販売の開発チームに所属 • バージョンアップなど運用周りの業務を担当
Slide 3
Slide 3 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 楽楽販売の紹介 •クラウド型販売管理システム •導入社数1,000社超 •10年以上続くサービス
Slide 4
Slide 4 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 楽楽販売の概要 •Webデータベース • ブラウザを使ってデータの登録、更新、検索ができる • 販売情報を管理するデータベースを作れる •構成 • PHP + PostgreSQL
Slide 5
Slide 5 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 楽楽販売が抱えていた問題 •DB容量の肥大化 • 既存顧客のデータ容量の増加 • 新規顧客の増加 •PostgreSQLのI/O負荷の増加 •バックアップ取得などのメンテナンス時間の増加
Slide 6
Slide 6 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 当時のデータ状況 • DB全体 • 一番サイズが大きいDB ファイルによりDB容量が増えている状態 合計サイズ(GB) ファイルサイズ(GB) ファイル数 サイズにおける ファイルの割合 1,106 829 4,872,548 75% サイズ(GB) ファイルサイズ(GB) ファイル数 サイズにおける ファイルの割合 127 124 244,664 98%
Slide 7
Slide 7 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. DB以外のファイル保存先の検討 • 選定 • ファイルが増加しても性能が劣化しづらい • 障害に強い構成をとれる • プログラムから扱いやすい • Cloudian HyperStore • オブジェクトストレージ • ノードとファイルの多重化 • Amazon S3 と同じインタフェース(AWS SDK for PHPを使える) ※ラクスの他のサービスですでに使用していた
Slide 8
Slide 8 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. Cloudianを使った楽楽販売の構成 Cloudian 楽楽販売1/ 楽楽販売N/ 楽楽販売1 楽楽販売N ・ ・ ・ ・ ・ ・
Slide 9
Slide 9 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. ファイル保存方法の変更 file_id loid 0001 0010 ・・・ ・・・ loid data 0010 ・・・ ・・・ 楽楽販売1/ 0001 ファイル一覧テーブル pg_largeobject ファイル一覧テーブル Before After Cloudian file_id loid 0001 0010 ・・・ ・・・
Slide 10
Slide 10 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 課題1 ファイルの追加・削除 • トランザクションで管理で きない • ファイルの登録 1. Cloudianにファイルを登録 2. ファイル一覧にレコード追加 • ファイルの削除 1. ファイル一覧のレコード削除 2. Cloudianのファイルを削除 ※定期的なごみ掃除が必要 楽楽販売1/ 0001 ファイル一覧テーブル After Cloudian file_id loid 0001 0010 ・・・ ・・・
Slide 11
Slide 11 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 課題2 バックアップオプション •バックアップオプション • 過去7日分のバックアップをユーザが確認できる機能 日 月 火 水 木 金 土 通常環境 バックアップオプション
Slide 12
Slide 12 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 課題2 バックアップオプション (ファイルをコピーする場合) Cloudian バックアップオプションのファイルもCloudianで管理 すると・・・ ・大量のファイルコピーがCloudian内で発生する! 日 月 火 水 木 金 土 通常環境 バックアップオプション 通常環境/ バックアップ オプション(日)/ ・ ・ ・ バックアップ オプション(土)/
Slide 13
Slide 13 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 課題2 バックアップオプション (ファイルを共通化する場合) 通常環境/ 通常環境と同じファイルを見る file_id 0001 0002 file_id 0001 0002 0001 0002 file_idが0002のファイルはファイル一 覧テーブルにあるが、Cloudianから 削除されているためアクセスできない Cloudian 日 月 火 水 木 金 土 通常環境 バックアップオプション
Slide 14
Slide 14 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 課題2 バックアップオプション (削除タイミングの変更) 削除日の2週間後に削除する file_id delete_date 0001 0002 2020/09/16 file_id 0001 0002 file_idが0002のファイルにア クセスできる 日 月 火 水 木 金 土 通常環境 バックアップオプション 通常環境/ 0001 0002 Cloudian
Slide 15
Slide 15 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 課題3 既存ファイルの移行 file_id loid 0001 0010 ・・・ ・・・ loid data 0010 ・・・ ・・・ 楽楽販売1/ 0001 ファイル一覧テーブル pg_largeobject ファイル一覧テーブル Before After Cloudian file_id loid 0001 0010 ・・・ ・・・
Slide 16
Slide 16 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 課題3 既存ファイルの移行 •DB全体 • サービス停止して一度に移行するのは難しい • サービス移行中にバッチ処理で少しずつ移行 • 2019-11~2020-02の間で移行 合計サイズ(GB) ファイルサイズ(GB) ファイル数 サイズにおける ファイルの割合 1,106 829 4,872,548 75%
Slide 17
Slide 17 text
#RAKUSMeetup ©2020 RAKUS Co., Ltd. まとめ •DBに保存していたファイルをオブジェクトスト レージに保存した • 問題となっていたDB容量の肥大化に対応できた • 一方、アプリの考慮点が増えた • DB容量肥大化のような問題には構成の見直しが必要