효율적인 쿼리를위한 데이터베이스 쿼리 언어


9

관계형 데이터베이스에 대해 널리 사용되는 쿼리 언어에서는 많은 리소스가 필요한 쿼리를 생성 할 수 있습니다. 실제로 데이터베이스 관리자 는 쿼리 당 메모리 양을 제한 하고 데이터베이스 속도가 느려지면 장기 실행 쿼리를 확인하여이를 관리합니다. 이것은 다소 임시적인 것 같습니다. 이것에 대한 TCS 솔루션이 있습니까?

효율적인 쿼리 만 구현할 수있는 쿼리 언어가 있습니까?

그러한 언어가 없다면 이론적 인 이유가 있습니까?

이런 종류의 것들이 존재하거나 이상적으로 예상되는 몇 가지 이유는 다음과 같습니다.

  • 우리는 효율적인 계산만을 구현하도록 특별히 설계된 프로그래밍 언어를 가지고 있습니다 (일반적으로 유형 시스템에 제한적인 논리를 가짐)
  • 널리 사용되는 쿼리 언어 (예 : SQL)는 이미 논리에서 영감을 얻었으므로 데이터베이스 사용자가 더 제한적인 논리를 고려하지 않는 것 같습니다.
  • 악성이 아닌 데이터베이스 사용자는 이미 빠르게 실행되는 쿼리를 준비하려고하므로 이러한보다 제한적인 쿼리 언어는 악의적 인 사용자 만 방해 할 수 있습니다.

이 질문은 두 가지 이전 질문의 교차점에서 영감을 얻었습니다.

효율적인 계산을위한 프로그래밍 언어

(답변의 크기에서) 답변 찾기의 이론적 지수 복잡성을 고려할 때 관계형 데이터베이스가 전혀 작동하지 않는 이유는 무엇입니까?


1
이것이 설명 복잡성의 주제가 아닌가? 다양한 복잡성 클래스에 대한 쿼리의 언어 특성이 있습니다.
Kaveh

설명의 복잡성은 효율적인 계산을위한 프로그래밍 언어를위한 큰 부분이자 가이드입니다. 그러나 "설명 적 복잡성은 논리를 사용한다"와 "데이터베이스에 대한 쿼리는 논리를 사용한다"고 말하는 것만 큼 간단하지 않다고 생각합니다. 특히 DC의 경우 쿼리 크기가 고정되어 있고 'n'은 해당 쿼리가 허용하는 유한 구조의 크기에서 비롯된 것 같습니다. 데이터베이스에서 실제로는 쿼리 크기가 가변적이며 데이터베이스도 가변적이거나 고정 매개 변수 일 수 있습니다.
Artem Kaznatcheev

3
변수 쿼리에 대한 결과도 있지만 모델 확인과 잘 알려진 복잡성 클래스 간의 일치만큼 놀랍지는 않습니다. 또한 기술 복잡성이 일부인 유한 모델 이론의 더 넓은 분야는 데이터베이스와 직접 관련된 많은 표현성 결과를 가지고 있습니다. 데이터베이스는 결국 거의 정확히 유한 한 모형 이론 구조입니다.
마크 하만

1
나는이 서신에 대해 생각하지 않았다. 유한 모델 이론 태그를 추가했습니다. 귀하 또는 @Kaveh가 귀하의 의견에 대해 자세히 설명하고 일반적으로 그러한 쿼리 언어를 생성하기 위해 유한 모델 이론의 설명 적 복잡성에서 특정 결과를 채택하는 방법을 알고 싶다면 실제로 그 대답을보고 싶습니다!
Artem Kaznatcheev

답변:


7

데이터베이스 쿼리 언어를 보는 한 가지 방법은 추론 데이터베이스 를 통해 쿼리를 논리 프로그램으로 표현하는 것입니다. 이 설정에서 귀하의 질문과 관련하여 가장 관련성이 높은 작업은 McAllester 's 정적 분석의 복잡성 분석에 관한 것입니다. 프로그램. "접두사 발사"가 굉장히 복잡하지는 않지만, 그 논문을 참조 할 것입니다.

함수형 프로그래밍 세계에서 이런 종류의 것을 비용 의미론 이라고합니다 . 효율적인 쿼리 (프로그램) 만 구현할 수있는 것은 아니지만 선언적 프로그램의 점근 적 복잡성을 합리적인 방식으로 추론 할 수 있다는 의미입니다. .

이후에는 McAllester의 아이디어 구현에 관한 데이터 작업 부터 시간 및 공간 보장 기능이있는 효율적인 프로그램 (Liu and Stoller) 및 Dedalus : Time and Space의 데이터 로그 (Alvaro, Marczak, Conway, Hellerstein, Maier 및 Sears)가 있습니다. 그러나 나는이 두 논문의 후자를 아직 읽지 않았다는 것을 인정한다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.