3

假设我们有一个相互连接的大型数据库图,实际上是一个巨大的分布式数据库。图上的任何节点都可以通过递归查询其邻居来查询整个数据库,这些邻居从邻居那里获取结果并将组合结果传递回查询路径。

此外,假设如果节点自己的数据库包含“足够好”的结果,则可以停止递归,这样如果附近已经有一个不错的结果,就不必查询整个网络。这使得我要说的内容具有相关性。

每次进行查询时将返回的数据传输到更接近发起查询的节点是否有意义?也就是说,被查询节点查询其邻居并获取 X,查询自身并获取 Y,将 X+Y 传递回查询它的节点,将 X 存储在其数据库中,并从其数据库中删除 Y。这不会最终导致分布式数据库在其节点之间具有相对于查询期间将咨询的平均节点数量的大致最佳数据分布吗?

这种技术有名字吗?

4

2 回答 2

2

这个话题在网格计算中出现了很多;你想做一个谷歌学者搜索像数据网格副本放置这样的东西。如果访问中有很多时间局部性(如果一个节点想要一些数据,它在不久的将来会非常想要它)并且数据大部分是读取的,那么它会很好地工作。正如 yi_H 指出的那样,如果对数据进行大量修改,“缓存”(副本)的一致性就会成为一个大问题。

于 2011-06-29T13:01:08.590 回答
1

有这样的技术,但你必须知道,一旦你“缓存”了一个结果,如果数据发生变化,你必须更新它。这意味着你要么必须存储缓存它的数据,要么通知所有人。实现这样的事情需要大量的协调,这会损害性能......不像听起来那么容易。您还可以放松数据库给您的约束,然后在您的应用程序中意识到您可能会获得不同步的缓存结果(如果需要,请要求非缓存版本)。

于 2011-06-28T22:45:49.040 回答