DevOps BootCamp 171

수평 확장된 데이터베이스와 중복 처리 (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) 성능에만 영향 고려사항 > 별도의 저장공간을 확보 > 데이터에 연계된 인덱스들을 필요에 따라 설정 > 데이터 변경에 따라서 인덱스에 대한 수정도 연계되어 이루어져야 하므로 적절하게 인덱스를 활용하지 못하는 경우 오히려 성능저하의 문제가 발생 > 자주사용하는 정도나, 분포, 정보의 변경 주기 등 다양한 사항을 고려해 목적에 맞게 인덱스를 설정

SQL - INSERT, UPDATE, DELETE

● INSERT INTO 구문 INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); INSERT INTO table_name VALUES (value1, value2, value3, ...); > 모든 열에 값을 추가하는 경우, 속성 추가 x 지정된 열에만 데이터 삽입 INSERT INTO Customers (CustomerName, City, Country) VALUES ('Cardinal', 'Stavanger', 'Norway'); ★ NULL : NULL 값이 있는 필드는 값이 없는 필드 IS NULL 구문 SELECT column_names FROM table_name WHERE c..

SQL - SELECT

SELECT DISTINCT 구문 SELECT DISTINCT column1, column2, ... FROM table_name; > 중복값 제거 SELECT COUNT(DISTINCT Column1) FROM Table_name; > 서로 다른(구별된) 속성의 개수 다음은 MS Access에 대한 해결 방법입니다. SELECT Count(*) AS DistinctColumns FROM (SELECT DISTINCT Column FROM Table_name); WHERE 구문 SELECT column1, column2, ... FROM table_name WHERE condition; > SQL은 텍스트 값을 작은따옴표로 묶어야 합니다(대부분의 데이터베이스 시스템에서는 큰따옴표도 허용함). 그러나 숫자..

데이터베이스 기초

메모리에 임시 저장(In-Memory) > 데이터를 다룰 때에는 프로그램이 실행될 때에만 존재하는 데이터 > 예를 들어 변수를 만들어 값을 저장한 경우, 해당 값은 메모리 상에 일시적으로 저장되지만, 프로그램이 종료될 때 해당 프로그램이 사용하던 데이터도 사라짐 파일 입/출력(I/O) > 파일을 읽는 방식으로 작동하는 형태를 말함 > 엑셀 시트나 CSV 같은 파일의 형태 > but 데이터가 필요할 때마다 전체 파일을 매번 읽어야 함, 복잡하고 데이터량이 많아질수록 데이터를 불러들이는 작업이 점점 힘들어 짐 but 관계형 데이터베이스에서는 하나의 CSV 파일이나 엑셀 시트를 한 개의 테이블로 저장할 수 있음 > 한번에 여러 개의 테이블을 가질 수 있기 때문에 SQL 을 활용해 데이터를 불러오기 수월 ★ R..