mongodb expire data

로그인 처리를 위해서 특정 시간동안 데이터를 저장할 필요가 생겼다.

기존에 사용경험이 있었던 Redis를 이용할지를 고민하던 중에, 혹시 요즘 많이 쓰고 있는 Mongodb에도 혹시 특정 시간동안만 저장하는 기능이 있을까 해서 찾아보았다.

검색 키워드로는 "mongodb expire data"를 이용했고 바로 첫번째로 검색 되었다.

사용방법은 인덱스를 생성할때 날짜 필드에 expireAfterSeconds 를 추가하면된다.

# 1시간뒤에 삭제되는 데이터 구조 생성
db.log_events.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } );

# 사용법 
db.log_events.insert( {
   "createdAt": new Date(),
   "logEvent": 2,
   "logMessage": "Success!"
} );

createAt 이라는 필드 명에는 날짜 형식이 들어가고 해당 날짜를 기준으로 expireAfterSeconds 의 초 만큼 지나가면 데이터가 삭제 된다.

nodejs에서 mongodb를 사용할때는 다음과 같이 스키마 구조를 생성하면 된다.

new Schema({ createdAt: { type: Date, expires: 3600 }});

참고 자료

Posted by lahuman

댓글을 달아 주세요

AWS EC2 서버 DISK 크기 늘리기

EC2의 디스크는 탄력적 볼륨이라고 하여 DISK의 크기를 가변적으로 조절 할수 있다.

이번에 EC2 인스턴스의 DISK 용량을 확장하였는데, WEB GUI 기반으로 볼륨 수정 요청을 하고 하루가 지나도 용량의 변경이 없었다.

구글에 검색을 해보니, "파일 시스템을 확장 해야 디스크 용량이 확장되다"고 한다.

먼저 lsbkl 명령어를 이용해서 인스턴스의 볼륨을 확인한다.

[ec2-user ~]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0  30G  0 disk /data
nvme0n1       259:1    0  16G  0 disk
└─nvme0n1p1   259:2    0   8G  0 part /
└─nvme0n1p128 259:3    0   1M  0 part
  • 루트 볼륨 /dev/nvme0n1에는 /dev/nvme0n1p1라는 파티션이 있다. 루트 볼륨에 새 크기인 16GB가 반영되는 동안 파티션의 크기에 원래 크기인 8GB가 반영되기 때문에 파일 시스템을 확장하려면 먼저 파티션 크기를 늘려야 한다.
  • 볼륨 /dev/nvme1n1에는 파티션이 없습니다. 볼륨 크기에 새 크기 30GB가 반영됩니다.

루트 볼륨에서 파티션을 확장하려면 다음 growpart 명령을 사용한다.

[ec2-user ~]$ sudo growpart /dev/nvme0n1 1

lsbkl 명령어를 이용해서 인스턴스의 볼륨의 크기가 반영 되었는지 확인한다.

[ec2-user ~]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0  30G  0 disk /data
nvme0n1       259:1    0  16G  0 disk
└─nvme0n1p1   259:2    0  16G  0 part /
└─nvme0n1p128 259:3    0   1M  0 part

예제: ext2, ext3 또는 ext4 파일 시스템 확장

df -h 명령어로 볼륨에 대한 파일 시스템 크기를 확인한다.

[ec2-user ~]$ df -h
Filesystem       Size  Used Avail Use% Mounted on
/dev/xvda1       8.0G  1.9G  6.2G  24% /
/dev/xvdf1       8.0G   45M  8.0G   1% /data

resize2fs 명령어를 이용해서 각 볼륨에서 파일 시스템을 확장한다.

[ec2-user ~]$ sudo resize2fs /dev/xvda1
[ec2-user ~]$ sudo resize2fs /dev/xvdf1

마지막으로 볼륨에 대한 파일 시스템의 크기를 확인하면 된다.

[ec2-user ~]$ df -h
Filesystem       Size  Used Avail Use% Mounted on
/dev/xvda1        16G  1.9G  6.2G  12% /
/dev/xvdf1        30G   45M  8.0G   1% /data

참고

Posted by lahuman

댓글을 달아 주세요

느낌표 2개의 의미

const x = '';
!!x; //false

!!를 사용하면 빈값 등(i.e., except for false, 0, "", null, undefined, and NaN)은 false를 그 외엔 true를 리턴한다.

참고

Posted by lahuman

댓글을 달아 주세요