- 잇플루언서에서 인턴십이 끝났다.
후기는 나중에 적겟지만
일단 인턴으로써 일을 할수 있다는 기회가 감사했엇고
실제로 협업에서만 알 수 있는 이커머스 분야와 인플루언서,마케팅 시장의 도메인을 얻고
구현하는 비즈니스 로직을 짤 수 있어서 좋았다.
모든 기능을 정의했던 것들을 제 시간내에 구현할 수 있어서 좋았다.
- 데이터 엔지니어링과 클라우드 인프라 관련해서 공부를 계속 진행하고 있다.
필요한 데이터를 추출,수집,정제 (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 |