Điều gì làm cho cơ sở dữ liệu cột phù hợp cho khoa học dữ liệu?


23

Một số lợi thế của lưu trữ dữ liệu cột làm cho chúng phù hợp hơn cho khoa học dữ liệu và phân tích là gì?

Câu trả lời:


27

Cơ sở dữ liệu hướng theo cột (= lưu trữ dữ liệu cột) lưu trữ dữ liệu của cột trong bảng theo cột trên đĩa, trong khi cơ sở dữ liệu hướng hàng lưu trữ dữ liệu của một hàng theo bảng.

Có hai ưu điểm chính của việc sử dụng cơ sở dữ liệu hướng cột so với cơ sở dữ liệu hướng hàng. Ưu điểm đầu tiên liên quan đến lượng dữ liệu cần đọc trong trường hợp chúng tôi thực hiện một thao tác chỉ trên một vài tính năng. Hãy xem xét một truy vấn đơn giản:

SELECT correlation(feature2, feature5)
FROM records

Một giám đốc điều hành truyền thống sẽ đọc toàn bộ bảng (tức là tất cả các tính năng):

nhập mô tả hình ảnh ở đây

Thay vào đó, sử dụng phương pháp dựa trên cột của chúng tôi, chúng tôi chỉ cần đọc các cột quan tâm đến:

nhập mô tả hình ảnh ở đây

Ưu điểm thứ hai, cũng rất quan trọng đối với cơ sở dữ liệu lớn, đó là lưu trữ dựa trên cột cho phép nén tốt hơn, vì dữ liệu trong một cột cụ thể thực sự đồng nhất so với tất cả các cột.

Hạn chế chính của cách tiếp cận theo hướng cột là thao tác (tra cứu, cập nhật hoặc xóa) toàn bộ một hàng nhất định là không hiệu quả. Tuy nhiên, tình huống hiếm khi xảy ra trong cơ sở dữ liệu cho các phân tích (Dịch vụ lưu trữ dữ liệu trực tuyến), có nghĩa là hầu hết các hoạt động chỉ đọc, hiếm khi đọc nhiều thuộc tính trong cùng một bảng và ghi chỉ là phụ lục.

Một số RDMS cung cấp tùy chọn công cụ lưu trữ theo định hướng cột. Ví dụ, PostgreSQL thực sự không có tùy chọn để lưu trữ các bảng theo kiểu dựa trên cột, nhưng Greenplum đã tạo ra một nguồn đóng (DBMS2, 2009). Thật thú vị, Greenplum cũng đứng sau thư viện nguồn mở cho các phân tích trong cơ sở dữ liệu có thể mở rộng, MADlib (Hellerstein và cộng sự, 2012), không phải là ngẫu nhiên. Gần đây, CitusDB, một công ty khởi nghiệp làm việc trên cơ sở dữ liệu phân tích tốc độ cao, đã phát hành phần mở rộng cửa hàng cột nguồn mở của riêng họ cho PostgreQuery, CSTORE (Miller, 2014). Hệ thống của Google để học máy quy mô lớn Sibyl cũng sử dụng định dạng dữ liệu theo định hướng cột (Chandra et al., 2010). Xu hướng này phản ánh sự quan tâm ngày càng tăng xung quanh việc lưu trữ theo định hướng cột cho các phân tích quy mô lớn. Stonoplker et al. (2005) thảo luận thêm về những lợi thế của DBMS hướng cột.

Hai trường hợp sử dụng cụ thể: Làm thế nào hầu hết các bộ dữ liệu cho việc học máy quy mô lớn được lưu trữ?

(hầu hết câu trả lời đến từ Phụ lục C của: BeatDB: Cách tiếp cận từ đầu đến cuối để tiết lộ mức lương từ các bộ dữ liệu tín hiệu lớn. Franck Dernoncourt, SM, luận án, MIT Dept of EECS )


1
Đó là một câu trả lời tuyệt vời. Đẹp giải thích. Cảm ơn bạn.
Dawny33

1
Đây là một phản hồi bằng văn bản rất tốt, và các sơ đồ rất hữu ích. Các tài liệu tham khảo cũng được đánh giá cao.
Shawn Mehan

Bây giờ hãy xem xét k-nghĩa là phân cụm hoặc SVM với bố cục cột ...
Anony-Mousse

11

Nó phụ thuộc vào những gì bạn làm.

Cửa hàng cột có hai lợi ích chính:

  • toàn bộ cột có thể được bỏ qua
  • nén độ dài chạy hoạt động tốt hơn trên các cột (đối với các loại dữ liệu nhất định; đặc biệt với một vài giá trị riêng biệt)

Tuy nhiên, chúng cũng có nhược điểm:

  • nhiều thuật toán sẽ cần tất cả các cột và chỉ ghi lại tại một thời điểm (ví dụ: phương tiện k) hoặc thậm chí có thể cần tính toán một ma trận khoảng cách theo cặp
  • kỹ thuật nén chỉ hoạt động tốt trên các loại dữ liệu và yếu tố thưa thớt, nhưng không tốt trên dữ liệu liên tục có giá trị kép
  • Các phụ lục trên các cửa hàng cột rất đắt tiền, vì vậy không lý tưởng để truyền phát / thay đổi dữ liệu

Lưu trữ cột thực sự phổ biến đối với OLAP hay còn gọi là "phân tích ngu ngốc" (Michael Stonebraker) và tất nhiên là để xử lý trước khi bạn thực sự quan tâm đến việc loại bỏ toàn bộ các cột (nhưng trước tiên bạn cần phải có dữ liệu có cấu trúc - bạn không lưu trữ JSON trong cột định dạng). Bởi vì cách bố trí cột thực sự tốt đẹp, ví dụ như đếm số lượng táo bạn đã bán tuần trước.

Đối với hầu hết các trường hợp sử dụng khoa học / khoa học dữ liệu, cơ sở dữ liệu mảng dường như là hướng đi (tất nhiên, cộng với dữ liệu đầu vào không có cấu trúc). Ví dụ: SciDB và RasDaMan.

Trong nhiều trường hợp (ví dụ: học sâu), ma trận và mảng là loại dữ liệu bạn cần, không phải cột. MapReduce, vv vẫn có thể hữu ích trong tiền xử lý, tất nhiên. Thậm chí có thể dữ liệu cột (nhưng cơ sở dữ liệu mảng cũng thường hỗ trợ nén giống như cột).


3

Tôi chưa sử dụng cơ sở dữ liệu cột, nhưng tôi đã sử dụng định dạng tệp cột nguồn mở có tên là Parquet và tôi nghĩ các lợi ích có thể giống nhau - xử lý dữ liệu nhanh hơn khi bạn chỉ cần truy vấn một tập hợp con nhỏ số cột. Tôi đã có một truy vấn chạy trên khoảng 50 terabyte tệp Avro (định dạng tệp định hướng theo hàng) với 673 cột mất khoảng một tiếng rưỡi trên cụm Hadoop 140 nút. Với Parquet, cùng một truy vấn mất khoảng 22 phút vì tôi chỉ cần 5 cột.

Nếu bạn có một số lượng nhỏ các cột hoặc đang sử dụng một tỷ lệ lớn các cột của mình, tôi không nghĩ rằng một cơ sở dữ liệu cột sẽ tạo ra nhiều sự khác biệt so với một hàng được định hướng bởi vì về cơ bản bạn vẫn phải quét tất cả dữ liệu của mình. Tôi tin rằng cơ sở dữ liệu cột lưu trữ các cột riêng biệt trong khi cơ sở dữ liệu định hướng hàng lưu trữ các hàng riêng biệt. Truy vấn của bạn sẽ nhanh hơn bất cứ khi nào bạn có thể đọc ít dữ liệu hơn từ đĩa.

Liên kết này giải thích thêm về các chi tiết.


0

Lưu ý: Đây là câu hỏi của tôi và tôi thực sự biết ơn những câu trả lời tuyệt vời ở đây, đã giúp tôi nắm bắt được khái niệm này.

Vì vậy, tôi sẽ giải thích khái niệm theo cách mà tôi đã hiểu:

Nói chung, dữ liệu trong cơ sở dữ liệu được lưu trữ trong bộ nhớ theo các định dạng sau:

Xem xét mốc này:

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

Trong một cửa hàng dựa trên hàng quan hệ, nó được lưu trữ như thế này:

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

ở dạng hàng.

Trong cửa hàng cột, nó sẽ được lưu trữ như thế này:

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

ở dạng cột.

Vì vậy, điều này có nghĩa là gì?

Điều này có nghĩa là việc chèn (và cập nhật) và xóa nhanh trong kho lưu trữ cột dựa trên hàng vì nó chỉ loại bỏ một vài giá trị cuối hoặc một vài giá trị đầu tiên. Tuy nhiên, nó không phải là trường hợp trong các cửa hàng cột vì giá trị trong mỗi cửa hàng khối cần phải được loại bỏ.

Tuy nhiên, khi có nhu cầu về tổng hợp và hoạt động của cột, các cửa hàng cột có lợi thế hơn so với các đối tác dựa trên hàng của chúng, vì chúng được lưu trữ theo cột, và do đó, việc truy cập các cột riêng lẻ rất dễ dàng.

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.