用于分布式多用户音频存储库的CouchDB数据库设计

时间:2012-12-04 12:58:36

标签: couchdb

作为农村电信研究项目的一部分,我实施了一个在linux PC上运行的多用户音频存储库。由于我熟悉RDBMS,因此我在MySQL中实现了后端。在此系统上并使用大部分无文本的UI,注册用户可以与其他注册用户一起创建和共享录制内容,这些用户可以在下次登录系统时收听这些录制内容。该系统取得了成功,在过去的8个月中,用户一直在创作和收听许多录音。

我们研究项目的另一部分在村里安装了一个10节点的无线网状网络。由于一些用户走了3公里到现在的音频库,我们现在正在研究如何创建在选定的网状节点站点运行的分布式音频存储库。这样用户就可以走到运行分布式存储库的网状站点,并创建,共享和收听录音。然后,在所有音频存储库节点上同步新录音。由于计算机和网状节点在太阳能电池板上运行,因此电源和连接通常都是间歇性的,因此我们对实施集中式解决方案犹豫不决。因此,我们认为couchdb及其过滤复制将为我们的用例提供理想的解决方案。

由于我是couchdb的新手并主要来自交互设计背景,我想知道如何最好地为这样的用例实现couchdb后端。每个用户数据库是否合适,或者这不起作用,因为用户之间共享录音?我是一个快速学习者,但是会欣赏一些关于如何设计数据库的建议,用户可以自己注册(名称,个人资料图片),然后创建私人录音,然后可以公开或与特定用户共享?我还要感谢有关如何创建聚合特定用户创建的所有录制内容的视图的任何帮助,以及聚合其他用户与特定用户共享的所有录制内容的视图。非常感谢你!

1 个答案:

答案 0 :(得分:2)

我会将所有内容放在一个数据库(用户录制和用户配置文件)上,而不是为每个用户创建单独的数据库。使用它可以使用视图整理,例如使用单个视图发出用户配置文件和所有拥有的录像或所有共享录像。

要创建录音,我只需添加一个键对,即表明谁是所有者的录音文档。另一个密钥对可以是一个数组,其中包含与其共享记录的所有配置文件的ID。

对于用户界面,为了保持简单,您可以使用Couchapp(http://couchapp.org/page/index),但显然还有许多其他选项可用于创建用户界面。