Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add data lifcycle docs #516

Merged
merged 1 commit into from
Aug 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 102 additions & 0 deletions docs/interacting/data-lifecycle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# Data Lifecycle

## [Measures](../concept/data-model.md#measures) and [Streams](../concept/data-model.md#streams)

Due to the design of BanyanDB, the data in the `Measures and Streams` can not be deleted directly.
The data will be deleted automatically based on the [Groups](../concept/data-model.md#groups) `TTL` setting.

The TTL means the `time to live` of the data in the group.
Each group has an internal trigger which is triggered by writing events. If there is no further data, the expired data can’t get removed.

For example, the following command will create a group with a TTL of 7 days:
```shell
bydbctl group create -f - <<EOF
metadata:
name: sw_metric
catalog: CATALOG_MEASURE
resource_opts:
shard_num: 2
segment_interval:
unit: UNIT_DAY
num: 1
ttl:
unit: UNIT_DAY
num: 7
EOF
```
The data in this group will keep 7 days.

If you want to change the `TTL` of the data in this group to be 1 day, use the command:

```shell
bydbctl group update -f - <<EOF
metadata:
name: sw_metric
catalog: CATALOG_MEASURE
resource_opts:
shard_num: 2
segment_interval:
unit: UNIT_DAY
num: 1
ttl:
unit: UNIT_DAY
num: 1
EOF
```

More ttl units can be found in the [IntervalRule.Unit](../api-reference.md#intervalruleunit).

You can also manage the Group by other clients such as [Web-UI](./web-ui/schema/group.md) or [Java-Client](java-client.md).

## [Property](../concept/data-model.md#properties)

`Property` data provides both [CRUD](./bydbctl/property.md) operations and TTL mechanism.

The TTL field in a property is used to set the time to live of the property. The property will be deleted automatically after the TTL.
It's a string in the format of "1h", "2m", "3s", "1500ms". It defaults to 0s, which means the property never expires.

For example, the following command will create a property with a TTL of 1 hour:

```shell
bydbctl property apply -f - <<EOF
metadata:
container:
group: sw
name: temp_data
id: General-Service
tags:
- key: state
value:
str:
value: "failed"
ttl: "1h"
EOF
```

"General-Service" will be dropped after 1 hour. If you want to extend the TTL, you could use the "keepalive" operation. The "lease_id" is returned in the apply response.
You can use get operation to get the property with the lease_id as well.

```shell
bydbctl property get -g sw -n temp_data --id General-Service
```

```yaml
...
lease_id: 7587880824757265022
```

The lease_id is used to keep the property alive. You can use keepalive operation to keep the property alive.
When the keepalive operation is called, the property's TTL will be reset to the original value.

```shell
bydbctl property keepalive --lease_id 7587880824757265022
```

"General-Service" lives another 1 hour.

You can also manage the Property by other clients such as [Web-UI](./web-ui/property.md) or [Java-Client](java-client.md).

## The API reference
- [Group Registration Operations](../api-reference.md#groupregistryservice)
- [ResourceOpts Definition](../api-reference.md#resourceopts)
- [PropertyService v1](../api-reference.md#propertyservice)
52 changes: 0 additions & 52 deletions docs/interacting/deleting-data.md

This file was deleted.

4 changes: 2 additions & 2 deletions docs/menu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ catalog:
path: "/interacting/web-ui/property"
- name: "Java Client"
path: "/interacting/java-client"
- name: "Deleting Data"
path: "/interacting/deleting-data"
- name: "Data Lifecycle"
path: "/interacting/data-lifecycle"
- name: "Operation and Maintenance"
catalog:
- name: "Configure BanyanDB"
Expand Down
Loading