AWS DEA(Data Engineering Associate) 자격증 준비하면서 봤던 강의 내용을 포스팅하려고 합니다. AWS Skill Builder에서 제공해주는 DEA-C01 Standard Exam Prep Course 강의 내용을 기반으로 작성했으며 자격증 준비단계에서 개념잡기에 좋을만한 내용들을 포함했습니다. 1. 데이터 엔지니어링 수명 주기 본격적인 데이터 통합 및 변환에 대한 포스팅 이전에 기본으로 돌아가서 먼저 데이터 엔지니어링 수명 주기에 대해 이야기해 보겠습니다. 수명 주기에는 데이터 생성, 저장, 수집, 변형 및 제공 단계가 있습니다. 수집 전의 처음 두 단계를 살펴보겠습니다. 1.1 생성데이터가 발생하는 위치, 즉 소스 시스템 입니다. 예시로는 다음과 같습니다.사물 인터넷(IoT..
Sorted Set 1. 특징 unique string 데이터(member)를 score 정보로 정렬된 형태의 집합으로 저장할 때 씁니다. 같은 score 정보를 가진 member가 여러개 있다면, 문자열순(lexicograpically)으로 정렬합니다. Ranking: 높은 score 순으로 실시간 정렬을 가진 자료가 필요할 때 쓸 수 있습니다. Sliding-Window를 가진 Rate Limiter를 구현할 수 있습니다. 2. Commands ZADD 새로운 member를 score 값과 함께 추가한다. 이미 존재하는 member라면 score를 업데이트 한다. ZRANGE 주어진 Range에 해당하는 member들을 리턴한다. ZRANK 주어진 member의 rank를 리턴한다. Ranking은 ..
이전 글 Redis의 String형식에 이어서 이번에는 List와 Set형식에 대해 알아보고 실습해보겠습니다. Redis의 LIST 실습 1. Lists 특징 지정한 Key에 리스트를 저장할 수 있습니다. 왼쪽(Left)이 Head, 오른쪽(Right)이 Tail입니다. 리스트에 들어갈 수 있는 최대 갯수는 2^32 - 1 (4,294,967,295)개 입니다. Stack, Queue 등을 구현하는데 사용합니다. 2. Comands LPUSH 새 원소를 Head에 추가한다. RPUSH 새 원소를 Tail에 추가한다. LPOP Head의 원소를 지우고 리턴한다. RPOP Tail의 원소를 지우고 리턴한다. LRANGE 특정 길이, 개수 만큼 원소를 리턴한다. (ex. 리스트의 처음부터 마지막 까지의 원소를..
해당 글에서는 Redis의 자료 형식이 어떤것이 있는지 살펴보고 명령어를 cli환경을 통해서 실습 해보겠습니다. Redis의 Key Redis의 모든 자료구조는 Key-Value형식이며, 저장과 조회는 key를 기준으로 합니다. Key는 binary sequence로 binary-safe합니다. 즉, string이나 어떤 파일을 binary로 변환한 값이나 상관없이 key로 설정할 수 있습니다. (앞에서부터 byte단위로 비교 합니다.) key 설계와 관련해서 다음과 같은 것을 고려해야합니다. 너무 긴(큰) key값 피하기 (Avoid Long Key) key의 길이(크기)가 크다면, 메모리를 더 많이 차지할 뿐만 아니라, key 비교 연산 등에서도 비용이 많이 듭니다. key의 크기는 1K(1024by..
해당 글에서는 Redis에 대해 본격적으로 사용해보기 전에 Cache/CacheDB란 무엇이고 다양한 CacheDB중에 왜 Redis를 사용하는지를 알아보겠습니다. Cache란? Cache 란, 미래의 사용 될 데이터를 빠르게 조회할 수 있는 곳(물리적 장소 또는 소프트웨어로 구현된 위치)에 두고서 사용하는 것을 말합니다. 보통 원본 데이터는 다른 곳에 있고 그것으로부터 copy된 데이터가 Cache에 존재합니다. 주요 개념 Cache hit: 조회하는 데이터를 Cache에서 찾을 때 Cache miss:조회하는 데이터를 Cahe에서 찾지 못했을 때 Hit ratio(rate): access시도 횟수 대비 cache hit의 비율. 이 값이(상대적으로) 높으면 캐시가 Cost-Effective하다. 캐시..
python에서 프로그램을 실행하면서 로그를 활용하고 계신가요? 로깅(logging)이란 로그를 남기는 행동으로 흐름과 시나리오를 확인할 수 있는 아주 유용한 도구입니다. 로그를 이용해 프로그램이 실행되는 시간, 사용자 등에 대한 정보를 남기고 저장할 수 있으며, 에러가 발생했을 때도 기존의 stack trace 이상의 정보를 제공받을 수 있습니다. 유용한 로그 정보를 저장하고 성능과 실행과정을 분석하고 진단할 수 있습니다. 이번 글에서는 python logging모듈을 통해 프로그램 실행 중 발생하는 로그를 남기고 활용하는 방법을 알아보겠습니다. logging 모듈 Python에서 기본적으로 제공하는 logging모듈을 통해 프로그램 실행 중 로그를 남길 수 있습니다. import python 특정 이..