관계 형 데이터베이스 와 MapReduce
관계 형 데이터 베 이 스 는 데이터 저장 검색 에 광범 위 하 게 응용 되 고 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 프레임 워 크 를 사용 하면 분포 식 계산, 분포 식 저장 다 하드웨어 지원 능력 을 얻 을 수 있 을 뿐만 아니 라 분포 식 프로 그래 밍 의 여러 가지 난점 도 피 할 수 있다. 예 를 들 어 사용 할 수 있다.
다음은 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 에 적합 합 니까?
MapRedue 가 없다 고 가정 하면 Google 은 어떻게 역방향 색인 을 만 듭 니까?
결론.
실제로 MapReduce 를 보면 순수 하고 관계 형 데이터 베이스 와 효율 적 이지 못 합 니 다. 이들 의 용 도 는 완전히 같 지 않 기 때 문 입 니 다. 비록 일부 지역 은 유형의 효 과 를 얻 을 수 있 지만 저 는 관계 형 데이터 베이스 와 MapReduce 는 서로 보조 할 수 있다 고 생각 합 니 다. 예 를 들 어 역방향 색인 의 예 를 들 어
컴퓨터 과학 이나 더 구체 적 인 프로 그래 밍 은 특정한 데 이 터 를 다른 데이터 로 변형 시 키 는 것 이 아니 라 MapReduce 를 통 해 이러한 변형 능력 이 더욱 강해 질 수 있다.
Happy learning !!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.