Có một mối quan hệ giữa đại số / tính toán quan hệ và lý thuyết thể loại?


17

Tôi nhận thức được ít nhất hai cách tiếp cận lý thuyết khác nhau để hiểu cơ sở dữ liệu quan hệ: đại số / phép tính quan hệ của Codd và lý thuyết thể loại.

Có bất kỳ mối quan hệ giữa hai phương pháp này? Có phải chúng trong một số ý nghĩa tương đương? Có bất kỳ công việc giới thiệu nào giải thích làm thế nào cả hai khung này giải thích cơ sở dữ liệu quan hệ?

Bối cảnh: Cách đây một thời gian tôi đã đọc Lý thuyết chuyên mục dành cho các nhà khoa học của David Spivak , người đã dành khá nhiều thời gian để thảo luận về cách áp dụng lý thuyết thể loại để hiểu lý thuyết về cơ sở dữ liệu quan hệ. Tuy nhiên, có ít kinh nghiệm cá nhân về cơ sở dữ liệu quan hệ là gì hoặc tại sao chúng hữu ích, tại thời điểm đó tôi không hoàn toàn đánh giá cao độ sâu của cái nhìn sâu sắc được tìm thấy trong cuốn sách.

Tuy nhiên, gần đây tôi đã tìm hiểu về các truy vấn SQL và hai gói R để thao tác dữ liệu: dplyrdata.table . SQL rõ ràng có thể diễn đạt nhiều ý tưởng về đại số / mô hình / mô hình quan hệ của Codd, nhưng không phải tất cả . Hơn nữa, tác giả của dplyr, Hadley Wickham, đã tuyên bố rõ ràng rằng triết lý của ông dựa trên gói dựa trên công trình của Codd về đại số quan hệ và các lệnh cơ bản của data.table ánh xạ khá tốt với các lệnh trong SQL và dplyr.

Tôi cũng biết rằng lý thuyết thể loại ảnh hưởng đến rất nhiều lập trình viên sử dụng các ngôn ngữ lập trình chức năng như Haskell. Tuy nhiên, tôi không thực sự biết rằng có bất kỳ việc sử dụng lập trình chức năng nào cho thao tác dữ liệu hoặc khoa học dữ liệu, ngoài gói purrr của Hadley Wickham cho R, thực tế là Apache Spark được viết bằng Scala và các công nghệ liên quan đến MapReduce .

Tất cả những điều này gợi ý cho tôi rằng cần có một mối quan hệ nào đó giữa lý thuyết thể loại và đại số / phép tính quan hệ của Codd, nhưng tôi chưa bao giờ nghe thấy ai đưa ra kết nối rõ ràng như vậy hoặc giải thích cách nó làm cơ sở cho các quyết định thiết kế trong thao tác dữ liệu phổ biến và các công nghệ cơ sở dữ liệu quan hệ. Vì vậy, tôi cũng nghi ngờ tôi có thể sai hoàn toàn.

EDIT: Rõ ràng David Spivak đã làm việc trên một " ngôn ngữ truy vấn functorial (FQL) ". Điều này nghe có vẻ như là một ứng dụng của một kết nối lý thuyết như vậy, miễn là nó tồn tại.

Lưu ý: Tôi không chắc chắn liệu "cấu trúc quan hệ" có phải là thẻ thích hợp để thảo luận về cơ sở dữ liệu quan hệ hoặc đại số / phép tính quan hệ hay không. Bài viết Wikipedia này cho thấy chúng có thể được kết nối, nhưng cuối cùng tôi không biết cụm từ "cấu trúc quan hệ" nghĩa là gì. Xin vui lòng gắn thẻ lại.


2
Bạn đã từng thấy tác phẩm của Tannen và Buneman, vd: Cách tiếp cận cấu trúc để thiết kế ngôn ngữ truy vấn ?
Revierpost

@reinierpost Tôi không có, nhưng tôi sẽ xem xét nó.
Chill2Macht

Câu trả lời:


12

Các cách tiếp cận phân loại cho các ngôn ngữ truy vấn là một chút quan tâm thích hợp, nhưng tôi nghĩ đó là một phân khúc rất thú vị!

Hai trong số những nhân vật chủ chốt trong lĩnh vực này là Peter BunemanTorsten Grust . Rõ ràng, họ đã không làm tất cả công việc, nhưng nếu bạn bắt đầu với giấy tờ của họ và tìm ra biểu đồ trích dẫn, bạn sẽ có được phạm vi bảo hiểm khá tốt của khu vực.

Quan sát trung tâm mà họ làm việc là vì một mối quan hệ có thể được xem như là một tập hợp các bộ dữ liệu, functor powerset có thể được hiểu là lấy một loại tuple cho loại quan hệ trên bộ dữ liệu đó. Sau đó, thực tế là functor powerset tạo thành một đơn nguyên có nghĩa là bạn có thể sử dụng các ý tưởng lấy cảm hứng từ cú pháp hiểu đơn nguyên của Philip Wadler để đưa ra một phép tính lấy cảm hứng phân loại cho các truy vấn với lý thuyết phương trình phong phú.

Thật vậy, hệ thống truy vấn của Buneman và cộng sự Kleisli có tên từ thực tế là các đơn vị đôi khi được gọi là "bộ ba Kleisli".

Luận án tiến sĩ của Grust, Các câu hỏi toàn diện , đưa ra những ý tưởng này một cách chi tiết, bao gồm cả việc sử dụng các hình thái đơn nguyên để mô hình hóa các toán tử tổng hợp (như sumcount). Grust và nhóm của ông cũng đã xây dựng một hệ thống, phà , nghiên cứu cách tích hợp cơ sở dữ liệu vào các ngôn ngữ lập trình.

Một trong những vấn đề chính trong công việc này (và cả ở Kleisli, nếu bộ nhớ phục vụ), là các ngôn ngữ truy vấn đơn âm có xu hướng biểu cảm hơn một chút so với đại số quan hệ - chúng cho phép truy vấn xử lý các tập hợp. Biên dịch điều này thành SQL hoặc đại số quan hệ đòi hỏi một số lưu ý (ví dụ: xem Cheney et al ' Một lý thuyết thực tế về truy vấn tích hợp ngôn ngữ ), nhưng vấn đề cơ bản có một công thức phân loại rất hay. Đại số quan hệ chỉ sử dụng cấu trúc đơn hình của functor powerset, tức là sự tồn tại của phép biến đổi tự nhiên của sản phẩm cartesian ; và các ngôn ngữ truy vấn đơn âm cũng yêu cầu tham gia,():P(X)×P(Y)P(X×Y)μ:P(P(X))P(X).

Đó có lẽ là luồng công việc chính về các cách tiếp cận phân loại cho các ngôn ngữ truy vấn.

Một ý tưởng mới (không may không nhận được nhiều lực kéo như tôi nghĩ nó xứng đáng) là công việc của David Spivak về việc sử dụng các bộ đơn giản để mô hình hóa cơ sở dữ liệu - xem Cơ sở dữ liệu đơn giản . Sự đổi mới trung tâm là cấu trúc đơn giản cho phép mô hình hóa rõ ràng toàn bộ lược đồ cơ sở dữ liệu bao gồm các mối quan hệ giữa các bảng (ví dụ: hệ thống các khóa ngoại) và điều này cho phép đưa ra ngữ nghĩa cho các hoạt động cập nhật lược đồ.

Một sai lệch khác so với các ngôn ngữ truy vấn tiêu chuẩn là các ngôn ngữ lập trình logic bị hạn chế như Datalog, có thể hiểu là đại số quan hệ cộng với toán tử điểm cố định. Các điểm cố định cho phép diễn đạt những thứ như truy vấn đóng bắc cầu và các cơ sở dữ liệu mới như ngôn ngữ truy vấn tính năng Datomic dựa trên Datalog. Nghiên cứu sinh tiến sĩ của tôi, Michael Arntzenius , và tôi đã nghiên cứu ngữ nghĩa của Datalog, và đưa ra một sự tương tự về chức năng mà chúng ta gọi là Datafun , có một cách giải thích khá phân loại về các thể loại của posets và semilattice.

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.