Есть ли связь между реляционной алгеброй / исчислением и теорией категорий?

17

Мне известны как минимум два разных теоретических подхода к пониманию реляционных баз данных: реляционная алгебра Кодда и теория категорий.

Есть ли связь между этими двумя подходами? В каком-то смысле они эквивалентны? Есть ли вводная работа, объясняющая, как обе эти структуры объясняют реляционные базы данных?

Фон: Некоторое время назад я прочитал « Теорию категорий» Дэвида Спивака для ученых, которая довольно долго обсуждала, как можно применить теорию категорий для понимания теории реляционных баз данных. Однако, имея небольшой личный опыт о том, что такое реляционные базы данных или почему они полезны, в то время я не до конца осознавал глубину понимания, обнаруженную в книге.

Однако недавно я узнал о SQL- запросах и двух R- пакетах для манипулирования данными: dplyr и data.table . SQL, очевидно, может выразить большую часть идей реляционной алгебры Кодла / исчисления / модели, но не все . Более того, автор dplyr Хэдли Уикхем прямо заявил, что его философия, лежащая в основе пакета, основана на работе Кодда по реляционной алгебре, и основные команды data.table довольно хорошо отображаются в команды SQL и dplyr.

Я также знаю, что теория категорий влияет на многих программистов, использующих функциональные языки программирования, такие как Haskell. Тем не менее, я на самом деле не знаю о каком-либо использовании функционального программирования для манипулирования данными или науки о данных, кроме пакета purrr Хэдли Уикхэма для R, факта, что Apache Spark написан на Scala , и технологий, связанных с MapReduce .

Все это как бы подсказывает мне, что должна быть какая-то связь между теорией категорий и реляционной алгеброй / исчислением Кодда, но я никогда не слышал, чтобы кто-то делал такую ​​связь явной или объяснял, как она лежит в основе проектных решений в популярных манипуляциях с данными. и технологии реляционных баз данных. Поэтому я также подозреваю, что могу ошибаться.

РЕДАКТИРОВАТЬ: Видимо, Дэвид Спивак работал над " языком функторных запросов (FQL) ". Похоже, это может быть применение такой теоретической связи, если она существует.

Примечание: я не уверен, является ли «реляционные структуры» подходящим тегом для обсуждения реляционных баз данных или реляционной алгебры / исчисления. Эта статья в Википедии предполагает, что они могут быть связаны, но в конечном итоге я не знаю, что означает фраза «реляционная структура». Пожалуйста, не стесняйтесь повторно пометить.

Chill2Macht
источник
2
Вы видели работу Таннена и Бунемана, например, Структурный подход к разработке языка запросов ?
reinierpost
@reinierpost у меня нет, но я посмотрю на это.
Chill2Macht

Ответы:

12

Категориальные подходы к языкам запросов представляют небольшой интерес, но я думаю, что это очень интересная ниша!

Двумя ключевыми фигурами в этой области являются Питер Бунеман и Торстен Груст . Очевидно, они не выполнили всю работу, но если вы начнете с их работ и проследите график цитирования, вы получите довольно хорошее освещение области.

Центральное наблюдение, из которого они работают, заключается в том, что, поскольку отношение можно рассматривать как набор кортежей, функтор powerset можно интерпретировать как вывод типа кортежа к типу отношений над этим кортежем. Затем тот факт, что функтор powerset формирует монаду, означает, что вы можете использовать идеи, вдохновленные синтаксисом понимания монады Филиппа Уодлера, чтобы дать исчисление, основанное на категориях, для запросов с богатой эквациональной теорией.

Действительно, система запросов Buneman et al. Kleisli получила свое название от того факта, что монады иногда называют «тройками Клейсли».

Докторская диссертация Груста , « Понимание запросов» , детально прорабатывает эти идеи, включая использование монадных морфизмов для моделирования операторов агрегации (например, sumи count). Grust и его группа также создали систему Ferry , которая изучала, как интегрировать базы данных в языки программирования.

Одна из основных проблем в этой работе (а также в Kleisli, если память служит) заключается в том, что языки монадических запросов имеют тенденцию быть немного более выразительными, чем реляционная алгебра - они позволяют запросам обрабатывать наборы множеств. Компиляция этого к SQL или реляционной алгебре требует некоторой осторожности (например, см. Cheney et al. « Практическая теория интегрированного в язык запроса» ), но основная проблема имеет очень хорошую категориальную формулировку. Реляционная алгебра использует только моноидальную структуру функтора powerset, т. Е. Существование естественного преобразования декартового произведения ; и монадические языки запросов также требуют объединения,():п(Икс)×п(Y)п(Икс×Y)μ:п(п(Икс))п(Икс),

Вероятно, это основной поток работы над категориальными подходами к языкам запросов.

Новой идеей (которая, к сожалению, не получила такой большой тяги, как я думаю, она заслуживает), является работа Дэвида Спивака по использованию симплициальных наборов для моделирования баз данных - см. Симплициальные базы данных . Центральным нововведением является то, что симплициальная структура позволяет явно моделировать всю схему базы данных, включая отношения между таблицами (например, системой внешних ключей), и это позволяет придавать семантику операциям обновления схемы.

Еще одно отличие от стандартных языков запросов - это языки программирования с ограниченной логикой, такие как Datalog, которые можно понимать как реляционную алгебру плюс оператор с фиксированной точкой. Фиксированные точки позволяют выражать такие вещи, как запросы с транзитивным замыканием и, таким образом, новые базы данных, такие как языки запросов объектов Datomic, основанные на Datalog. Мой аспирант Майкл Арнтениус и я изучили семантику Datalog и придумали функциональный аналог, который мы называем Datafun , который имеет довольно категоричную интерпретацию в терминах категорий поэз и полурешеток.

Нил Кришнасвами
источник