FoundationDB,图层:它是托管在客户端应用程序还是服务器节点上?

时间:2013-10-25 15:26:51

标签: communication layer foundationdb

最近我读到了关于FoundationDB中图层的概念。我喜欢他们的想法,从一侧分解存储并从其他方面访问它。

关于层的实施,有一些不明确的要点。特别是他们如何与存储引擎通信。有两种可能的答案:它们是服务器节点的一部分,并通过快速本机API调用(例如,作为服务器进程中托管的链接模块)与存储通信 - 或 - 托管在客户端应用程序内并通过网络协议进行通信。例如,许多RDBMS的SQL层都托管在服务器上。如何使用FoundationDB?

PS:这两种情况与性能视图不同,尤其是当clinent-server通信具有高延迟时。

2 个答案:

答案 0 :(得分:2)

扩展Eonil所说的内容:答案取决于两种不同的“客户”和“服务器”之间的区别。

图层不在数据库服务器进程中运行。他们使用FDB客户端API来发出数据库请求,并且不会(有一个例外*)来破解事务键值抽象。

但是,没有什么能阻止您在与数据库服务器进程相同的物理(或虚拟)服务器计算机上运行层。并且,正如社区网站提到的那篇文章所提到的那样,在某些用例中您可能非常希望这样做,以尽量减少延迟。

*例外是Locality API,这在您希望将客户端层与其运行的数据共同定位的情况下非常有用。

答案 1 :(得分:1)

图层位于客户端库功能之上。 引自http://community.foundationdb.com/questions/153/what-layers-do-you-want-to-see-first

  

这是一个很好的问题。其中一个原因并不总是有意义的   在服务器上运行层是在分布式数据库中的那个层   数据分散 - 服务器本身就是一个网络跳跃   随机数据,就像客户端一样。

     

当然,对于像分析层那样知道的东西   每个服务器包含哪些数据,运行分布式是有意义的   版本与FDB集群中的每台机器位于同一位置。