답변:
열 지향 데이터베이스 (= 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 )
그것은 당신이 하는 일에 달려 있습니다.
칼럼 매장에는 두 가지 주요 이점이 있습니다.
그러나 그들은 또한 단점이 있습니다.
Columnar 스토리지는 OLAP, 즉 "stupid analytics"(Michael Stonebraker)에게 인기가 있으며 물론 전체 컬럼을 버리는 데 관심이있을 수있는 전처리 에 사용됩니다 (하지만 먼저 구조화 된 데이터가 필요합니다. JSON을 columnar에 저장하지 않음) 체재). 기둥 형 레이아웃은 지난 주에 판매 한 사과의 수를 세는 등 정말 좋습니다.
많은 과학 / 데이터 과학 사용 사례에서 배열 데이터베이스 는 갈 길이 멀다 (물론 구조화되지 않은 입력 데이터). 예 : SciDB 및 RasDaMan.
많은 경우 (예 : 딥 러닝) 행렬과 배열은 열이 아닌 필요한 데이터 유형입니다. 물론 MapReduce 등은 여전히 전처리에 유용 할 수 있습니다. 아마도 열 데이터 일 수도 있지만 배열 데이터베이스는 일반적으로 열과 같은 압축도 지원합니다.
칼럼 데이터베이스를 사용하지는 않았지만 Parquet라는 오픈 소스 칼럼 파일 형식을 사용했으며 이점은 아마도 동일하다고 생각합니다. 열 수 140 노드 Hadoop 클러스터에서 약 1 시간 30 분이 걸리는 673 개의 열이있는 약 50TB의 Avro 파일 (행 지향 파일 형식)에서 쿼리를 실행했습니다. Parquet를 사용하면 열이 5 개만 필요했기 때문에 동일한 쿼리에 약 22 분이 걸렸습니다.
적은 수의 열이 있거나 많은 비율의 열을 사용하는 경우 기본적으로 모든 데이터를 스캔해야하기 때문에 열 데이터베이스가 행 지향 데이터베이스와 큰 차이를 만들지 않을 것이라고 생각합니다. 열 중심 데이터베이스는 열을 개별적으로 저장하는 반면 행 지향 데이터베이스는 행을 개별적으로 저장한다고 생각합니다. 디스크에서 적은 양의 데이터를 읽을 수있을 때마다 쿼리 속도가 빨라집니다.
이 링크 는 자세한 내용을 설명합니다.
참고 : 이것은 내 질문이며, 여기서 훌륭한 답변에 감사드립니다.이 개념을 이해하는 데 도움이되었습니다.
그래서 나는 개념을 내가 이해 한 방식으로 설명 할 것이다.
일반적으로 데이터베이스의 데이터는 다음 형식으로 메모리에 저장됩니다.
이 데이텀을 고려하십시오.
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
열 형태로.
이것이 무엇을 의미합니까?
즉, 마지막 몇 개의 값 또는 처음 몇 개의 값만 제거하므로 행 기반 열 저장소에서 삽입 및 업데이트가 빠릅니다. 그러나 각 블록 저장소의 값을 제거해야하므로 기둥 형 저장소의 경우에는 해당되지 않습니다.
그러나 기둥 형 집계 및 연산이 필요한 경우 기둥 형 저장소는 열 단위로 저장되므로 행 기반 대응점보다 우위에 있으므로 개별 열에 액세스하는 것이 매우 쉽습니다.