분류 전체보기 194

Greenplum - Loading Data

- Loading Data Loading Options. INSERT / COPY (psql) / EXTERNAL TABLES & gpfdist protocol(GPDB) / GPLOAD (GPDB) 가 있다. INSERT와 COPY는 Master를 통해서 데이터들을 넣어준다. gpfdist / gpload는 ETL Host에서 넣을 파일을 웹서버스 형태로 띄우고, 각 Segment에서 필요한 데이터들을 ETL Host에 접속해서 해당 Segment에 분산된 데이터를 가지고 간다. COPY는 초당 십만건 정도, GPLOAD는 초당 몇십만건 정도의 데이터가 들어간다. COPY. COPY를 활용해서 데이터를 테이블에 넣으려면 COPY 넣을테이블이름 FROM '파일위치'; COPY를 활용해서 테이블의 데이터를..

Greenplum 2019.12.13

Greenplum - DDL

- DDL GP에선 CHAR 대신 TEXT나 VARCHAR를 써야 한다. INT / SMALLINT로 충분한 경우 BIGINT를 쓰지 않아야 한다. JOIN에 활용되는 컬럼들의 데이터타입은 같게 해야 한다. JOIN 되는 데이터타입이 다르면 형변환이 발생하는데 그때 INDEX, PARTITION 등이 타지 않을 수 있고 JOIN 자체가 안될 수 있다. CREATEA TABLE: Storage model Row oriented, Column oriented 방식으로 테이블을 저장할 수 있다. Row oriented는 Row 별로, Column은 Column 별로 파일을 저장한다. Row는 WHERE절에 Filtering하게 될 때 장점이 있지만 컬럼 별로 SELECT을 하게 되면 Column 방식에 비해 ..

Greenplum 2019.12.13

Greenplum - Fundamental Concepts

GP DB 관련 좋은 참고용 Blog: http://gpdbkr.blogspot.com/ - Greenplum Fundamental Concepts Greeplum Architecture 세상에 흐르는 데이터 양이 많아 지고 있다. 따라서 이를 처리할 수 있는 데이터베이스 서버의 성능을 올리는 것이 필요한데, GP에선 성능을 올리는 기본적인 방식인 Scale up(서버의 CPU 성능을 올리는 것과 같은)이 있지만 Scale out(병렬 Segment를 늘리는 것과 같은)도 있다. GP는 Master, Standby, 그리고 여러 Segment들로 구성된 구조다. Segment들을 적극적으로 활용하기 위해서, 데이터들이 적절하게 분배되도록 하는 것이 중요하다. Master는 시스템의 진입점이다. 모든 사용..

Greenplum 2019.12.10

Spring - MVC Framework

DispatcherServlet Spring의 MVC Framewokr는 모든 HTTP request와 response들을 다루는 DispatcherServlet 주변에 구성되어 있습니다.DispatcherServlet은 HTTP request를 받으면 다음 일련의 이벤트가 발생합니다.DispatcherServlet은 HandlerMapping을 참조하여 적절한 Controller를 호출합니다.Controller은 request를 받고 GET 혹은 POST 메서드에 기반한 적절한 서비스 메서드를 호출합니다. 이 서비스 메서드는 정의된 비즈니스 로직에 근거하여 model data를 가져오며, DispatcherServlet에게 view 이름을 반환합니다.DispatcherServlet은 request를 위..

Spring 2017.03.29

Spring Bean Definition Inheritance

Bean definition은 생성자 arguments, 속성값들, 그리고 container의 초기화 메서드, 정적 factory 메서드 등과 같이 많은 configuration 정보들을 포함할 수 있습니다. Spring Bean definition에서는 상속이라는 개념이 있는데, 이는 자바의 클래스 상속과 무관하지만 상속이라는 개념은 같습니다. parent의 bean definition을 template으로 정의하고, 다른 child bean들이 필요한 설정들에 대해서 parent bean으로부터 상속 받는 것 입니다. XML-based configuration metadata를 사용한다면, bean definition의 parent 속성의 값을 상속할 parent bean의 이름으로 지정함으로써 상속..

Spring 2017.03.03

Spring Bean Post Processor

BeanPostProcessor interface는 개발자만의 고유한 초기화 로직을 제공할 수 있도록 구현할 수 있는 call back 메서드들을 정의합니다. 예를 들어, Bean이 초기화 되기 전에 해야할 작업들 혹은 초기화 후에 해야할 작업들을 BeanPostProcessor를 통해서 정의할 수 있습니다.BeanPostProcessor interface를 plug-in하여 Spring container가 bean의 인스턴스화, 설정, 초기화 작업이 끝난 후에 custom logic을 구현할 수 있습니다. 또한 여러개의 BeanPostProcessor interface들을 설정할 수 있으며, order 속성을 세팅함으로써 interface가 실행되는 순서를 지정할 수 있습니다. BeanPostProce..

Spring 2017.02.27

init-method와 destroy-method 속성

Spring Bean의 생명 주기는 이해하기 쉬운 편입니다. Bean이 초기화 되면, 사용할 수 있는 상태가 되기 위해 몇가지의 초기화 작업이 필요합니다. 비슷하게, Bean이 더 이상 필요하지 않게 되고, container에서부터 제거되면, 몇가지 clean up 작업이 필요합니다. Bean이 초기화 되고 파괴될 때 여러 보이지 않는 작업들이 발생하지만, 그 중에서도 가장 중요한 두 가지의 life cycle callback 메서드를 설명 드리고자 합니다. Bean을 정의할 때 init-method와 destroy-method 속성을 통해서 Bean 인스턴스가 만들어지고, 파괴될 때 호출되는 메서드를 지정할 수 있습니다. 1. Initialization, destruction callbacks by u..

Spring 2017.02.26

Spring Bean Scope

Spring에서 Bean을 정의할 때, Bean의 scope를 선언할 수 있는 option이 있습니다. 예를 들어서, bean instance를 매번 필요할 때마다 생성되게 하고 싶은 경우 scope 설정을 prototype으로 두면 됩니다. 또, Spring이 매번 bean instance를 호출할 때마다 같은 bean instance를 return하게 하고 싶은 경우, bean scope 설정을 singleton으로 하면 됩니다. Spring Framework는 다음 다섯가지의 scope들을 제공합니다. ScopeDescriptionsingletonSpring IoC Container가 하나의 instance를 만들어 사용합니다.prototype하나의 Bean definition으로 여러개의 객체 i..

Spring 2017.02.24

Bean Definition

Application을 구성하고 Spring IoC Container로부터 관리되는 객체들을 Beans라고 부릅니다. Bean은 Spring IoC Container로부터 초기화 되고, 어셈블되고 관리되며, IoC Cotainer가 이를 위해 참조하는 설정 데이터를 configuration metadata라고 합니다. 예를 들어, XML 형태의 태그와 같이 말이죠. Container는 다음과 같은 정보들을 알기 위해서, configuration metadata를 참조합니다.1. 어떻게 Bean을 생성할 것인지.2. Bean의 라이프 사이클 세부 정보.3. Bean의 dependencies.모든 위의 Configuration metadata들은 bean 객체를 정의하는 다음 설정들로 구성됩니다. Prope..

Spring 2017.02.24

Spring IoC Container

Spring container는 Spring Framework의 핵심입니다. container는 객체들을 만들고, 객체들을 묶어 주고, 설정하며, 생성 시점부터 파괴될 때까지의 라이프 사이클을 관리해줍니다. Spring container는 어플리케이션을 구성하는 컴포넌트들을 관리하기 위해서 dependency injection을 사용하며, 이 객체들을 Spring Beans라고 부른다. Container은 configuration metadata를 통해서 어떤 객체를 초기화하고 설정하며 만들지 결정합니다. Configuration metadata는 XML이나 Java annotation, 혹은 Java 코드로 표현됩니다. 다음 그림은 어떻게 Spring이 작동하는 지 보여주는 대략적인 다이어그램입니다. ..

Spring 2017.02.24