滚动窗口容器按日期时间间隔将数据存储在分区中,并可以自动删除旧数据。活动窗口和休眠窗口有一组行为,可影响数据处理方式以及您可与数据交互的方式。
要创建滚动窗口容器,请运行 TSContainerCreate 函数。指定分区的大小。
指定活动和休眠窗口的最大大小。启用旧分区的自动删除。指定用于存储分区的多个数据库空间。
要更改滚动窗口容器的属性或布局,请运行 TSContainerManage 函数。可以更改窗口大小,附加或分离分区,销毁分区,更改分区是否自动销毁,以及更改分区的扩展数据块大小。
要利用滚动窗口,请将活动和休眠窗口的大小设置为正整数。如果将活动窗口的大小设置为 0,那么活动窗口的大小不限,因此必须手动将分区分离到休眠窗口。如果将休眠窗口的大小设置为
0,那么无论是否启用分区的自动销毁,都必须手动销毁分区。
将活动窗口大小设置为等于或大于计划装入的数据的时间范围。如果数据范围大于活动窗口大小,装入可能会失败。例如,假设您要存储计量表数据,并且选择的时间间隔为 1 周,活动窗口大小为
4 周。为第一个计量表标识添加一个月的数据时,将创建 5 个分区,因为一个月的时间通常长于 4 周。存储月内第一周的数据的分区将移至休眠窗口。尝试为下一个计量表标识插入一个月的数据时,插入将失败,因为某些数据无法放入活动窗口中。
通常,请将休眠窗口的大小设置为大于活动窗口的大小。休眠窗口为您不再需要但还不希望删除的数据提供了登台区域。
如果启用分区的自动销毁,请在实施此功能之前,先在合乎现实的条件下对系统进行测试。请考虑活动和休眠窗口的大小以及插入数据的方式。
例如,活动和休眠窗口的最大大小分别为 3 个时间间隔。如果插入的数据的时间戳记为晚于最近原始数据的 7 个时间间隔,那么将销毁所有原始数据。
以下规则列表描述了将活动窗口和休眠窗口的大小都设置为正数时,这两个窗口的行为。提供的示例假定活动窗口具有每月时间间隔,最大大小为 6 个分区,并且包含用于 1 月、2
月和 3 月的分区。休眠窗口的最大大小为 3 个分区。
查询、插入和修改数据的规则:
- 不能查询、插入、更新或删除休眠窗口的分区中的数据。
- 可以查询、插入、更新和删除位于活动窗口的分区中的数据。例如,可以插入、更新或删除 2 月 28 日的元素。
- 如果添加其时间戳记晚于最新分区的数据,将自动在活动窗口中创建新分区。例如,插入 3 月 2 日的元素。将为 3 月创建一个新分区。
- 可以添加时间早于最旧分区的数据,但要同时满足以下两个条件:
- 数据的时间戳记不在滚动窗口容器的原点之前。
- 活动窗口有空间用于自动创建的新分区。
- 休眠窗口没有其时间戳记等于或晚于所添加数据的时间戳记的数据。例如,休眠窗口为空,并且您插入了上一年 12 月 31 日的元素。将在活动窗口中为 12 月创建一个新分区。
- 如果添加比最新分区晚多个时间间隔的数据,那么还会创建几个中间空分区。
空分区会计入窗口大小。例如,插入 5 月 15 日的元素。将为 4 月和 5 月分别创建新分区。在插入 4 月的数据之前,4 月分区会保持为空。活动窗口有 6 个分区。
- 为新分区添加数据并且活动窗口已满时,最旧的分区会自动移至休眠窗口。
例如,添加 7 月的数据。将自动为 6 月和 7 月分别创建分区。12 月和 1 月的分区将移至休眠窗口。
用于管理分区的规则:
- 您可以手动将分区从活动窗口分离到休眠窗口。早于选择进行分离的分区的所有分区也会进行分离。例如,如果将 3 月分区分离到休眠窗口,那么会自动分离 2 月分区。然而,如果休眠窗口已满,并且分区不会自动销毁,那么该分离操作将失败。必须首先手动销毁相应数量的分区。
- 可以将分区从休眠窗口附加到活动窗口中。活动窗口必须有空间来容纳该分区以及介于该分区与活动窗口中最旧分区之间的所有分区。例如,将 1 月分区附加到活动窗口。2 月分区将自动附加到活动窗口。
- 可以更改活动窗口的大小。如果增大活动窗口的大小,可以从休眠窗口附加分区。例如,将活动窗口大小更改为 9,并将 12 月分区附加到活动窗口。1 月分区也会附加到活动窗口。如果减小活动窗口的大小,超出新的最大大小的最旧分区会分离到休眠窗口。然而,如果休眠窗口已满,并且分区不会自动销毁,那么调整大小操作将失败。必须首先手动销毁相应数量的分区。
用于销毁数据的规则:
- 添加数据并创建了一个或多个新的活动分区而使得活动分区数超出活动窗口大小时,相应数量的较旧活动分区将分离并移至休眠窗口。如何处理要移至休眠窗口的分区取决于要移动的分区数和窗口控制标志:
- 如果要分离的活动分区数少于或等于休眠窗口大小,那么活动分区会移至休眠窗口。如果休眠分区数超出休眠窗口大小,那么将销毁较旧的分区。
- 如果要分离的活动分区数大于休眠窗口大小,那么执行的操作取决于窗口控制标志:
- 如果窗口控制标志为 0,将阻止该操作。活动分区不会立即销毁。
- 如果窗口控制标志为 1,将销毁现有休眠分区,同时销毁活动窗口中的所有较旧分区。
- 可以手动销毁休眠窗口中的分区。将销毁早于指定日期的所有分区。
例如,休眠窗口包含 1 月、2 月和 3 月的分区。您指定了销毁 3 月之前的分区。将销毁 2 月和 1 月分区。
- 可以更改休眠窗口的大小。如果减小此窗口的大小,执行的操作取决于窗口控制标志:
- 如果窗口控制标志为 0,将阻止该操作。活动分区不会立即销毁。
- 如果窗口控制标志为 1,将销毁现有休眠分区,同时销毁活动窗口中的所有较旧分区。
- 可以更改窗口控制标志来更改是否自动立即销毁活动分区。如果启用活动分区的自动销毁,将销毁超出休眠窗口最大大小的最旧分区。