Похоже, что в популярных языках запросов для реляционных баз данных можно создавать запросы, для ответа на которые потребуется много ресурсов. На практике администраторы базы данных управляют этим, ограничивая объем памяти на запрос и проверяя наличие длительных запросов на предмет замедления в базе данных. Это кажется довольно случайным, есть ли решение TCS для этого?
Существуют ли языки запросов, которые могут реализовывать только эффективные запросы?
Если таких языков нет, есть ли теоретическая причина для этого?
Некоторые причины, по которым я могу ожидать, что подобные вещи существуют или хотя бы имеют смысл:
- у нас есть языки программирования, специально разработанные для реализации только эффективных вычислений (обычно с помощью некоторой ограничительной логики в их системе типов)
- популярные языки запросов (такие как SQL) уже основаны на логике, поэтому пользователям баз данных не стоит задумываться над более строгой логикой.
- пользователь базы данных, не являющийся вредоносным, уже пытается подготовить запросы, которые выполняются быстро, поэтому следует ожидать, что эти более строгие языки запросов будут препятствовать только злонамеренным пользователям.
Этот вопрос вдохновлен пересечением двух предыдущих вопросов:
cc.complexity-theory
pl.programming-languages
db.databases
finite-model-theory
Артем Казнатчеев
источник
источник
Ответы:
Один из способов взглянуть на языки запросов к базам данных - через призму дедуктивных баз данных , где запросы представлены в виде логических программ. В этом параметре наиболее релевантной работой, связанной с вашим вопросом, является анализ сложности статического анализа McAllester, который показал , что вы можете рассуждать о времени выполнения запроса, рассуждая о количестве «срабатываний префиксов» в правилах вашего программа. Что такое «префиксная стрельба», не очень сложно, но я отсылаю вас к статье для этого.
В мире функционального программирования такого рода вещи называют семантикой затрат : это не означает, что вы можете реализовать только эффективные запросы (программы), но это означает, что вы можете разумно рассуждать об асимптотической сложности вашей декларативной программы. ,
Некоторые более поздние работы над реализацией идей Макаллестера включают « От правил регистрации данных до эффективных программ с гарантиями времени и пространства» (Лю и Столлер) и « Дедалус: журнал данных во времени и пространстве» (Альваро, Марчак, Конвей, Хеллерштейн, Майер и Сирс). Однако я признаю, что еще не читал последнюю из этих двух статей.
источник