Мови запитів бази даних для ефективних запитів


9

Здається, що в популярних мовах запитів для реляційних баз даних можна створити запити, на які буде потрібно багато ресурсів, щоб відповісти. На практиці адміністратори бази даних керують цим, обмежуючи об'єм пам'яті на запит і перевіряючи наявність тривалих запитів, чи є уповільнення роботи бази даних. Це здається досить тимчасовим, чи є рішення TCS для цього?

Чи існують мови запитів, які можуть реалізувати лише ефективні запити?

Якщо таких мов немає, чи є теоретична причина цього?

Деякі причини, чому я можу очікувати, що подібні речі існуватимуть чи принаймні мають сенс:

  • у нас є мови програмування, спеціально розроблені для того, щоб реалізовувати лише ефективні обчислення (зазвичай, маючи певну обмежувальну логіку у своїй системі типів)
  • популярні мови запитів (наприклад, SQL) вже натхненні логікою, тому користувачам бази даних не здається розтягнутим розгляд більш обмежувальної логіки.
  • користувач бази даних, який не містить зловмисних програм, вже намагається підготувати запити, які швидко виконуються, тому слід очікувати, що ці більш обмежені мови запитів лише перешкоджають шкідливим користувачам.

Це питання натхнене перетином двох попередніх питань:

Мови програмування для ефективного обчислення

Чому взагалі працюють реляційні бази даних, враховуючи теоретичну експоненціальну складність пошуку відповідей (за розміром запиту)?


1
Чи не це саме тема описової складності? вони мають мовні характеристики запитів для різних класів складності.
Каве

Описова складність, безумовно, величезна частина та посібник для мов програмування для ефективного обчислення. Але я не думаю, що це так просто, як сказати "описова складність використовує логіку" та "запити до баз даних використовують логіку". Зокрема, для DC здається, що розмір запиту є фіксованим, а 'n' походить від розмірів кінцевих структур, які запити приймають. У базах даних дійсно розмір запиту є змінним, а база даних також є змінною або, можливо, фіксованим параметром.
Артем Казнатчеєв

3
Є також результати для змінних запитів, вони просто не настільки приголомшливі, як відповідність між перевіркою моделі та відомими класами складності. Крім того, більш широке поле теорії кінцевих моделей, частиною якого є описова складність, має ряд результатів виразності, безпосередньо пов'язаних з базами даних. Бази даних - це майже абсолютно кінцеві модельно-теоретичні структури.
Марк Хаман

1
Я не думав про це листування. Я додав тег скінченної моделі-теорії. Якщо ви або @Kaveh хочете детальніше розглянути свої коментарі і знаєте, як прийняти конкретні результати з описової складності кінцевої теорії моделей взагалі для створення таких мов запитів, тоді я дуже хотів би побачити цю відповідь!
Артем Казнатчеєв

Відповіді:


7

Один із способів перегляду мов запитів баз даних - через об'єктив дедуктивних баз даних , де запити представлені як логічні програми. У цій налаштування найбільш релевантною роботою, пов’язаною з вашим запитанням, є аналіз McAllester " Про складність статичних аналізів" , який показав , що ви можете обґрунтувати час виконання запиту, міркуючи про кількість "стрільб префікса" у правилах вашого програма. Що "стрільба з префіксами" не є надзвичайно складною, але я для цього звернуся до документа.

У світі функціональних програм програмування називається семантикою витрат : це не означає, що ви можете реалізовувати лише ефективні запити (програми), але це означає, що ви можете обґрунтовано міркувати про асимптотичну складність вашої декларативної програми. .

Деякі пізні роботи над реалізацією ідей Макаллестера включають від правил журналу даних до ефективних програм із гарантіями часу та простору (Лю та Столлер) та Dedalus: Журнал даних у часі та просторі (Альваро, Марчак, Конвей, Геллерштейн, Майер та Сірс). Зізнаюся, я ще не прочитав останнього з цих двох робіт.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.