2

我正在实现一个分布式音频存储库,注册用户可以在该存储库上创建录音并与其他注册用户共享。理想情况下,我们希望在间歇性连接到无线网状网络的几台 (n<5) 笔记本电脑上运行存储库。因此,当连接可用时,运行 couchdb 的存储库节点将相互复制。该存储库将位于一个没有电力基础设施的乡村,因此存储库笔记本电脑由太阳能电池板和汽车电池供电。过去,我们遇到过笔记本电脑电池完全耗尽的问题,将计算机时钟重置为 0 - 1970 年 1 月 1 日。互联网连接也非常不完整且非常昂贵。牢记间歇性电源和连接以及非常不准确的时钟,我想知道如何最好地对文档(或录音)进行排序,以便它们大致对应于在复制之前和之后在不同存储库节点上创建录音的时间顺序。对于如何创建可在这些受限条件下工作的复制 by_date、by_sequence、by_chronology(或任何您想称呼的)视图,我将非常感激。它不必是完美的,只要足够好或比一个幼稚的解决方案更好。by_chronology (或任何你想称之为的)视图可以在这些受限条件下工作。它不必是完美的,只要足够好或比一个幼稚的解决方案更好。by_chronology (或任何你想称之为的)视图可以在这些受限条件下工作。它不必是完美的,只要足够好或比一个幼稚的解决方案更好。

谢谢!

托马斯

4

1 回答 1

1

好吧,您可以首先在每个新文档中包含一个简单的递增整数,方法是查看数据库中最后一个可用的数字并取下一个。这为您提供了一些信息:

  • 在没有连接的情况下本地记录片段的一致排序
  • 与其他节点同步后,新段将获得比所有复制段更高的序列号

这意味着如果来自一个节点的序列号 45 早于或晚于另一个节点的序列号 45 记录,则您无法拼凑在一起,但它确实可以让您拼凑一个有向无环图,至少对文档进行基本排序。

您可以添加一个值来表示记录片段的节点以使其更好。

于 2012-12-14T10:19:29.403 回答