분류 전체보기 216

ETL과 ELT

ETL, ELT > 데이터 파이프라인 > 각 알파벳은 추출(Extract), 적재(Load), 변환(Transform)의 약자 추출의 대상 관계형 데이터베이스 (RDBMS) NoSQL 텍스트 파일 (JSON, log, txt 등) SaaS로부터 생성되는 데이터 (Google Ads와 같은 광고 데이터) 데이터 레이크 (비정형 데이터를 포함해 원시 데이터를 저장하는 공간) 적재의 대상 데이터 웨어하우스 ELT와 ETL의 차이점은 순서의 차이 ● ETL(추출→변환→적재), 적재하는 과정에서 변환(Schema-on-Write) ● ELT(추출→적재→변환), 적재하고 나서 분석을 시작할 때 변환(Schema-on-Read) 비정형 데이터를 분석할 경우 ELT 작업, 상대적으로 정형화된 데이터 분석보다는 훨씬 느..

정형 데이터와 비정형 데이터

정형 데이터와 비정형 데이터 정형 데이터 : 정해진 규칙에 따라 구조화된 데이터 > 날짜, 이름, 주소, 신용 카드 숫자 등과 같이 해당 칼럼에 들어갈 값이 예측 가능하고 의미 파악이 쉬운 데이터 > 사용자들이 사용하기 쉽고, 머신러닝 알고리즘이 가공/분석하기에 용이 > 적재한 데이터가 많은 상황에서 구조 그 자체가 바뀌는 경우, 모든 정형 데이터를 업데이트해야 하므로 많은 시간과 자 원이 소모 비정형 데이터 : 문서(JSON, 텍스트)의 형태를 띄거나, 아예 음성이나 영상과 같은 바이너리 형식의 데이터 > 있는 그대로 저장하기에 유용하나, 가공하거나 분석하기에는 어려울 수 있음 > 최근에는 모든 데이터를 있는 그대로 저장하고 고도화된 빅데이터 도구를 이용해 보다 쉽게 가공/분석할 수 있게 만드는 것이 ..

데이터 파이프라인

★ 데이터 파이프라인 > 다양한 데이터 소스로부터 원시 데이터를 수집하여 분석을 위해 데이터 웨어하우스와 같은 별도의 데이터 저장소로 이전하는 과정 데이터 파이프라인을 만드는 이유 > 다양한 경로로부터 수집되는 데이터를 웨어하우스에 적재한 후, 적재한 데이터를 바탕으로 효과적으로 분석하기 용이하게 만들기 위함 > MLOps의 필수 과정 OLTP vs. OLAP - OLTP(Online Transaction Processing) 데이터베이스 : 그 목적이 트랜잭션(기본적인 CRUD 작업)에 포커스가 맞추어져 있는 데이터베이스 - OLAP(Online Analytical Processing) 데이터베이스는 적재된 데이터를 다양한 방법으로 분석하는 데 포커스 > 다양한 데이터소스로부터 수집되는 데이터를 통합 ..

수평 확장된 데이터베이스와 중복 처리 (Advanced)

빅 데이터 처리에서 확장성의 중요성 > 데이터의 양이 기하급수적으로 증가함에 따라 많은 기업의 데이터 베이스가 직면하고 있는 데이터의 홍수로 인해 압도 > 데이터 오버플로를 관리, 저장 및 처리하기 위해 폭발적인 데이터 세트를 처리하는 많은 조직에서 “데이터 스케일링”이라는 기술이 필요 > 수직확장 또는 수평확장을 통해 상당한 양의 데이터를 관리 > 마이크로서비스와 클라우드 환경이 발달이 되고 하드웨어의 종속성이 줄어들면서 우리는 수평확장 기술로 컴퓨터의 클론을 만들어 가용성을 높임 데이터 중복성 > 한 컴퓨터의 클론을 만든다는 것은, 그 안에 존재하는 데이터 역시 복제되어야 함을 의미 > 데이터 중복 메커니즘은 가용성을 얻기 위해 필요 데이터 중복 발생의 원인 > 관리시스템 내의 소프트웨어(코딩) 품질..

스트림 처리

★ 데이터 배치작업 > 데이터 배치작업을 데이터 일괄처리작업이라고 칭하기도 함 > 최소한의 인간 상호 작용으로 실행할 수 있으며, 자주 사용되는 프로그램을 위한 것 ● 배치의 특징 대량의 데이터 처리 특정 시간에 프로그램 실행 일괄적으로 처리 ● 배치 작업의 단점 > 앞선 프로그램의 실행이 다 끝나야지만 뒤에 등록된 데이터가 실행 ※ 성능저하의 핵심은 CPU나 메모리의 부하가 아닌 비효율적인 I/O(Input, Output) 때문 ※ 대량의 배치작업을 한꺼번에 진행하게 되면 특정시간대에 I/O가 몰리게 되어 서버에 갑작스러운 부하가 일어나 성능이 저하 > DB의 성능 개선을 위해서는 DB를 효율적으로 처리하는 것이 중요 ★ DB를 효율적으로 처리하는 방법 > 시간을 초단위, 밀리초 단위로 해서 데이터를 ..

캐싱

동일 데이터의 잦은 조회에 따른 문제를 해결하기 위한 방법 ★ 캐시 > 임시로 복제된 데이터를 저장하는 장소 > 사용자가 더 효율적이고 빠르게 원하는 데이터에 접근할 수 있도록 하기 위해 설정 > 원본 데이터베이스가 제공할 수 있는 것보다 짧은 대기 시간을 제공 > 웹 애플리케이션의 성능을 향상시킬 수 있으며, 데이터베이스의 비용을 절감 캐시 장점 > 성능향상 > 기본적으로 속도 보다는 데이터의 저장과 안정성에 초점을 맞추게 됨 > 저장의 기능보다는 정보를 제공하는 처리 속도에 더 집중 > 비용감소 > 원본 데이터베이스에 대한 쿼리 수를 줄이고, 데이터베이스 자체를 스케일링할 필요성을 낮추면, 성능 향상과 더불어 비용을 절감하는 효과 ★ 캐시 타입 > Cache-aside : 웹 애플리케이션에서는 읽기 ..

캐싱

동일 데이터의 잦은 조회에 따른 문제를 해결하기 위한 방법 ★ 캐시 > 임시로 복제된 데이터를 저장하는 장소 > 사용자가 더 효율적이고 빠르게 원하는 데이터에 접근할 수 있도록 하기 위해 설정 > 원본 데이터베이스가 제공할 수 있는 것보다 짧은 대기 시간을 제공 > 웹 애플리케이션의 성능을 향상시킬 수 있으며, 데이터베이스의 비용을 절감 캐시 장점 > 성능향상 > 기본적으로 속도 보다는 데이터의 저장과 안정성에 초점을 맞추게 됨 > 저장의 기능보다는 정보를 제공하는 처리 속도에 더 집중 > 비용감소 > 원본 데이터베이스에 대한 쿼리 수를 줄이고, 데이터베이스 자체를 스케일링할 필요성을 낮추면, 성능 향상과 더불어 비용을 절감하는 효과 ★ 캐시 타입 > Cache-aside : 웹 애플리케이션에서는 읽기 ..

파티셔닝

대용량 데이터 처리에 따른 문제를 해결하기 위한 방법 데이터셋이 매우 크거나, 쿼리 처리량이 매우 높은 경우에는 단순히 복제하는 것만으로는 부족 > 큰 데이터베이스를 파티션이라는 작은 단위로 쪼개서 활용하는 방법이 제시 > 샤딩(shardIng)이라고도 표현 파티셔닝의 목적 > 확장성 > 확장되면서 점점 대용량의 데이터베이스가 되고, 그러한 환경에 맞게 프로세스를 처리할 필요성이 생김 > 파티셔닝 but > 데이터를 분산시켰음에도 불구하고, 특정 패턴을 가진 요청에 의해서 한 곳으로 요청이 쏠리는 현상(skewed)이 발생 > 파티셔닝의 효과가 떨어지게 되고, 극단적인 경우 모든 부하가 한 파티션에 몰려 4개 중 3개 노드가 사용되지 않는 것과 같은 효과 > 불균형하게 부하가 높아진 파티션을 핫스팟 > ..

레플리카

★ 많은 사용자가 발생함에 따른 문제를 해결하기 위한 방법 레플리카(replica : 복제서버) : 데이터베이스의 복사본을 저장하는 각각의 노드 > 원본이 되는 데이터베이스와 같은 데이터를 다른 위치에 존재하는 여러 노드에 유지하는 방식 > 데이터의 중복성이 발생, 이 중복성으로 인해서 얻을 수 있는 장점이 존재하며, 그에 따라 해결해야하는 문제점들 역시 존재 레플리카의 장점 > 시스템 장애시 동작할 수 있는 가용성 확보 > 일부 노드가 사용불가능 상태라면 해당 데이터는 남은 다른 노드를 통해 여전히 제공할 수 있다는 장점 > 리더 데이터베이스에 화재, 지진, 네트워크 오류 등의 장애 상황이 발생하더라도 레플리카 중 하나를 새로운 리더로 지정하고 사용자의 요청을 새로운 리더로 연결 > 읽기 쿼리 제공 장..

낮은 검색 성능 - 인덱싱

★ 인덱스 - 데이터베이스에 저장된 기본데이터(primary data)에서 파생된 부가적인 메타데이터(meta-data : 데이터에 관한 구조화된 데이터) > 메타데이터인 인덱스가 우리가 원하는 데이터의 위치를 찾는데 도움을 주는 이정표가 됨 > 인덱스의 편집사항은 데이터베이스의 내용에는 영향을 주지 않음 > 단지 질의(Query) 성능에만 영향 고려사항 > 별도의 저장공간을 확보 > 데이터에 연계된 인덱스들을 필요에 따라 설정 > 데이터 변경에 따라서 인덱스에 대한 수정도 연계되어 이루어져야 하므로 적절하게 인덱스를 활용하지 못하는 경우 오히려 성능저하의 문제가 발생 > 자주사용하는 정도나, 분포, 정보의 변경 주기 등 다양한 사항을 고려해 목적에 맞게 인덱스를 설정