2010-03-19 4 views
1

Несколько баз данных, которые я недавно изучал, реализовали виртуальную машину для выполнения соответствующих операций чтения и записи данных. Например, проверьте this article on SQLite's virtual machine they call the 'VDBE'. Мне любопытно, каковы преимущества такой архитектуры. Я бы предположил, что производительность одна, но почему виртуальная машина, как это, работает быстрее? На самом деле, похоже, что этот дополнительный слой может привести к медленному запуску. Так, возможно, это для безопасности? Или переносимость? Во всяком случае, просто интересно.Каковы основные преимущества внедрения виртуальной машины как части приложения?

ответ

1

Они выполняют свои функции на уровне «сборки», где вы получаете приемлемую скорость, не теряя при этом переносимость. Я думаю, что они предоставляют виртуальную машину, чтобы получить сбалансированный компромисс. Либо вы выполняете код высокого уровня (код SQL **) как язык высокого уровня, и вы теряете скорость, но получаете удобство. Другой способ - создать специфичный для платформы (родной) код, который будет работать намного быстрее по сравнению с интерпретируемым, но это много хлопот для широко распространенной библиотеки, которая работает там, где существует ANSI-C.

** Это, конечно, не обязательно SQL-код. I думаю, что императивное представление намного лучше подходит для исполнения. Во всяком случае, это представление по-прежнему является представлением очень высокого уровня по сравнению с «опкодом».

+0

Но почему бы получить скорость с помощью модели виртуальной машины? – Marplesoft

+0

@Marplesoft: главным образом потому, что вы сохраняете время, необходимое для анализа исходного языка и его семантики (SQL в случае SQLite). Компилятор, транскрибирующий исходный язык для байт-кода VM, очень много, включая некоторые оптимизации, и все, что у вас осталось, - это запустить полученный байт-код как можно быстрее. –