Ngôn ngữ truy vấn cơ sở dữ liệu cho các truy vấn hiệu quả


9

Dường như trong các ngôn ngữ truy vấn phổ biến cho cơ sở dữ liệu quan hệ, có thể tạo các truy vấn sẽ cần nhiều tài nguyên để trả lời. Trong thực tế, quản trị viên cơ sở dữ liệu quản lý điều này bằng cách giới hạn số lượng bộ nhớ cho mỗi truy vấn và kiểm tra mọi truy vấn chạy dài nếu có sự chậm chạp trong cơ sở dữ liệu. Điều này có vẻ khá đặc biệt, có một giải pháp TCS cho vấn đề này?

Có ngôn ngữ truy vấn chỉ có thể thực hiện các truy vấn hiệu quả?

Nếu không có ngôn ngữ như vậy, có lý do lý thuyết cho việc này?

Một số lý do tại sao tôi có thể mong đợi những thứ này tồn tại hoặc ít nhất có ý nghĩa:

  • chúng tôi có các ngôn ngữ lập trình được thiết kế riêng để chỉ thực hiện các tính toán hiệu quả (thường bằng cách có một số logic hạn chế trong hệ thống loại của chúng)
  • các ngôn ngữ truy vấn phổ biến (như SQL) đã được truyền cảm hứng bởi logic, do đó dường như không phải là một sự kéo dài cho người dùng cơ sở dữ liệu để xem xét các logic hạn chế hơn.
  • một người dùng cơ sở dữ liệu không độc hại đã cố gắng chuẩn bị các truy vấn thực thi nhanh chóng, vì vậy chúng tôi nên mong đợi các ngôn ngữ truy vấn hạn chế hơn này sẽ chỉ cản trở người dùng độc hại.

Câu hỏi này được lấy cảm hứng từ giao điểm của hai câu hỏi trước:

Ngôn ngữ lập trình để tính toán hiệu quả

Tại sao các cơ sở dữ liệu quan hệ hoạt động hoàn toàn, do sự phức tạp theo cấp số nhân của việc tìm câu trả lời (theo kích thước của truy vấn)?


1
Đây có phải chính xác là chủ đề của Sự phức tạp mô tả không? chúng có đặc tính ngôn ngữ của các truy vấn cho các lớp phức tạp khác nhau.
Kaveh

Độ phức tạp mô tả chắc chắn là một phần rất lớn và hướng dẫn cho các ngôn ngữ lập trình để tính toán hiệu quả. Nhưng tôi không nghĩ nó đơn giản như việc nói "độ phức tạp mô tả sử dụng logic" và "truy vấn cơ sở dữ liệu sử dụng logic". Đặc biệt, đối với DC, dường như kích thước truy vấn là cố định và 'n' xuất phát từ kích thước của các cấu trúc hữu hạn mà các truy vấn chấp nhận. Trong cơ sở dữ liệu, nó thực sự là kích thước truy vấn có thể thay đổi và cơ sở dữ liệu cũng là biến hoặc có thể là một tham số cố định.
Artem Kaznatcheev

3
cũng có kết quả cho các truy vấn khác nhau, chúng không đáng kinh ngạc bằng sự phù hợp giữa kiểm tra mô hình và các lớp phức tạp nổi tiếng. Ngoài ra lĩnh vực rộng hơn của lý thuyết mô hình hữu hạn, trong đó độ phức tạp mô tả là một phần, có một số kết quả rõ ràng liên quan trực tiếp đến cơ sở dữ liệu. Cơ sở dữ liệu sau tất cả các cấu trúc lý thuyết mô hình hữu hạn gần như chính xác.
Marc Hamann

1
Tôi đã không nghĩ về sự tương ứng này. Tôi đã thêm thẻ lý thuyết mô hình hữu hạn. Nếu bạn hoặc @Kaveh muốn giải thích ý kiến ​​của bạn và biết cách áp dụng các kết quả cụ thể từ sự phức tạp mô tả của lý thuyết mô hình hữu hạn nói chung để tạo ra các ngôn ngữ truy vấn như vậy, thì tôi thực sự muốn thấy câu trả lời đó!
Artem Kaznatcheev

Câu trả lời:


7

Một cách để xem các ngôn ngữ truy vấn cơ sở dữ liệu là thông qua lăng kính của cơ sở dữ liệu suy diễn , trong đó các truy vấn được biểu diễn dưới dạng các chương trình logic. Trong cài đặt này, công việc phù hợp nhất liên quan đến câu hỏi của bạn là của McAllester Về phân tích độ phức tạp của các phân tích tĩnh , quan sát rằng bạn có thể suy luận về thời gian chạy của một truy vấn bằng cách suy luận về số lượng "tiền tố" trong quy tắc của bạn chương trình. Điều "bắn tiền tố" không quá phức tạp, nhưng tôi sẽ giới thiệu cho bạn bài báo về điều đó.

Trong thế giới lập trình chức năng, loại điều này được gọi là ngữ nghĩa chi phí : không có nghĩa là bạn chỉ có thể thực hiện các truy vấn (chương trình) hiệu quả, nhưng điều đó có nghĩa là bạn có thể suy luận về sự phức tạp tiệm cận của chương trình khai báo của mình một cách hợp lý .

Một số công việc sau này về việc triển khai các ý tưởng của McAllester bao gồm Từ quy tắc dữ liệu đến các chương trình hiệu quả với đảm bảo thời gian và không gian (Liu và Stoller) và Dedalus: Datalog in Time and Space (Alvaro, Marczak, Conway, Hellerstein, Maier và Sears). Tuy nhiên, tôi thừa nhận tôi chưa đọc phần sau của hai bài báo đó.

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.