관계 형 데이터베이스 와 MapReduce

5198 단어
가 소 강 옮 김 오리지널 출처 밝 혀 주세요. 감사합니다!
관계 형 데이터 베 이 스 는 데이터 저장 검색 에 광범 위 하 게 응용 되 고 MapReduce 를 바탕 으로 하 는 빅 데 이 터 는 대량의 데 이 터 를 잘 처리 하 는 것 이 라 고 불 린 다. 본 고 는 이들 을 분석 할 것 이다.
관계 형 데이터베이스
관계 형 데이터베이스 의 전형 적 인 조작 은 분포 데이터베이스 여러 장의 표 일부 줄 과 일부 열의 데 이 터 를 조회 한 다음 에 그룹, 집합 (최대 값, 최소 값, 구 화 등) 을 할 수 있다. 다음 과 같은 형식 이다.
SELECT col1,col2...
FROM table1
INNER JOIN table2 on table1.id=table2.table1_id
WHERE condition
GROUP BY xx

심지어 다 층 key 의 value 값 에 따라 집합 할 수 있 습 니 다. col 1, col 2, col 3 로 그룹 을 나 눈 후 col 4 값 의 열 을 바 꿀 수 있 습 니 다. (그 중에서 col 2 는 서로 다른 키워드 에 따라 3 가지 결과 로 대응 합 니 다) 다음 과 같은 형식 입 니 다.
WITH table1 AS (
            SELECT
            col1,
            CASE
                WHEN LOWER(col2) LIKE '%keyword10%' THEN 'keyword1'
                WHEN LOWER(col2) LIKE '%keyword20%' THEN 'keyword2'
                WHEN LOWER(col2) LIKE '%keyword30%' THEN 'keyword3'
            END AS col2x,
            col3,
            col4
            FROM (
                         :          
                  ),
table2 AS (
           SELECT *
           FROM table1
           WHERE col2s IS NOT NULL
                 )
SELECT
    col1,
    col2x,
    col3,
    listagg(round(col4, 2), ',') WITHIN GROUP (ORDER BY col4) AS col4s\
FROM table2
GROUP BY col1, col2x, col3

위의 예 는 관계 형 데이터 베 이 스 를 어떻게 처리 할 수 있 는 지 예 를 들 어 설명 한 것 일 뿐 실제 관계 형 데이터 베 이 스 는 자신의 장점 도 있다. 예 를 들 어 안전 (사무 로 인 한), 효율 (BTree 색인 으로 인 한) 이다.
그렇다면 어떤 문제 가 관계 형 데이터베이스 에 적합 합 니까?1. 안전 (사무) 에 대한 요구 2. 실시 간 검색 효율 에 대한 요구
관계 형 데이터 베 이 스 는 실제 적 으로 조직 데이터 의 형식 일 뿐 문 제 는 서로 다른 형식의 데이터 가 서로 다른 효율 을 나타 내 는 것 이다. 그러나 이런 전환 능력 이 없 거나 대량의 파일 데이터 에서 유용 한 데 이 터 를 추출 하 는 능력 이 없다 는 것 이다. 그의 데 이 터 는 모두 준비 되 어 있 고 규범 적 으로 제약 을 받는다.
관계 형 데이터 베 이 스 는 라 이브 러 리 를 통 해 실제 적 으로 다 중 하드웨어 지원 을 받 을 수 있 지만 대량의 데 이 터 를 처리 하여 원시 데이터 에서 변형 을 추출 하 는 능력 을 가지 지 않 습 니 다. 관계 형 데이터 베이스 의 데이터 추출 변형 은 이미 입 고 된 데이터 에 있 습 니 다. 물론 간단 하고 효과 적 인 프로그램 다 중 프로 세 스 분포 식 으로 입고 할 수 있 습 니 다.
MapReduce
예 를 들 어 자바 에서 Hadoop 프레임 워 크 는 MapReduce 를 실현 했다. 이것 은 프로 그래 밍 모델 로 프로그래머 를 분포 식 의 복잡성 에서 해방 시 킬 수 있다. 즉, Hadoop 프레임 워 크 를 사용 하면 분포 식 계산, 분포 식 저장 다 하드웨어 지원 능력 을 얻 을 수 있 을 뿐만 아니 라 분포 식 프로 그래 밍 의 여러 가지 난점 도 피 할 수 있다. 예 를 들 어 사용 할 수 있다.
  • 대량의 데 이 터 를 바탕 으로 SQL 을 모 의 하 는 작업 은 MapReduce 를 통 해 SQL 의 효 과 를 모 의 할 수 있다. 예 를 들 어 조별 계수, 최대 치, 최소 치, 구 화 등
  • Google 을 사전 처리 하고 직접 처리 하여 전 세계 역방향 색인 을 만 듭 니 다. 먼저 많은 파충류 가 전 세계 사 이 트 를 기어 올 라 간 다음 에 기어 오 른 문 서 를 MapReduce 시스템 에 넘 겨 역방향 색인 을 만 들 고 마지막 에 데이터 베 이 스 를 존재 하기 때문에 MapReduce 의 사전 처 리 를 통 해 빠 른 키 워드 를 찾 을 수 있 습 니 다. 그렇지 않 으 면 전 세계 사 이 트 를 직접 찾 는 데 시간 이 오래 걸 립 니 다
  • .
    다음은 MapReduce 의 WordCount 코드 예 (일반 언어 에 해당 하 는 Hello World 입문 프로그램) 입 니 다.
    Maper
    public class WordCountMapper extends Mapper{
        
        @Override
        protected void map(LongWritable key, Text value,Context context) throws IOException, InterruptedException {
            String line = value.toString();
            String[] words=line.split(" ");
            for(String word:words){
                context.write(new Text(word), new IntWritable(1));
            }
        }
    }
    

    Reducer
    public class WordCountReducer extends Reducer{
        @Override
        protected void reduce(Text key, Iterable values,Context context) throws IOException, InterruptedException {
            int count = 0;
            for(IntWritable value:values){
                count+=value.get();
            }
            context.write(key, new IntWritable(count));
        }
    }
    

    인터페이스의 측면 에서 볼 때 너무 간단 하 다 고 할 수 있 지만 이런 간단 한 시 뮬 레이 션 은 어떤 문 제 를 해결 할 수 있 습 니까? 아니면 어떤 문제 가 MapReduce 에 적합 합 니까?
  • 데이터 양 이 많 습 니 다. 데이터 양 이 적 으 면 여러 대의 컴퓨터 의 하드웨어 능력 을 분포 식 으로 이용 할 필요 가 없 기 때 문 입 니 다
  • 기계 학습 이 반복 적 인 계산 집약 형 임 무 를 통 해 분포 식 으로 하기 어 려 운 것 은 아니 지만 Spark 와 같은 메모리 기반 모델 은 기계 학습 에 도 지원 을 제공 했다
  • .
  • 맵 과 Reduce 함수 가 인 코딩 할 수 있 기 때문에 SQL 의 유한 한 조작
  • 이 아니 라 여러 가지 복잡 한 논 리 를 추가 할 수 있 습 니 다.
  • 바로 결 과 를 얻 을 수 있 는 관계 형 데이터 베이스 가 우세 하지 않 습 니 다. 장점 은 네 번 째 점 입 니 다. 다양한 수 요 를 유연 하 게 인 코딩 하여 만족 시 킬 수 있 기 때문에 관계 형 데이터 베이스 의 예비 처리 시스템
  • 으로 할 수 있 습 니 다.
    MapRedue 가 없다 고 가정 하면 Google 은 어떻게 역방향 색인 을 만 듭 니까?
  • 많은 파충류 가 전 세계 홈 페이지
  • 를 기어 올 랐 다.
  • 많은 해상도 기 가 기어 오 른 문 서 를 분석 하고 하나의 문서 의 역방향 색인
  • 을 만 듭 니 다.
  • 키 1: 1, 2, 3, 키 2: 4, 5, 6 등 여러 가지 키 1 표, 키 2 표 에 적 습 니 다. 키 가 많 기 때문에 여기 서 모든 해상도 기 는 데이터 베이스 와 대응 하 는 키 수량 으로 연 결 됩 니 다. 또한 해상도 기 가 많 기 때문에 데이터 베이스 연결 압력 이 매우 큽 니 다. 여기 서 의 연결 은 키 에 대응 하 는 값 을 한데 모 으 기 위 한 것 입 니 다. (즉, 표 한 장 에 쓰 는 것 입 니 다)그러면 여기 가 MapReduce 라면 취 합 작업 을 더욱 제어 할 수 있 고 최적화 할 수 있 습 니 다. key 1: 1, 2, 3, 7, 8, 9, 23, 55, 33 25 를 취 합 할 수 있 습 니 다. 다시 한 번 연결 을 만들어 기록 하면 연결 압력 이 많이 낮 아 집 니 다
  • .
    결론.
    실제로 MapReduce 를 보면 순수 하고 관계 형 데이터 베이스 와 효율 적 이지 못 합 니 다. 이들 의 용 도 는 완전히 같 지 않 기 때 문 입 니 다. 비록 일부 지역 은 유형의 효 과 를 얻 을 수 있 지만 저 는 관계 형 데이터 베이스 와 MapReduce 는 서로 보조 할 수 있다 고 생각 합 니 다. 예 를 들 어 역방향 색인 의 예 를 들 어
    컴퓨터 과학 이나 더 구체 적 인 프로 그래 밍 은 특정한 데 이 터 를 다른 데이터 로 변형 시 키 는 것 이 아니 라 MapReduce 를 통 해 이러한 변형 능력 이 더욱 강해 질 수 있다.
    Happy learning !!

    좋은 웹페이지 즐겨찾기