オープンデータのレポート機能の更新
シラサギ v1.8.0 から、オープンデータにデータセットのダウンロード数に関するレポート機能が搭載されました。 しかし、このレポート機能には以下のような問題点があることが分かりました。
- ダウンロード数を集計する際、すべて動的に集計するため、集計に非常に時間かかり、またなおかつデータベースへ多大な負荷をかけ、履歴のレコード数によっては集計処理がタイムアウトするという問題があります。
- ユーザーがダウンロードすると、履歴をデータベースに保存します。この履歴を定期的に削除する処理がないため、運用を重ねていくと、データベースが肥大化していく問題があります。
シラサギ v1.13.0 ではこれらの問題を修正しましたが、データの修正が必要です。 本ページではデータの修正方法を解説します。
なお、オープンデータを利用されていない場合、本ページで解説する手順の実行は不要です。 また、シラサギ v1.8.0 よりも前のバージョンを利用している場合も、本ページで解説する手順の実行は不要です。
v1.13.0 での改善について
ダウンロード数の集計に関しては、動的に集計するのではなく、夜間の定期実行(具体的には ss:daily)で、ダウンロード数を集計し、レポートを作成し、シラサギの管理画面上には作成済みのレポートを表示することで、データベースの負荷軽減や、履歴レコード件数が多くてもタイムアウトしないように改善しました。
履歴については、夜間の定期実行(具体的には ss:every_monday)で、2 週間よりも前の履歴を ZIP ファイルへとアーカイブし、データベースからは削除するするようにしました。 アーカイブした結果は、シラサギの管理画面からダウンロードすることができます。
シラサギ v1.13.0 では上記のように改善したので、以下のタスクを実行する必要があります。
- 古い履歴レコードの更新
- 全履歴レコードからレポートの作成
- 古い履歴レコードのアーカイブ化
これらの処理は、履歴のレコード件数に比例して処理時間がかかり、場合によっては 1 日以上の時間がかかる可能性もあるので、計画的に実行してください。
DB の差分更新
本ページで解説するタスクを実行する前に、SHIRASAGI の更新のDBの差分更新を参照し、データベースのデータを修正してください。
古い履歴レコードの更新
次の 2 つの Rake タスクを実行します。
bundle exec rake opendata:history:update_all_download
bundle exec rake opendata:history:update_all_preview
全履歴レコードからレポートの作成
次の 3 つの Rake タスクを実行します。
bundle exec rake opendata:report:generate_all_download site=www
bundle exec rake opendata:report:generate_all_access site=www
bundle exec rake opendata:report:generate_all_preview site=www
www
の箇所は、運用しているオープンデータサイトのホスト名に応じて適時変更してください。
古い履歴レコードのアーカイブ化
次の 2 つの Rake タスクを実行します。
bundle exec rake opendata:history:archive_all_download site=www
bundle exec rake opendata:history:archive_all_preview site=www
www
の箇所は、運用しているオープンデータサイトのホスト名に応じて適時変更してください。