모든 데이터 관련 직군에서 공통적으로 필요한 스킬이 바로 SQL이다. 다만 Front-end와 Back-end에서 SQL을 사용하는 것과 달리 데이터 관련 직군에서는
큰 데이터들을 프로세싱해서 작은 데이터로 요약하거나 데이터를 분석하기 위해 SQL을 사용한다.
구조화되어 있다. 관계형 데이터베이스는 이런 구조화된 데이터를 기반으로 작업을 할 때는 가장 좋은 기술이 된다.SQL이다.엑셀 스프레드 시트 형태의 테이블(컬럼/열, 레코드/행)로 데이터를 정의하고 저장테이블 스키마를 정하고 테이블 스키마에 맞춰서 레코드를 추가할 수 있음 📌 대표적 관계형 베이스는 어떤 것이 있는가?
- 프로덕션 데이터베이스 (OLTP: OnLine Transaction Processing)
- 웹 서비스나 모바일 앱과 바로 연동이 돼서
해당 서비스에 필요한 정보들을 저장 및 조회해 오는 데이터베이스빠른 속도가 매우 중요MySQL,PostgreSQL,Oracle등
- 데이터 웨어하우스 (OLAP: OnLine Analytical Processing)
- 처리 데이터의 크기가 클 때 사용하며처리 데이터의 크기에 집중
- 데이터 관련 직군의 사람들은 보통데이터웨어하우스를 사용
데이터 분석하거나 데이터 모델링을 할 때 필요한 데이터를 저장할 때 사용Redshift,Snowflake,BigQuery,Hive등
📌 프로덕션 데이터베이스만 사용하는 회사에서 데이터 직군이 겪는 어려움?
- 필요한 데이터를 사용하고자 할 때 SQL 실행을 통해 프로덕션 데이터베이스에 접근해야 하는데 이 데이터베이스가 실제 서비스와 연동되어 있기 때문에 큰 쿼리를 날려 데이터베이스가 느려지면 이것이 전체 서비스에 영향을 끼치게 된다.
- 그래서 데이터 직군을 위한
별도의 데이터 웨어하우스가 필요하다.
2단계로 구성된다.테이블 구조 (테이블 스키마라고 부름)테이블은 레코드들로 구성된다. (행)레코드는 하나 이상의 필드(컬럼)로 구성된다. (열)필드(컬럼)는 이름과 타입, 속성(Primary key)으로 구성된다. (Primary key의 값은 유일해야 함.)
테이블 구조를 스키마라고 한다. 환자 정보를 담는 테이블을 예시로 만들어 보았다. 이때 환자 번호는 환자의 고유 값이 되기 때문에 해당 레코드를 구분해 주는 유일한 값이 된다. 우리는 이를 Primary Key로 설정해 줄 수 있다.1) SQL의 개념
Structured Query Language테이블을 질의하거나 조작할 수 있도록 해 주는 프로그래밍 언어이다.DDL(Data Definition Language)로 테이블의 구조를 정의하고, DML(Data Manipulation Language)로 원하는 레코드를 조회하거나 추가, 삭제, 갱신할 수 있는 언어이다.빅데이터 세상에서도 중요하다.대용량 데이터 웨어하우스는 SQL 기반이다.Spark나 Hadoop도 예외는 아님. SparkSQL과 Hive라는 SQL 언어가 지원됨.2) SQL의 단점
최적화가 되어 있다.비구조화된 데이터를 다루는 데 제약이 심함.Spark, Hadoop과 같은 분산 컴퓨팅 환경이 필요해짐. 1) Star schema

그림 출처: https://www.jamesserra.com/archive/2011/10/denormalizing-dimension-tables/
Production DB에서 사용하는 방식이다.논리적 단위에 따라 각각 테이블을 나누고, 필요 시 테이블을 조인한다.Denormalized schema에서는 업데이트를 위해 이전 제품명을 모두 찾아 업데이트해 주어야 하는데 Star schema에서는 Product 테이블에 해당되는 제품명만 수정하면 된다. 2) Denormalized schema

그림 출처: https://www.jamesserra.com/archive/2011/10/denormalizing-dimension-tables/
데이터 웨어하우스에서 사용하는 방식이다. 왜냐하면 데이터 웨어하우스는 스토리지 크기의 제약이 없기 때문이다.빠른 계산이 가능하다.프로덕션 데이터베이스와는 별도Redshift, Google Cloud의 Big Query,Snowflake 등이 있다. Redshift는 고정 비용 옵션이고 Big Query와 Snowflake는 가변 비용 옵션이다.Big Query와 Snowflake가 더 대용량 데이터를 다루는 데 적합하다.모든 데이터들을 저장내부 직원(데이터 팀원)을 위한 데이터베이스 처리 데이터의 크기가 중요하다.📌 데이터 인프라란?
데이터 엔지니어가 관리한다.ETL과데이터 웨어하우스를 포함한 것을 말하며 이 단계에서 한 단계 발전하면Spark와 같은 대용량 분산 처리 시스템이 일부 추가된다.- 데이터 인프라는 데이터 팀의 업무에 시작 단계에 해당한다.
컴퓨팅 자원을 네트워크를 통해 서비스 형태로 사용하는 것No Provisioning Pay As You Go데이터 센터 공간을 직접 확보해야 함. Peak Time 기준으로 Capacity Planning을 해야 함.기회 비용이 생김.기회 비용 측면에서 굉장한 이점이 생김.글로벌 확장에 용이함. (대부분의 클라우드 프로그램이 전세계에 데이터 센터가 존재하기 때문에)Managed Service (SaaS) 이용.* EC2 - Elastic Compute Cloud
On Demand: 시간당 비용이 지불되며 가장 흔히 사용하는 옵션Reserved: 1년이나 3년간 사용 보장하고 40 %의 할인을 받는 옵션Spot Instance: 일종의 경매 방식으로 놀고 있는 리소스들을 더 저렴한 비용으로 사용할 수 있는 옵션 -> 문제는 어느 순간이라도 더 높은 가격에 경매한 사람이 있다면 그 사람에게 서버가 모두 넘어가게 된다. * S3 - Simple Storage Service
* 기타 중요 서비스 - Database Services
RDS (Relational Database Service): MySQL, PostgreSQL, Aurora, Oracle, MS SQL ServerDynamoDBRedShiftElasticCacheNeptune (Graph Database)ElasticSearchMongoDB* 기타 중요 서비스 - AI & ML Services
SageMaker: 머신 러닝과 딥러닝 End-to-End FrameworkLex: Conversational Interface (챗봇) Polly: Text to Speech Rekognition: Image Recognition * 기타 중요 서비스
Cloud Function 서비스가 있음.Scalable SQL 엔진 OLAP(OnLine Analytical Processing)벌크 업데이트를 지원한다. 레코드가 들어 있는 파일을 S3로 복사 후 copy command로 Redshift로 일괄 복사고정 용량/비용 SQL 엔진primary key uniqueness를 보장하지 않는다. 데이터 웨어하우스에서 보장해 주지는 않고 개발자가 보장해 주어야 한다.Postgresql 8.x와 SQL이 호환됨. 모든 기능을 지원하지는 않고, Postgresql에서 지원하는 툴이나 라이브러리도 접근이 가능하다.
Redshift Schema구성
1.raw_data: 가공하지 않은 외부에서 가지고 온 데이터, 날것의 데이터를 담는 테이블.
2.analytics: 분석용 데이터를 담는 테이블.
3.adhoc: 테스트를 위한 테이블. 따로 관리자가 존재하지 않음.-- schema를 선언하는 쿼리 CREATE SCHEMA raw_data; CREATE SCHEMA analytics; CREATE SCHEMA adhoc;
1.
DATABASE(데이터베이스)과Schema(스키마)의 차이
- 이 부분은
DBMS마다 의미가 다르다.- 보통 데이터베이스의 계층이 3 계층이냐, 4 계층이냐에 따라서 이 개념이 달라지는 것으로 보인다.
- 먼저 3 계층인 경우
DATABASE가 따로 존재하지 않으며 스키마와 데이터베이스를 동의어로 취급한다.MySQL이 이와 같은 경우에 해당한다.
- 4 계층의 경우 다음과 같은 구조가 되는데 이때는
DATABASE가스키마의 상위 개념이 된다.ANSI가 정한 표준SQL에서는 4 계층으로 정의를 하는 것이 맞으며 이 구조를 충실하게 지킨 것이PostegreSQL,MSSQL(SQL Server)이다.Oracle역시 4 계층으로 이루어져 다음과 같은 개념이 적용이 되지만인스턴스 아래에 데이터베이스를 한 개만 만들 수 있다는 제약이 있다.
2.
벌크 업데이트(Bulk Update)란?
- 대용랑의 데이터를 업데이트하는 빠른 방식
- 데이터의 한 건씩을 넣는 게 아니라 파일 전체를 Insert 해서 빠르게 수행이 가능
SQL 쿼리로벌크 업데이트를 작성하면 다음과 같이 작성할 수 있다.-- 1. 원본 테이블과 똑같은 임의의 테이블 생성 -- ORD_TABLE이 원본 테이블이며 TMP_TABLE이 원본 테이블을 복사할 임의 테이블이 된다. CREATE TEMPORARY TABLE TMP_TABLE LIKE ORG_TABLE -- 2. 임시 테이블에 모든 데이터를 저장 INSERT TMP_TABLE VALUES (DATA들); -- 3. 원본 테이블 BULK UPDATE UPDATE ORG_TABLE O INNER JOIN TMP_TABLE T ON O.COL1 = T.COL1 OR O.COL2 = T.COL2; -- 4. 임시 테이블 삭제 DROP TEMPORARY TABLE TMP_TABLE;