コンテンツのライフサイクル(2)〜ごみ箱に入れる(コンテンツ削除)〜 - コンテンツのライフサイクル(2)〜ごみ箱に入れる(コンテンツ削除)〜 - aegif Labo Blog Alfresco
null コンテンツのライフサイクル(2)〜ごみ箱に入れる(コンテンツ削除)〜
こんにちは。たなかです。
前回コンテンツ作成(と情報の確認)をご紹介したコンテンツのライフサイクル(1)の続きで、今回はコンテンツの削除をしてごみ箱に入れるについてご紹介します。
ごみ箱に入れる(コンテンツ削除)
ShareのUIから前回作成したファイルを削除します。
削除するとごみ箱に入ります。
ファイルがごみ箱に入った状態のファイルシステム、DBがどうなっているのか確認してみます。
まずはノードブラウザ を見てみます。
作成した際に確認した時と同様ノードブラウザで確認することができますが、ストアはarchiveになりDBIDも変わっています。
ファイルシステム
ノードブラウザで確認した通り、同じディレクトリに存在しています。
[root@localhost aegif]# ll /opt/alfresco/alf_data/contentstore/2020/12/15/14/7/
合計 4
-rw-r-----. 1 root root 23 12月 15 14:07 39b20a27-8d72-41a9-8016-0838e9c36eea.bin
DB
コンテンツ作成時と同様alf_nodeテーブルから順番に確認していきます。
- alf_node
SELECT id, store_id, uuid, type_qname_id FROM alf_node WHERE uuid='68a525c1-20f8-46ef-b62b-7422337384e3';
id | store_id | uuid | type_qname_id ------+----------+--------------------------------------+---------------- 1007 | 5 | 68a525c1-20f8-46ef-b62b-7422337384e3 | 51 1013 | 6 | 68a525c1-20f8-46ef-b62b-7422337384e3 | 148
alf_nodeテーブルのレコードが以下の2件になります。
- store_idが5(archive/SpacesStore)でtype_qname_idが51(cm:content)
- store_idが6(workspace/SpacesStore)でtype_qname_idが148(sys:deleted)
alf_node_propertiesとalf_content_dataのidは作成時と異なりますが、alf_content_urlはidは同じです。
- alf_node_properties
SELECT node_id, long_value, qname_id FROM alf_node_properties WHERE node_id in ( '1007', '1013' );
node_id | long_value | qname_id ---------+------------+---------- 1007 | 0 | 238 1007 | 0 | 237 1007 | 0 | 236 1007 | 0 | 138 1007 | 0 | 28 1007 | 0 | 27 1007 | 0 | 138 1007 | 0 | 235 1007 | 0 | 26 1007 | 0 | 40 1007 | 0 | 52 1007 | 345 | 51 1013 | 1002 | 149
コンテンツ作成時と同様、qname_idが51(cm:content)のレコードのlong_valueのidを確認
- alf_content_data
SELECT id, content_url_id FROM alf_content_data WHERE id='345';
id | content_url_id -----+----------------- 345 | 334
- alf_content_url
SELECT id, content_url, orphan_time FROM alf_content_url WHERE id='334';
id | content_url | orphan_time -----+------------------------------------------------------------------+------------- 334 | store://2020/12/15/14/7/39b20a27-8d72-41a9-8016-0838e9c36eea.bin |
検索インデックス
コンテンツ作成時と同様、ノードブラウザ で確認したDBIDを使って以下のURLにアクセスすることでインデックス作成ステータスを持つIDのノードレポートを取得することができます。
http://localhost:8983/solr/admin/cores?action=nodeReport&nodeid=(DBID)
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">576</int>
</lst>
<lst name="report">
<lst name="alfresco">
<long name="Node DBID">1007</long>
<long name="DB TX">153</long>
<str name="DB TX status">UPDATED</str>
<long name="Indexed Node Doc Count">0</long>
</lst>
<lst name="archive">
<long name="Node DBID">1007</long>
<long name="DB TX">153</long>
<str name="DB TX status">UPDATED</str>
<long name="Indexed Node Doc Count">1</long>
</lst>
</lst>
</response>
ごみ箱に入れる前はalfrescoのIndexed Node Doc Countが1でしたが、ごみ箱に入れてからはarchiveのIndexed Node Doc Countが1になり、alfrescoのIndexed Node Doc Countは0になりました。
またファイルの実体に変化はないですが、DB上ではalf_nodeテーブル、alf_node_propertiesテーブル、alf_content_dataテーブルのidが変わりました。
しかし、alf_content_urlテーブルはごみ箱に入れる前からidは変わりません。
ごみ箱から削除
一通り確認したのでごみ箱から削除してみます。
ユーザプロフィールのごみ箱を開いてコンテンツの削除を行います。
ごみ箱から削除した時点でノードブラウザからは確認できなくなります。
また同様にファイルシステム、DBも確認してみましょう。
ファイルシステム
ごみ箱から削除する前と変わらず同じディレクトリに存在しています。
[root@localhost aegif]# ll /opt/alfresco/alf_data/contentstore/2020/12/15/14/7/
合計 4
-rw-r-----. 1 root root 23 12月 15 14:07 39b20a27-8d72-41a9-8016-0838e9c36eea.bin
DB
- alf_node
SELECT id, store_id, uuid, type_qname_id FROM alf_node WHERE uuid='68a525c1-20f8-46ef-b62b-7422337384e3';
id | store_id | uuid | type_qname_id ------+----------+--------------------------------------+--------------- 1016 | 5 | 68a525c1-20f8-46ef-b62b-7422337384e3 | 148 1013 | 6 | 68a525c1-20f8-46ef-b62b-7422337384e3 | 148
ごみ箱から削除する前にstore_idが5(archive/SpacesStore)でtype_qname_idが51のcm:contentだったレコードのtype_qname_idが148のsys:deletedに変わりました。
- alf_node_properties
SELECT node_id, long_value, qname_id FROM alf_node_properties WHERE node_id in ( '
1016
', '
1013
' );
node_id | long_value | qname_id ---------+------------+----------- 1013 | 1002 | 149 1016 | 1007 | 149
元のIDを保持するレコードがあります。
qname_idが149というのはsys:originalIdを表しており、long_valueに入っている値がこのレコードの元になったnode_idになっています。
- alf_content_data
レコードは削除されます。
- alf_content_url
SELECT id, content_url, orphan_time FROM alf_content_url WHERE id='334';
id | content_url | orphan_time -----+------------------------------------------------------------------+------------- 334 | store://2020/12/15/14/7/39b20a27-8d72-41a9-8016-0838e9c36eea.bin |1608614034847
orphan_time にごみ箱を空にした時刻が記録されます。
検索インデックス
ごみ箱から削除した時点で完全に削除されます。
ここまでがコンテンツ削除でごみ箱に入れる〜ごみ箱から削除までの流れです。
ごみ箱から削除してもファイルの実体に変化はまだありません。
DB上ではalf_nodeテーブル、alf_node_propertiesテーブルのidが変わり、alf_content_dataテーブルのレコードは削除されました。
alf_content_urlテーブルはorphan_timeにごみ箱を空にした時刻が記録されますが、ごみ箱に入れる前からidは変わっていません。
次回は最終回でファイルシステムのクリーニングとDBのクリーニングについてをご紹介します。