Garmin詳細データを「勝手に痩せ続ける」仕組みへ

今年7月にガーミン連携・ストラバ連携を行った「ジョグのねっとわーく」。ランナーの詳細データ蓄積により、特にGarminから同期される activityDetails(走行詳細データ)がデータベースを圧迫し、移行の大きなボトルネックとなってきました。

そこで、今回のサーバー移設に合わせて計画しているのが、「14日以前のデータは自動でアーカイブへ逃がす」というDBの減量化プロジェクトです。

1. 開発のモットー:最短・シンプル・無人運転

当初はPythonによる制御も検討しましたが、最終的には「bash + mysql + mysqldump」という、最も堅牢でシンプルな構成を選択しました。

  • 保持方針: 直近14日間のアクティブデータのみ本番環境に保持し、それ以前は順次アーカイブ(ロリポップ)へ移行します。
  • バッチ処理の自動化: 毎晩深夜、3,000〜5,000件ずつ少量ずつdumpとimportを繰り返すcronを設定。一度に大量の負荷をかけず、「来週からは勝手に痩せ続けるDB」を実現します。

2. 「安全スイッチ」による表示の整合性担保

データを移動させる際に最も懸念されるのが「ユーザーから地図やラップが見えなくなる」ことです。

これに対し、PHP側には一行の分岐による安全スイッチを導入しました。

  1. まず本番環境(Hot)を探し、
  2. なければアーカイブ環境からデータをフェッチするというフローを構築。これにより、ユーザー体験を損なうことなくDB容量の削減が可能になります。

3. 「一回目を丁寧に」から始まる未来

週末には force_archive=1 パラメータを使用した強制テストを実施し、アーカイブ先のデータが正しく表示されるかを検証します。

フルバックアップに頼らず、システム自体が自律的にデータを整理する。この「使わなくて済む設計」こそが、これからの長期運用を支える柱となります。