기둥 형 데이터베이스가 데이터 과학에 적합한 이유는 무엇입니까?


23

데이터 과학 및 분석에 더 적합한 컬럼 형 데이터 저장소의 장점은 무엇입니까?

답변:


27

열 지향 데이터베이스 (= columnar data-store)는 테이블 열 단위의 데이터를 디스크에 저장하고 행 지향 데이터베이스는 테이블의 데이터를 행 단위로 저장합니다.

행 지향 데이터베이스와 비교하여 열 지향 데이터베이스를 사용하면 두 가지 주요 이점이 있습니다. 첫 번째 장점은 단지 몇 가지 기능으로 작업을 수행 할 경우 읽을 데이터 양과 관련이 있습니다. 간단한 쿼리를 고려하십시오.

SELECT correlation(feature2, feature5)
FROM records

전통적인 executor는 전체 테이블 (즉, 모든 기능)을 읽습니다.

여기에 이미지 설명을 입력하십시오

대신 열 기반 접근 방식을 사용하여 관심있는 열을 읽어야합니다.

여기에 이미지 설명을 입력하십시오

큰 데이터베이스에도 매우 중요한 두 번째 장점은 특정 열의 데이터가 모든 열에 비해 균질하기 때문에 열 기반 저장소가 더 나은 압축을 허용한다는 것입니다.

열 지향 방식의 주요 단점은 주어진 행 전체를 조작 (조회, 업데이트 또는 삭제)하는 것이 비효율적이라는 것입니다. 그러나 분석을위한 데이터베이스 ( "웨어 하우징")에서는 상황이 거의 발생하지 않아야합니다. 즉, 대부분의 작업이 읽기 전용이고 동일한 테이블에서 많은 속성을 거의 읽지 않으며 쓰기는 단지 추가 일뿐입니다.

일부 RDMS는 열 지향 스토리지 엔진 옵션을 제공합니다. 예를 들어 PostgreSQL에는 기본적으로 열 기반 방식으로 테이블을 저장하는 옵션이 없지만 Greenplum은 비공개 소스 테이블을 만들었습니다 (DBMS2, 2009). 흥미롭게도 Greenplum은 확장 가능한 데이터베이스 내 분석을위한 오픈 소스 라이브러리 인 MADlib (Hellerstein et al., 2012) 뒤에 있으며 이는 우연의 일치가 아닙니다. 보다 최근에는 고속의 분석 데이터베이스 작업을 시작한 CitusDB가 PostgreSQL, CSTORE (Miller, 2014)를위한 자체 오픈 소스 컬럼 저장소 확장을 출시했습니다. 대규모 머신 러닝을위한 Google 시스템 Sibyl은 또한 열 중심 데이터 형식을 사용합니다 (Chandra et al., 2010). 이러한 추세는 대규모 분석을위한 열 지향 스토리지에 대한 관심이 높아지고 있음을 반영합니다. Stonebraker et al. (2005)는 컬럼 지향 DBMS의 장점에 대해 더 논의합니다.

두 가지 구체적인 사용 사례 : 대규모 기계 학습을위한 대부분의 데이터 세트는 어떻게 저장됩니까?

(대부분의 대답은 다음의 부록 C에서 나옵니다 : BeatDB : 대량의 신호 데이터 세트에서 돌출을 공개하기위한 엔드-투-엔드 접근. Franck Dernoncourt, SM, 논문, MIT Dept of EECS )


1
대단한 답변입니다. 아름답게 설명했다. 고맙습니다.
Dawny33

1
이것은 매우 잘 작성된 답변이며 다이어그램이 매우 유용합니다. 참조도 인정된다.
Shawn Mehan

이제는 기둥 형 레이아웃의 k- 평균 군집화 또는 SVM을 고려하십시오.
Anony-Mousse

11

그것은 당신이 하는 일에 달려 있습니다.

칼럼 매장에는 두 가지 주요 이점이 있습니다.

  • 전체 열을 건너 뛸 수 있습니다
  • 실행 길이 압축은 열에서 더 잘 작동합니다 (특정 데이터 유형의 경우, 특히 별개의 값이 거의 없음)

그러나 그들은 또한 단점이 있습니다.

  • 많은 알고리즘은 모든 열을 필요로하며 한 번에 기록 (예 : k- 평균)하거나 짝수 거리 행렬을 계산해야 할 수도 있습니다.
  • 압축 기술은 희소 데이터 유형 및 요인에 대해서만 작동하지만 이중 값 연속 데이터에는 적합하지 않습니다.
  • 열 저장소에 추가하는 것은 비싸므로 데이터 스트리밍 / 변경에 적합하지 않습니다.

Columnar 스토리지는 OLAP, 즉 "stupid analytics"(Michael Stonebraker)에게 인기가 있으며 물론 전체 컬럼을 버리는 데 관심이있을 수있는 전처리 에 사용됩니다 (하지만 먼저 구조화 된 데이터가 필요합니다. JSON을 columnar에 저장하지 않음) 체재). 기둥 형 레이아웃은 지난 주에 판매 한 사과의 수를 세는 등 정말 좋습니다.

많은 과학 / 데이터 과학 사용 사례에서 배열 데이터베이스 는 갈 길이 멀다 (물론 구조화되지 않은 입력 데이터). 예 : SciDB 및 RasDaMan.

많은 경우 (예 : 딥 러닝) 행렬과 배열은 열이 아닌 필요한 데이터 유형입니다. 물론 MapReduce 등은 여전히 ​​전처리에 유용 할 수 있습니다. 아마도 열 데이터 일 수도 있지만 배열 데이터베이스는 일반적으로 열과 같은 압축도 지원합니다.


3

칼럼 데이터베이스를 사용하지는 않았지만 Parquet라는 오픈 소스 칼럼 파일 형식을 사용했으며 이점은 아마도 동일하다고 생각합니다. 열 수 140 노드 Hadoop 클러스터에서 약 1 시간 30 분이 걸리는 673 개의 열이있는 약 50TB의 Avro 파일 (행 지향 파일 형식)에서 쿼리를 실행했습니다. Parquet를 사용하면 열이 5 개만 필요했기 때문에 동일한 쿼리에 약 22 분이 걸렸습니다.

적은 수의 열이 있거나 많은 비율의 열을 사용하는 경우 기본적으로 모든 데이터를 스캔해야하기 때문에 열 데이터베이스가 행 지향 데이터베이스와 큰 차이를 만들지 않을 것이라고 생각합니다. 열 중심 데이터베이스는 열을 개별적으로 저장하는 반면 행 지향 데이터베이스는 행을 개별적으로 저장한다고 생각합니다. 디스크에서 적은 양의 데이터를 읽을 수있을 때마다 쿼리 속도가 빨라집니다.

이 링크 는 자세한 내용을 설명합니다.


0

참고 : 이것은 내 질문이며, 여기서 훌륭한 답변에 감사드립니다.이 개념을 이해하는 데 도움이되었습니다.

그래서 나는 개념을 내가 이해 한 방식으로 설명 할 것이다.

일반적으로 데이터베이스의 데이터는 다음 형식으로 메모리에 저장됩니다.

이 데이텀을 고려하십시오.

           X1         X2
1   0.7091409 -1.4061361
2  -1.1334614 -0.1973846
3   2.3343391 -0.4385071

관계형 행 기반 저장소에는 다음과 같이 저장됩니다.

1, 0.7091409, -1.4061361, 2, -1.1334614, -0.1973846, 3, 2.3343391, -0.4385071 

행 형태로.

컬럼 저장소에서 다음과 같이 저장됩니다.

1, 2, 3, 0.7091409 ,-1.1334614, 2.3343391, -1.4061361, -0.1973846, -0.4385071

열 형태로.

이것이 무엇을 의미합니까?

즉, 마지막 몇 개의 값 또는 처음 몇 개의 값만 제거하므로 행 기반 열 저장소에서 삽입 및 업데이트가 빠릅니다. 그러나 각 블록 저장소의 값을 제거해야하므로 기둥 형 저장소의 경우에는 해당되지 않습니다.

그러나 기둥 형 집계 및 연산이 필요한 경우 기둥 형 저장소는 열 단위로 저장되므로 행 기반 대응점보다 우위에 있으므로 개별 열에 액세스하는 것이 매우 쉽습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.