[AWS] DynamoDB로 시퀀스 테이블 만들기 (Node.js)

DynamoDB에는 시퀀스 발행 메커니즘이 없지만 원자 카운터를 사용하여 증가시킬 수 있습니다.

시퀀스용 테이블 작성



먼저 시퀀스에 대한 테이블을 만듭니다.
여기서는 "sequences"라고 합니다.
기본 키는 'name'으로 문자열입니다.



테이블이 완성되면 항목을 만듭니다.
name : 시퀀스 발행하려는 테이블 이름
current_number : 현재 시퀀스 값 (처음이기 때문에 0) 설정



DynamoDB 준비가 완료되었습니다.

시퀀스 발행 방법



Node.js의 예입니다.
Lambda에서 실행할 것으로 예상되는 코드입니다.
'use strict';

const table = 'test_table';

const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient();

// シーケンス発行関数
function sequence(sequenceName, callback) {
    const params = {
        TableName: "sequences",
        Key: {
            name: sequenceName
        },
        UpdateExpression: "set current_number = current_number + :val",
        ExpressionAttributeValues: {
            ":val":1
        },
        ReturnValues: "UPDATED_NEW"
    };

    docClient.update(params, function(err, data) {
        let id;
        if (err) {
            console.error('Unable to update item. Error JSON:', JSON.stringify(err, null, 2));
        } else {
            console.log('UpdateItem succeeded:', JSON.stringify(data, null, 2));
            id = data.Attributes.current_number;
        }
        callback(id);
    });
}

exports.handler = (event, context, callback) => {

    // シーケンス取得
    sequence(table, function(id) {
        console.log("sequence:" + id);
    });
};

참고한 기사:
DynamoDB로 시퀀스 관리
공식:
3.4단계: 원자 카운터 증가

좋은 웹페이지 즐겨찾기