2011-10-03 28 views

回答

0

它取决于如何处理应用程序和数据库之间的通信的实际产品。我非常熟悉在“嵌入式​​”空间中销售的某种特定产品,因为我是该数据库产品的开发人员。在这个空间中并不孤单,所以这些信息也适用于其他嵌入式数据库。此特定产品包括客户端/服务器版本以及进程内版本。当客户机和服务器进程位于不同的机器上时,客户机/服务器版本使用套接字进行通信,并且在同一台物理机器上运行时,它通过共享内存使用IPC。正如您可能猜到的,正在处理的版本在客户端应用程序的进程空间中以DLL(Windows)或共享对象(Linux)的形式运行。所以这只是一个例子,并不是唯一的。所以,基本上,您需要阅读您正在使用的产品的文档,以确定您的案例的具体答案。

至于在性能方面哪个更好,这不是一个简单的问题需要回答。这取决于很多因素。从客户端到数据库服务器的单个请求通常在进行中数据库的调用本身方面会更快。但是一些IPC机制几乎一样快。除非进行数十亿次“小/快”请求,否则可能几乎不会成为整体性能的一个因素。还有其他问题需要考虑。如果数据库作为单独的进程运行,则整体运行速度可能会更快,因为它可能会执行更积极的缓存,利用多个核心,能够作为服务运行,可能以64位进程运行,而客户端为32位等等,还有要考虑的稳定性。如果数据库是一个单独的进程,例如,如果客户端应用程序崩溃而进程中的版本可能更受客户端的稳定性影响,则它可以避免损坏问题。

对于基准测试,最好的方法是测试应用程序将使用的环境类型和查询。数据库在某些TPC测试中可能具有惊人的数字,但如果目标应用程序是针对单个用户并正在进行非常简单的查询和更新,那么它的TPC数字可能并不重要。所以,如果可能的话,尽可能地进行模拟实际环境的测试。当然,在许多情况下,这说起来容易做起来难,但这是开始思考它的好方法。

+0

为了阐明嵌入数据库时​​的情况,它与服务器在同一个进程中运行? – user847988

+0

@ user847988:不一定。术语“嵌入”在某种程度上是通用的,但从某种意义上说,从最终用户的角度来看,应用程序和数据库是单个应用程序。在这里可以找到更好的描述:http://en.wikipedia.org/wiki/Embedded_database –