生活在dynamodb中的物品的时间

时间:2012-11-12 13:28:46

标签: java amazon-dynamodb

过去几天我正在玩亚马逊dynamodb no-sql数据库,并想知道如果项目有 生存时间(TTL) 的任何功能,那么当项目达到该值时 根据 TTL 值自动从表格中删除,而不是手动批量删除项目。

4 个答案:

答案 0 :(得分:22)

是的,亚马逊于2017年2月向DynamoDb发布了生存时间(TTL)功能。您只需在控制台上访问DynamoDb即可。选择你的桌子。然后点击概述并在那里启用它。

Under Table Details

Manage TTL

TTL属性应该是您的列/属性,用于决定何时该行应该过期/删除。

注意: ttl属性应为number数据类型(因为DynamoDb不支持datetime数据类型)。所以它应该是 EPOCH 时间格式。

例如:
  - Linux终端:date +%s
  - Python:import time; long(time.time())
  - Java:System.currentTimeMillis() / 1000L
  - JavaScript:Math.floor(Date.now() / 1000)

答案 1 :(得分:6)

编辑:AWS于2017年2月发布了DynamoDb TTL功能。

不幸的是,答案很短:没有

事实上,DynamoDB是为了简单起见而设计的。没有花哨的功能。

答案 2 :(得分:0)

答案 3 :(得分:0)

您可以使用AWS DynamoDB控制台执行此操作,如Manjan's answer所述。

如果您想使用命令,则还可以使用AWS DynamoDB CLI命令:

from django.db import migrations


class AppAwareRunPython(migrations.RunPython):

    # MonkeyPatch the `code` call with a lambda that add an extra argument `app_label`
    def database_forwards(self, app_label, schema_editor, from_state, to_state):
        mp_code = self.code
        self.code = lambda apps, se: mp_code(apps, se, app_label)
        super().database_forwards(app_label, schema_editor, from_state, to_state)

    # Same for backwards if you want to display message when unapplying the migration
    def database_backwards(self, app_label, schema_editor, from_state, to_state):
        if self.reverse_code:
            mp_reverse_code = self.reverse_code
            self.reverse_code = lambda apps, se: mp_reverse_code(apps, se, app_label)
        super().database_backwards(app_label, schema_editor, from_state, to_state)

    # Add the etra argument to noop
    @staticmethod
    def noop(apps, schema_editor, app_label=None):
        migrations.RunPython.noop(apps, schema_editor)


# This function can't be used with classic RunPython unless you put `app_label=None` and test its value
def happy_message(apps, schema_editor, app_label):
    print(f'A happy message from migration inside app named {app_label}')


class Migration(migrations.Migration):

    operations = [
        AppAwareRunPython(happy_message, AppAwareRunPython.noop),
    ]

您可以查看此article以获得更多信息。