我最近看过的几个数据库在内部实现了一个虚拟机来执行相应的数据读写操作。例如,请查看this article on SQLite's virtual machine they call the 'VDBE'。我很好奇这种架构的好处是什么。我认为性能是一个,但为什么像这样的虚拟机运行得更快?实际上,似乎这个额外的层可能会导致它运行得更慢。那也许是为了安全呢?还是便携性?无论如何,只是好奇这个。
答案 0 :(得分:1)
他们在“类似装配”的水平上做他们的东西,在那里你获得可接受的速度而不会失去便携性。我认为他们提供了一个虚拟机,因此他们可以获得平衡的权衡。您可以将高级代码(SQL代码**)作为高级语言执行,但是您会失去速度,但您会获得便利。另一种方法是生成特定于平台的(本机)代码,与解释相比,它将运行得更快,但对于在ANSI-C存在的情况下运行的广泛库来说,这是一个很麻烦的事情。
**当然不必是SQL代码。我认为命令式表示更适合执行。无论如何,与“操作码”相比,该表示仍然是一个非常高级别的表示。