Áp dụng thuật toán trên dữ liệu lớn


8

Có cuốn sách hay hướng dẫn nào dạy chúng ta cách áp dụng hiệu quả các thuật toán phổ biến (sắp xếp, tìm kiếm, v.v.) trên dữ liệu lớn (tức là dữ liệu không thể tải đầy đủ vào bộ nhớ chính) và cách áp dụng hiệu quả các thuật toán đó xem xét chi phí của chuyển khối từ bộ nhớ ngoài? Ví dụ, hầu hết tất cả các sách giáo khoa thuật toán đều nói rằng B và B + -trees có thể được sử dụng để lưu trữ dữ liệu trên đĩa. Tuy nhiên, thực sự làm thế nào điều này có thể được thực hiện, đặc biệt là xử lý các con trỏ nơi dữ liệu hiện diện trên đĩa không được giải thích. Tương tự, mặc dù nhiều cuốn sách dạy các kỹ thuật tìm kiếm, chúng không xem xét dữ liệu hiện diện trong bộ nhớ thứ cấp.

Tôi đã kiểm tra cuốn sách của Knuth. Mặc dù nó thảo luận về những ý tưởng này, tôi vẫn không hiểu làm thế nào để thực sự áp dụng chúng trong một ngôn ngữ cấp cao. Có bất kỳ tài liệu tham khảo thảo luận về các chi tiết?



Bạn có thể xem qua thư mục toàn diện của STXXL: thư viện mẫu tiêu chuẩn cho các bộ dữ liệu XXL .
Vor

Ngày nay với việc có các DB tuyệt vời như Oracle, DB2, SQL Server, thông thường không ai tự làm việc với các bộ dữ liệu lớn, nếu bạn quan tâm, bạn có thể xem các tài liệu liên quan đến một trong các Máy chủ DB, nhưng ngày nay Martin Fowler và một số người khác đang cố gắng di chuyển đến NO SQL , bạn cũng có thể kiểm tra nó. (nhưng có quá nhiều khía cạnh trong cơ sở dữ liệu lớn, như đồng thời, bảo mật, ... không chỉ là thuật toán nhanh).

@Dave, Vor: Cảm ơn bạn đã tham khảo. Tôi sẽ kiểm tra họ và thông báo cho bạn nếu họ là những gì tôi đang tìm kiếm.
Arani

@SaeedAmiri: Tôi hiểu điều đó, nhưng theo những gì tôi hiểu, việc lưu trữ dữ liệu trong cơ sở dữ liệu chỉ hữu ích nếu dữ liệu được cấu trúc cao theo một cách nào đó. Vì vậy, chuỗi số và dữ liệu tương tự khác thường không được lưu trữ bằng cơ sở dữ liệu. Hơn nữa, sách giáo khoa cơ sở dữ liệu không mô tả chi tiết theo quan điểm của nhà phát triển cơ sở dữ liệu. Mặc dù hầu hết trong số họ đề cập rằng cơ sở dữ liệu sử dụng B và B + -trees, hầu hết không mô tả thực sự CÁCH họ thực hiện các cấu trúc dữ liệu này.
Arani

Câu trả lời:


2

Sách cơ sở dữ liệu là ví dụ tốt. Tuy nhiên, hãy xem trường cấu trúc dữ liệu hiệu quả I / O (và thuật toán). Theo hiểu biết của tôi, có một số khóa học về chủ đề này, nhưng rất ít sách.

Kiểm tra cuốn sách này: U. Meyer, P. Sanders và J. Sibeyn (chủ biên), Thuật toán phân cấp bộ nhớ, Ghi chú bài giảng trong Khoa học máy tính 2625, Springer, 2003.

Kiểm tra các khóa học này: http://www.win.tue.nl/~hermanh/teaching/2IL35/ http://www.daimi.au.dk/~large/ioS12/

và các slide này: algo2.iti.kit.edu/sanders/cifts/algen09-10/rdslides.pdf


1

Cuốn sách cơ sở dữ liệu của Ramkrishnan và Gehrke thảo luận về những điều này một cách chi tiết.


Điều tồi tệ nhất và nhàm chán nhất từng có :)! mặc dù đây là một giới thiệu tốt về nhiều chủ đề thú vị trong cơ sở dữ liệu và tối ưu hóa db.
AJed


0

Ngày nay, lĩnh vực này được gọi là dữ liệu lớn , và nó đang phát triển rất nhanh và nhanh chóng dựa trên sự kết nối mạnh mẽ với công nghệ cơ sở dữ liệu ảo hóa và quan hệ chỉ được coi là một tập hợp con. Cũng như ghi chú nhận xét, cơ sở dữ liệu khóa / giá trị và NoQuery là nơi có nhiều cải tiến và động lực mới. Nhưng từ ý kiến ​​của bạn, bạn dường như quan tâm nhiều hơn đến các nguyên tắc và kỹ thuật thiết kế cơ sở dữ liệu quan hệ . Hãy thử các ref sau:


Tôi chưa thực sự nghiên cứu các hệ thống cơ sở dữ liệu phi quan hệ, và đó có thể là một câu trả lời hợp lý. Nhưng tôi không thực sự tìm kiếm các sách giáo khoa cơ sở dữ liệu mô tả thiết kế cơ sở dữ liệu. Thay vào đó, một cuốn sách mô tả nó theo quan điểm của nhà phát triển cơ sở dữ liệu (trong đó cho chúng ta biết rõ cách thức cấu trúc dữ liệu để làm việc trên các đĩa được triển khai) sẽ rất hữu ích.
Arani

ghét phải thừa nhận điều này nhưng đã làm hỏng các ref này một chút. có những cuốn sách về thuật toán cơ sở dữ liệu nhưng có nhiều cuốn sách về thiết kế cơ sở dữ liệu thực sự là về cách tổ chức các bảng, mô hình dữ liệu, chuẩn hóa, chỉ mục, v.v., các khái niệm như thế này. trong khi những điều này liên quan đến câu hỏi của bạn, chúng không thực sự được kết nối. về cơ bản, nhiều chiến lược để quản lý cây b trong các cơ sở dữ liệu hiện đại phần nào làm ảnh hưởng đến bí mật thương mại. nói chung, các cây b được lưu trữ trong "các trang" được phân bổ và lập chỉ mục động. đôi khi có thể tìm kiếm ref tốt hơn về điều này.
vzn

đoán xem điều bạn thực sự muốn là thiết kế lưu trữ cơ sở dữ liệu vật lý (có thể được trình bày một cách lỏng lẻo trong một số giới thiệu đó hoặc có thể không) , Máy chủ MS SQL
vzn


1
xem thêm các chỉ mục cây B + với một số tham chiếu đến các trang lưu trữ và derby apache , triển khai tìm nạp / lưu trữ cây B trong java với các chi tiết triển khai
vzn
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.