Cơ sở dữ liệu dạng cột là gì?


97

Tôi đã làm việc với kho bãi được một thời gian.

Tôi bị hấp dẫn bởi Cơ sở dữ liệu Columnar và tốc độ mà chúng phải cung cấp để truy xuất dữ liệu.

Tôi có câu hỏi gồm nhiều phần:

  • Cơ sở dữ liệu Columnar hoạt động như thế nào?
  • Chúng khác với cơ sở dữ liệu quan hệ như thế nào?

1
Ngoài số lượng tìm kiếm giảm được đề cập trong câu trả lời, một số triển khai (ví dụ: kho lưu cột của máy chủ SQL) sẽ nén dữ liệu. Điều này ngăn chặn việc lọc hàng nhưng cũng có thể cải thiện hiệu suất truy vấn.
Pace

Câu trả lời:


49

Cơ sở dữ liệu Columnar hoạt động như thế nào?
Cơ sở dữ liệu cột là một khái niệm chứ không phải là một kiến trúc / triển khai cụ thể. Nói cách khác, không có một mô tả cụ thể nào về cách các cơ sở dữ liệu này hoạt động; thực sự, một số được xây dựng dựa trên DBMS truyền thống, hướng hàng, chỉ cần lưu trữ thông tin trong các bảng với một (hoặc thường là hai) cột (và thêm lớp cần thiết để truy cập dữ liệu cột một cách dễ dàng).

Chúng khác với cơ sở dữ liệu quan hệ như thế nào? Chúng thường khác với cơ sở dữ liệu truyền thống (hướng theo hàng) liên quan đến ...

  • hiệu suất...
  • yêu cầu lưu trữ ...
  • dễ sửa đổi lược đồ ...

... trong các trường hợp sử dụng cụ thể của DBMS .
Đặc biệt, chúng mang lại lợi thế trong các lĩnh vực được đề cập khi việc sử dụng điển hình là tính toán các giá trị tổng hợp trên một số cột hạn chế, trái ngược với việc thử và truy xuất tất cả / hầu hết các cột cho một thực thể nhất định.

Có phiên bản dùng thử của cơ sở dữ liệu dạng cột mà tôi có thể cài đặt để chơi thử không? (Tôi đang sử dụng Windows 7) Có, có triển khai cơ sở dữ liệu dạng cột thương mại, miễn phí và cũng là mã nguồn mở. Xem danh sách ở cuối bài viết Wikipedia cho người bắt đầu.
Hãy lưu ý rằng một số triển khai này đã được giới thiệu để giải quyết một nhu cầu cụ thể (ví dụ như dấu vết rất nhỏ, phân phối dữ liệu có thể nén cao hoặc mô phỏng ma trận dự phòng, v.v.) thay vì cung cấp cho mỗi lần một DBMS hướng cột có mục đích chung.

Lưu ý: Nhận xét về "định hướng mục đích duy nhất" của một số DBMS dạng cột không phải là sự chỉ trích về các triển khai này, mà là một dấu hiệu bổ sung rằng cách tiếp cận như vậy đối với các DBMS khác với cách tiếp cận "tự nhiên" hơn (và chắc chắn được sử dụng rộng rãi hơn) đối với lưu trữ các thực thể bản ghi. Do đó, cách tiếp cận này được sử dụng khi cách tiếp cận hướng theo hàng không đạt yêu cầu và do đó và có xu hướng
a) được nhắm mục tiêu cho một mục đích cụ thể b) nhận được ít nguồn lực / sự quan tâm hơn so với việc làm về "Mục đích chung", "Đã thử và Đã kiểm tra ”, cách tiếp cận dạng bảng.

Dự kiến, mô hình dữ liệu Thực thể-Thuộc tính-Giá trị (EAV), có thể là một chiến lược lưu trữ thay thế mà bạn có thể muốn xem xét. Mặc dù khác biệt với mô hình Columnar DB "thuần túy", EAV có một số đặc điểm của các Columnar DB.


253

Cơ sở dữ liệu cột hoạt động như thế nào? Khái niệm xác định của lưu trữ cột là các giá trị của một bảng được lưu trữ liên tục theo cột. Do đó, bảng nhà cung cấp cổ điển từ cơ sở dữ liệu nhà cung cấp và bộ phận của CJ Date:

SNO  STATUS CITY    SNAME
---  ------ ----    -----
S1       20 London  Smith
S2       10 Paris   Jones
S3       30 Paris   Blake
S4       20 London  Clark
S5       30 Athens  Adams

sẽ được lưu trữ trên đĩa hoặc trong bộ nhớ như:

S1S2S3S4S5;2010302030;LondonParisParisLondonAthens;SmithJonesBlakeClarkAdams 

Điều này trái ngược với một cửa hàng hàng truyền thống sẽ lưu trữ dữ liệu giống như thế này:

S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams

Từ khái niệm đơn giản này, tất cả những khác biệt cơ bản về hiệu suất, tốt hơn hay tệ hơn, giữa cửa hàng theo cột và cửa hàng theo hàng. Ví dụ: một cửa hàng cột sẽ xuất sắc trong việc tổng hợp như tổng và trung bình, nhưng việc chèn một hàng duy nhất có thể tốn kém, trong khi điều ngược lại đúng với cửa hàng theo hàng. Điều này sẽ rõ ràng từ sơ đồ trên.

Chúng khác với cơ sở dữ liệu quan hệ như thế nào? Cơ sở dữ liệu quan hệ là một khái niệm logic. Cơ sở dữ liệu cột hay còn gọi là cột lưu trữ là một khái niệm vật lý. Vì vậy, hai thuật ngữ không thể so sánh theo bất kỳ cách nào có ý nghĩa. Các DMBS hướng theo cột có thể là quan hệ hoặc không, cũng như các DBMS hướng theo hàng có thể ít nhiều tuân thủ các nguyên tắc quan hệ.


22
Điều này có vẻ tốt hơn câu trả lời được chấp nhận, nhưng tôi không phải là chuyên gia. Ủng hộ.
Rob Grant

2
Cơ sở dữ liệu định hướng cột được sử dụng trong đó các tổng hợp trên các cột cụ thể được truy vấn như báo cáo bán hàng. Vấn đề ở đây là nếu bạn sử dụng cơ sở dữ liệu hướng hàng, thì tất cả các hàng (khối) cần được đưa vào bộ nhớ chính, bao gồm rất nhiều thời gian tìm kiếm từ đĩa để đưa tất cả khối từ đĩa sang ram, ngay cả khi bạn chỉ quan tâm đến cột giúp bạn cung cấp báo cáo bán hàng. Trong khi trong lược đồ định hướng cột, các cột được lưu trữ liền kề trong các khối, điều này làm cho ít tìm kiếm hơn do số lượng khối ít hơn. Vì vậy, cơ sở dữ liệu cột được sử dụng cho OLAP, trong khi định hướng hàng được sử dụng cho nội dung OLTP.
bharatj

4

Tôi muốn nói rằng ứng cử viên tốt nhất để hiểu về cơ sở dữ liệu hướng cột là kiểm tra HBase ( Apache Hbase ). Bạn kiểm tra mã và khám phá thêm để tìm hiểu về việc triển khai.


2

Ngoài ra, Columnar DBs có một mối quan hệ tích hợp để nén dữ liệu và quá trình tải là duy nhất. Đây là một bài báo tôi đã viết vào năm 2008 giải thích thêm một chút.

Bạn cũng có thể quan tâm đến một báo cáo mới từ Carl Olofson của IDC về công nghệ DBMS thế hệ thứ 3. Nó thảo luận về cột, et al. Nếu bạn không phải là khách hàng IDC, bạn có thể tải miễn phí trên trang web của chúng tôi. Anh ấy cũng đang tổ chức hội thảo trên web vào ngày 16 tháng 6 (cũng trên trang web của chúng tôi).

(BTW, một bình luận ở trên liệt kê asterdata nhưng tôi không nghĩ chúng là cột.)


Bạn có thể nhận báo cáo IDC tại: paraccel.com/press/3rd_generation_database_technology
kim stanick

Aster Data là cơ sở dữ liệu quan hệ MPP và nó có hỗ trợ riêng cho các bảng cột.
topchef

@kimstanick, URL phân tích cú pháp đã chết.
user674669

2

Để hiểu cơ sở dữ liệu hướng cột là gì, tốt hơn là bạn nên đối chiếu nó với cơ sở dữ liệu hướng hàng.

Cơ sở dữ liệu hướng hàng (ví dụ: MS SQL Server và SQLite) được thiết kế để trả về dữ liệu một cách hiệu quả cho toàn bộ hàng. Nó thực hiện điều đó bằng cách lưu trữ tất cả các giá trị cột của một hàng cùng nhau. Cơ sở dữ liệu hướng hàng rất phù hợp với hệ thống OLTP (ví dụ: bán lẻ và hệ thống giao dịch tài chính).

Cơ sở dữ liệu hướng theo cột được thiết kế để trả về dữ liệu một cách hiệu quả cho một số cột hạn chế. Nó thực hiện bằng cách lưu trữ tất cả các giá trị của một cột cùng nhau. Hai cơ sở dữ liệu định hướng Cột được sử dụng rộng rãi là Apache Hbase và Google BigTable (được Google sử dụng cho Tìm kiếm, Phân tích, Bản đồ và Gmail). Chúng phù hợp với các dự án dữ liệu lớn. Cơ sở dữ liệu hướng cột sẽ vượt trội trong các thao tác đọc trên một số cột hạn chế, tuy nhiên thao tác ghi sẽ đắt hơn so với cơ sở dữ liệu hướng hàng.

Để biết thêm: https://en.wikipedia.org/wiki/Column-oriented_DBMS


1

Thông tin sản phẩm. Điều này có thể hữu ích. Đây là những sản phẩm nổi bật trên tìm kiếm của Google.

http://www.vertica.com/

http://www.paraccel.com/

http://www.asterdata.com/index.php


Một điều cần lưu ý về Vertica là tôi đã thấy một tài liệu tham khảo trên web về chi phí cấp phép là 150 nghìn đô la / TB dữ liệu được lưu trữ. vì vậy nó không hề rẻ.
Đánh dấu

@Mark: Chi phí không phải là vấn đề. Thông tin là vấn đề. Nếu OP muốn thông tin, các nhà cung cấp thường là nguồn tốt nhất có thể.
S.Lott

1
Amazon cung cấp dịch vụ lưu trữ dữ liệu RedShift siêu nhanh dưới 1.000 đô la mỗi terabyte mỗi năm nếu bạn không đặc biệt tìm kiếm Columnar.
mevdiven

1

kx là một cơ sở dữ liệu dạng cột khác, ví dụ được sử dụng trong lĩnh vực tài chính. Tuy nhiên, giấy phép là $ 50K lần cuối cùng tôi kiểm tra, mặc dù. Không cần tối ưu hóa, không chỉ số cần thiết, bởi vì kx có nhà khai thác mạnh mẽ (matlab tương đương: .*, kron, bsxfun, ...).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.