Yahoo

 

 

 

 

 

 

검색어 자동완성 데이터베이스가 하둡을 이용해 빌딩됨.

3 년치의 로그 데이터


20여개의 MapReduce job들이 데이터베이스를 빌딩.  





 

Before Hadoop 

 After Hadoop

 시간

 26일

 20분

 개발언어

 C++

 Python

 개발시간

 2-3 주

 2-3 일

 

 

 

 


생성자 오버로딩 예제(2)

 

 

class Program

{

  public static void Main()

  {

  Circle circle1 = new Circle();

  Circle circle2 = new Circle(100.0);

  }

}

 

 

 

 

 

 

 

생성자 오버로딩 예제(1)

 

 

 

 

using System;

class Circle

{

      public double radius;

 

 public Circle() //오버로딩 됨

 {

  this.radius = 1.0;

 }

 public Circle(double r)  //오버로딩 됨

 {

  this.radius = r;

 }

}

 

 

 

 

생성자 (Constructor) (2)

 

 

 

 

Ø 인스턴스 생성자
l 기본 생성자가 하지 않는 일을 생성자에서 해야 할 때, 클래스와 동일한 이름을 가지는 메소드를 오버라이딩하여 사용한다.
l 생성자 메소드가 있으면 기본 생성자는 호출되지 않는다.
l 다양한 인자를 가진 여러 개의 생성자를 오버로딩 할 수있다. (다음 페이지 예제)
l 읽기 전용 필드를 생성자가 초기화 할 수 있다.

 

 

 

 

 

 

DECODE 사용시 주의사항

 

*펼칠 컬럼이 너무 많을때는 먼저 GROUP BY 한 후 처리하라.

select dept_no,

sum(decode(substr(wk_kt,7,2), '01', amt)) d1,

sum(decode(substr(wk_kt,7,2), '02', amt)) d2,

sum(decode(substr(wk_kt,7,2), '03', amt)) d3,

sum(decode(substr(wk_kt,7,2), '04', amt)) d2,

,,,

sum(decode(substr(wk_kt,7,2), '31', amt)) d31

​ 

 

select dept_no,

sum(decode(dd,'01', amt)) d1,

sum(decode(dd,'02', amt)) d2,

sum(decode(dd,'03', amt)) d3,

sum(decode(dd,'04', amt)) d4,

,,,                                                                   ▶①, ②, ④, ⑤는 동일하다.

sum(decode(dd,'31', amt)) d31​                      ③의 결과는 count(8) 과 동일하다.

  from(select dept_no, substr(wk_dt,7,2), dd, sum(amt) amt

         from tab1                                                 ▶①은 ②보다 불리다하(불필요한 0 연산)

         where wk_dt like '200401%'

         )                                                            ②는 ④, ⑤보다 불리

group by dept_no

                                                                      ▶④, ⑤는 동일하다.

*COUNT, SUM의 비교

sum(decode(col1,'A',1,0))

sum(decode(col1,'A',1))             □SUM은 COUNT에 비해 30~50% 불리함

count(decode(col1,'A',1,0))                          

count(decode(col1,'A',1))           □COUNT는 not null인 경우에만 처리

count(decode(col1,'A','C'))

                                                        COUNT를 사용할 수 있다면 SUM을 사용하지 마라.

 

 

 

 

DECODE 사용시 주의사항

 

*case문으로 대체 2

 

*case문으로 대체 3

 

*case문으로 대체 4

DECODE 사용시 주의사항

 

*ELSE 없는 IF를 사용하라.

     select sum(decode(col1, 1, qty, 0)),...

  →select sum(decode(col1, 1, qty)),...

 

*가능한 그룹함수내에서 nvl을 사용하지 마라

     select sum(decode(col1, 1, nvl(qty,0))),...

  →select nvl(sum(decode(col1, 1, qty)),0),...

 

*가능한 반복해서 DECODE를 사용하지 마라

 

。컬럼결합법

     select sum(decode(market, 'D',

                              decode(type, '1',

                                       decode(unit, 'A',0.2 * col,

                                                          'B',0.5 * col,...

   →select sum(decode(market || type || unit, 'D1A', 0.2,

                                                                  'D1B' 0.5,...)) * col

 

case문으로 대체 1

 

일반 함수 CASE 함수 예

 

*사용 예

-교수 테이블에서 소속 학과에 따라 보너스를 다르게 계산하여 출력하여라. 학과 번호별로 보너스는 다음과 같이 계산한다. 학과 번호가 101이면 보너스는 급여의 10%, 102이면 20%, 201이면 30%, 나머지 학과는 0%이다.

 

 

+ Recent posts