检测已删除的项
元数据存储服务提供了删除检测服务,以便为表示不跟踪项删除操作的副本的提供程序提供帮助。此服务确定从副本中删除了哪些项,以便在元数据存储区中将这些项标记为已删除。
用于检测删除的算法
删除检测器使用以下高级算法来检测已删除的项:
它记录所有报告为活动的项。当变更并保存了某项的元数据,或者提供程序将其显式报告为活动时,会将该项报告为活动状态。
所有不活动的元数据条目将报告为已删除。
提供程序枚举不活动的元数据条目,并将其标记为已删除。
使用托管代码检测删除
可通过 ReplicaMetadata 对象的 DeleteDetector 属性访问删除检测器。
若要重置删除检测器以便用于新的检测传递,请调用 MarkAllItemsUnreported。
使用 SaveItemMetadata 变更并保存某项后,该项将隐式存在一个活动的元数据条目。通过调用 ReportLiveItemById 可以将某项显式保留为活动状态,即便未对该项进行任何变更。
通过调用 FindUnreportedItems 获取当前检测为已删除的项的列表。必须使用 MarkAsDeleted 在元数据存储区中将此列表中的项标记为已删除。
使用非托管代码检测删除
删除检测器属于 IReplicaMetadata 对象的一部分。
若要重置删除检测器以便用于新的检测传递,请调用 IReplicaMetadata::ResetReportingWatermark。
使用 IReplicaMetadata::SaveItemMetadata 变更并保存某项后,该项将隐式存在一个活动的元数据条目。通过调用 IReplicaMetadata::ReportLiveItemByGlobalId 可以将某项显式保留为活动状态,即便未对该项进行任何变更。
通过调用 IReplicaMetadata::GetUnreportedItems 获取当前检测为已删除的项的列表。必须使用 IItemMetadata::MarkAsDeleted 在元数据存储区中将此列表中的项标记为已删除。
请参阅
参考
IReplicaMetadata 接口
ReplicaMetadata
DeleteDetector