在同一个应用程序上创建多个PouchDB数据库被视为糟糕的设计吗?

时间:2017-04-18 04:17:46

标签: pouchdb nosql

我来自Mysql背景,现在我正在使用Pouchdb。我已经习惯了每个app有1个数据库和多个表的SQL模式。

在pouchDB中它是不同的,因为数据不存储在表中而是存储在文档中。所以,在我的应用程序中,我有一个用于创建任务的数据库:

var db = new PouchDB('tasks', {revs_limit: 1, auto_compaction: true});

这是我的应用程序的主数据库,但现在我还需要存储设置,例如“last_visit_date”,“language_preference”等。

所以,我有两个问题:

  1. 我应该只创建一个数据库,然后存储不同的数据 设置子对象或者我可以创建多个数据库来存储这些数据第二个选项有任何缺点吗?
  2. 我尚未与cloudant或couchdb同步,但我将来必须这样做。如果我有2个数据库(或更多),它会使同步过程更复杂,更慢或更糟吗?

1 个答案:

答案 0 :(得分:12)

  

在同一个应用程序上创建多个PouchDB数据库是不是设计不好?

总之:不。

答案很长:CouchDB / PouchDB中的数据库基本上是免费的。一些应用程序设计需要多个数据库。

考虑一个理论离线优先/移动应用程序,它跟踪代理商的销售情况。它可能有一个用于库存管理目的的数据库,它与中央CouchDB服务器同步。

它可能还有一个每个代理数据库,包含给定代理的客户和销售信息。

PouchDB应用程序将需要两个数据库。由于CouchDB的设计,没有(简单,明智)的方法将这些数据集保存在同一个数据库中,并使代理的记录彼此分离。

CouchDB / PouchDB中的数据库更像是表,而不是RDBMS中的数据库。

在PouchDB中创建其他数据库(不适用于CouchDB)的唯一真正限制因素是,除了使用{{3之外,没有简单的方法列出现有数据库}}。这不是一个真正的限制 - 它只是意味着您需要记住您创建的数据库(您可能不应该以编程方式创建随机命名的数据库......但这可能是反正一个糟糕的设计。;-))