2010-03-19 2 views
1

최근에 살펴본 여러 데이터베이스는 각각의 데이터 읽기 및 쓰기를 수행하기 위해 내부적으로 가상 컴퓨터를 구현합니다. 예를 들어, this article on SQLite's virtual machine they call the 'VDBE'을 확인하십시오. 그런 건축물의 장점이 무엇인지 궁금합니다. 나는 성능이 하나라고 생각 하겠지만 왜 이런 가상 머신이 더 빨리 돌아갈 것입니까? 실제로이 여분의 레이어로 인해 더 느리게 실행될 수 있습니다. 보안을위한 것일 수도 있습니다. 아니면 이식성? 어쨌든, 이것에 대해서 궁금해.응용 프로그램의 일부로 가상 컴퓨터를 구현하면 얻을 수있는 주요 이점은 무엇입니까?

답변

1

이동성을 잃지 않고 속도를 수용 할 수있는 "어셈블리와 같은"수준에서 작업을 수행합니다. 가상 머신을 제공하여 균형 잡힌 트레이드 오프를 제공한다고 생각합니다. 높은 수준의 코드 (SQL 코드 **)를 높은 수준의 언어로 실행하면 속도가 떨어지나 편리함을 얻을 수 있습니다. 다른 방법은 해석 된 것보다 훨씬 빠르게 실행될 플랫폼 고유 (네이티브) 코드를 생성하는 것이지만 ANSI-C가있는 곳에서 실행되는 광범위한 라이브러리에 대한 많은 번거 로움입니다.

** 물론 SQL 코드 일 필요는 없습니다. I 은 명령형 표현이 실행에 훨씬 적합하다고 생각합니다. 어쨌든, 그 표현은 여전히 ​​"opcode"에 비해 매우 높은 수준의 표현입니다.

+0

그러나 VM 모델을 사용하면 왜 속도가 향상 될까요? – Marplesoft

+0

@Marplesoft : 주로 소스 언어와 그 의미 (SQLite의 경우 SQL)를 분석하는 데 필요한 시간을 절약하기 때문에. 소스 언어를 VM 바이트 코드로 옮기는 컴파일러는 일부 최적화를 포함하여 많은 작업을 수행합니다. 남은 것은 결과 바이트 코드를 최대한 빨리 실행하는 것입니다. –

관련 문제