본문 바로가기

메타인지/TIL

TIL 12/13~12/19

 

 - 잇플루언서에서 인턴십이 끝났다.

후기는 나중에 적겟지만

일단 인턴으로써 일을 할수 있다는 기회가 감사했엇고 

실제로 협업에서만 알 수 있는 이커머스 분야와 인플루언서,마케팅 시장의 도메인을 얻고 

구현하는 비즈니스 로직을 짤 수 있어서 좋았다. 

모든 기능을 정의했던 것들을 제 시간내에 구현할 수 있어서 좋았다.

 - 데이터 엔지니어링과 클라우드 인프라 관련해서 공부를 계속 진행하고 있다.

필요한 데이터를 추출,수집,정제 (ETL)하는 프로세싱을 최소한의 사람이 조작하여 머신을 운영하는것 

  

자동화를 위한 고려사항 

1) 데이터 프로세싱 스텝들 

2)에러 핸들링 및 모니터링(로그 및 걸린시간같은거) 

3) 트리거 / 스케쥴링 

 

APi 에러 핸들링, 자동화  등의 기초지식을 공부 했다. 

 

 - Spotify API에서 데이터를 받아 AWS LAMBDA까지 데이터를 받는 것을 목표로 공부중

 

 - Spotify API 명세서를 보고 이해하고 데이터를 요청하고 어떻게 받고 저장할 것인가에 대해 학습

 

 - AWS DynamoDB 세팅 및 키 컨셉 이해 이해

다이나믹 스키마 

구조를 정의하지않고 도큐먼트, 키벨류 생성 

각각의 큐먼트는 유니크한 구조로 구성 가능 

데이터베이스들마다 다른 문법 

드들을 지속적으로 추가 가능 

 

스케일(크기) 

sql은 데이터가 수직적 : 스펙들의 정의가 커진다. 

Nosql 데이터가 수평적 : 샤딩과 파티셔닝으로 늘어나는 구조 

 

 

파티션에 대한 이해 

파티션: 데이터 메니지먼드 퍼포먼스등 다양한 이유로 데이터를 나누는 

 

데이터를 나누어 저장한다고 생각하면 된다. 

 

수평적(버티컬) 파티션: 테이블을 더 작은 테이블들로 나눔 

정규화 후에도 경우에 따라 컬럼을 나누는 파티션 작업 

 

수직적(호리즌) 파티션 

스키마(컬럼)/ 구조 자체를 복사하여 데이터 자체를 샤드(shard key) 키로 분리한다. 

 - DynamoDb 사용이유와 요청 쿼리 학습

사용이유 : 스키마 구조가 유연하게 받아 들일 수 있음, 대량의 비형식적 데이터를 저장할 때

 

쿼리 예시

# get_item() 특정 pk키와 sort키를 다 입력해서 가져올 때 

response = table.get_item( 

Key = { 

'artist_id' : '04gDigrS5kc9YWfZHwBETP', 

'id' : '7LcfRTgAVTs5pQGEQgUEzN' 

} 

) 

print(response) # {'Item': {'is_playable': True, 'duration_ms': Decimal('201160'), 'external_ids': {'isrc':  

  

# query() 

# KeyConditionExpression을 지원함 

# pk키인데 아이디가 04gDigrS5kc9YWfZHwBETP로 일치하는 모든 로우를 가져와라  

response2 = table.query( 

KeyConditionExpression=Key('artist_id').eq('04gDigrS5kc9YWfZHwBETP') 

) 

  

# # 기본적으로 아이템이라는 메인 키가 있다 들어간다. 

print(response2) #{'Items': [{'is_playable': True, 'duration_ms': Decimal('231386'), 'external_ids': {'isrc': 'USUM71203347'}, 

print(response2['Items']) # [{'is_playable': True, 'duration_ms': Decimal('231386'), 'external_ids': {'isrc': 'USUM71203347'}, 

  

# 필터익스프레션도 있는데 값에 대해 관련된 데이터 요청을를 할수있다. 

  

response3 = table.query( 

KeyConditionExpression = Key('artist_id').eq('04gDigrS5kc9YWfZHwBETP'), 

FilterExpression = Attr('popularity').gt(90) 

) 

print(response3['Items']) # {'is_playable': True, 'duration_ms': Decimal('189486'), 'external_ids': {'isrc': 'USUM71913350'}, 'uri': 'spotify:track:2b8fOow8UzyDFAE27YhOZM 

print(len(response3['Items'])) # 1 인기가 90이상인 마룬파이브 음악는 한개이다. 참고로 곡은 memories 

  

# 스캔은 키값을 모르고 모든데이터를 부를때 값에 대한 조건만 쓴다 

# 스캔을 쓸 경우는 모든로우를 스캔하기 때문에 시간이 오래걸린다.  

response4 = table.scan( 

FilterExpression = Attr('popularity').gt(90) 



 -  데이터 레이크 Vs. 데이터 웨어하우스 

데이터 레이크 : ELT(추출,적제,변환) 

일단 데이터를 수집후 데이터 레이크에 넣고 보여준다. 

 

데이터 웨어하우스 :Extrack transform load(추출 변환 적제) 

 

'메타인지 > TIL' 카테고리의 다른 글

TIL 12/27~01/02  (0) 2020.01.02
TIL 12/20~12/26  (0) 2019.12.26
TIL 12/06~12/12  (0) 2019.12.12
TIL 11/29~12/05  (0) 2019.12.05
TIL 11/22~11/28  (0) 2019.11.27