メインコンテンツへ移動

アプリケーションデータクリーニング

Application Data Cleaning

アプリケーションデータには、アプリケーション情報、アプリケーショングループ、アプリケーションロール、ワークシート情報、ワークシートデータなどが含まれます。データの安全性を確保するため、システム内の重要なデータ削除は論理削除によって行われます。ただし、削除データ量が増えることで、ディスクストレージの占有だけでなく、データベース性能にも影響を及ぼす場合があります。
そのため、HAPでは設定ルールに基づき、削除済みデータを定期的に物理削除するアプリケーションデータクリーニングサービスを提供しています。


1. ミラーイメージのダウンロード​

docker pull nocoly/dataclean-app:1.0.0

2. Docker Swarm の初期化
​

(既に初期化済みの場合はこのステップをスキップしてください)

docker swarm init

3. 任意のディレクトリに dataclean.yaml ファイルを作成し、以下の内容を記述します​

version: '3'
services:
app:
image: nocoly/dataclean-app:1.0.0
volumes:
- ./appsettings.json:/app/Config/appsettings.json

4. dataclean.yaml ファイルと同じディレクトリに appsettings.json 設定ファイルを以下の内容で作成します​

{
"WorksheetConnStr": "mongodb://127.0.0.1:27017/mdworksheet",
"MD_WSService1": "mongodb://127.0.0.1:27017/mdwsrows",
"MD_WSService2": "mongodb://127.0.0.1:27017/mdwsrows",
"MD_WSService3": "mongodb://127.0.0.1:27017/mdwsrows",
"MD_WSService4": "mongodb://127.0.0.1:27017/mdwsrows",
"MD_WSService5": "mongodb://127.0.0.1:27017/mdwsrows",
"MD_WSService6": "mongodb://127.0.0.1:27017/mdwsrows",
"MD_WSService7": "mongodb://127.0.0.1:27017/mdwsrows",
"MD_WSService8": "mongodb://127.0.0.1:27017/mdwsrows",
"MD_WSService9": "mongodb://127.0.0.1:27017/mdwsrows",
"MD_WSService10": "mongodb://127.0.0.1:27017/mdwsrows",
"MD_WSLogService1": "mongodb://127.0.0.1:27017/mdworksheetlog",
"ApkConnStr": "mongodb://127.0.0.1:27017/mdapps",
"AppRoleConnStr": "mongodb://127.0.0.1:27017/mdapproles",
"MD.Worksheet.DbName": "mdworksheet",
"MD.WorksheetRow.DbName": "mdwsrows",
"DeleteDay": 60,
"DeleteRowByNomal": 0,
"DelateRowDay": 60,
"DelateRowTotal": 10000,
"Corn": "0 0 2 * * ? "
}

設定項目について:

  • mongodb://127.0.0.1:27017 :実際のMongoDB接続アドレスに置換してください
  • DeleteDay :X日前のデータを削除します
  • DeleteRowByNomal :ワークシートが通常状態の場合に削除済み行データをクリーンアップするかどうか(0: クリーンアップしない、1: クリーンアップする)
  • DelateRowDay :DeleteRowByNomal=1の場合、X日前の行データを削除します(DeleteRowByNomal=0の場合は設定無効)
  • DelateRowTotal :DeleteRowByNomal=1の場合、ワークシート行データの総数がXを超える場合のみ削除します(DeleteRowByNomal=0の場合は設定無効)
  • Corn :定期実行のcron式。
    詳しくは https://51tools.info/cron/ をご参照ください。0 0 2 * * ? は毎日2:00に実行する設定です。

5. データクリーニングサービスの起動​

dataclean.yamlのあるディレクトリで下記を実行してください。

docker stack deploy -c dataclean.yaml dataclean

スケジュールタスクの実行ログは以下で確認できます。

docker logs $(docker ps | grep dataclean | awk '{print $1}')

サービスを削除する場合は、下記コマンドを実行してください。

docker stack rm dataclean