リレーを使うようになると使われてない古い投稿がタンスのDBに溜まっていくと思うんですが、どうにかいい感じに削除してディスク容量を空けられないものか…? と思ってこんなクエリを考えてみたけど、どんなもんだろうか https://gist.github.com/tateisu/3d98290f2b72d12ba5f1b977a0d5743c
とりあえず、リレー参加中のテスト鯖 https://mastodon2.juggler.jp/ でdelete クエリをかけてみる。
テスト鯖なので1時間より古い使われてないトゥートを削除してみた。それなりに動いてる模様。メンションがあればローカル住人と無関係でも残すとか、pinned投稿なら残すとかあるので、思ったよりは他タンスの投稿が残る。添付メディアはstatusとの関連が切れるだけなので別途tootctl media remove_remote する必要がある
あー。「ブーストされたこと」も忘れてしまうのは問題だな…
@tateisu 目的がブレる(別物)になりますが、数千・数万のフォロー先を持つローカルユーザーも、無意味にデータベースを肥大化させるので、
・ローカルユーザーにフォローされていない→フォローされてても削除
・メンションがある→ローカルユーザーを含むメンションがある、に限定
という条件のクエリが別途あると有用かもしれませんね。
@noellabo 蓄積される投稿と違ってユーザ情報は現在の状態なので、「古いものを削る」という判定ができないんですよね…。
@noellabo メンションや返信について、会話ツリー全体をみないと「ローカルと無関係」とは言いきれないんですよ。けっこう大変なので今回のクエリではメンションを含む投稿や返信や被返信は対象外にしてます。レスが付く=重要性が高いという見方もできるので、フィルタ的には割と良い感じです
@tateisu リプライ・被リプライ(会話ツリー・context)ってメンションの有無
と無関係に形成されてませんか?
メンションの方は、ローカル絡んでいるか、ステータス単独で判定いけるんじゃないかな……。
まぁ何が重要かは評価関数要りますよね。削除対象レベルをスコアで指定できそう。
(便乗して欲張っているだけの話なので、ひとまず捨て置いてください)
@noellabo 会話ツリー中一部だけメンションされたとしても、ローカルユーザはその会話ツリー全体を見たいですよね。それを妨げるのは私はナシだと思います