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

2024-04-30

我有 Mysql 背景,现在使用 Pouchdb。我习惯了每个应用程序有 1 个数据库和许多表的 SQL 模式。

在 pouchDB 中情况有所不同,因为数据不是存储在表中而是存储在文档中。因此,在我的应用程序中,我有一个任务数据库,使用以下命令创建:

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

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


所以,我有两个问题:

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

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

一句话:不。

长答案:CouchDB/PouchDB 中的数据库本质上是免费的。以及一些应用设计require多个数据库。

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

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

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

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

在 PouchDB 中创建其他数据库(不适用于 CouchDB)的唯一真正限制因素是,没有简单的方法来列出现有数据库,除非使用plugin https://github.com/nolanlawson/pouchdb-all-dbs。这不一定是一个真正的限制——它只是意味着您需要记住您创建了哪些数据库(您可能不应该以编程方式创建随机命名的数据库......但这可能是一个糟糕的设计。; -) )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在同一个应用程序上创建多个 PouchDB 数据库是否被认为是糟糕的设计? 的相关文章

  • HBase单调递增键的行键设计

    我有一个 HBase 表 我在其中编写行键 例如
  • 如何快速获取MongoDB pymongo的所有文档

    目前我通过在 pymongo 中迭代游标来获取文档 例如 for d in db docs find mylist append d 作为参考 对同一组数据 700 万条记录 执行 fetchall 大约需要 20 秒 而上述方法需要几分钟
  • 正式支持 MonoTouch 的 NoSQL 数据库

    我无法通过设备上的本地数据库找到正式支持 MonoTouch 的 NoSQL 数据库 如果是的话 有人可以在这里提供他们的名单吗 根据http nosql database org http nosql database org 有siaq
  • MongoDB 架构设计 - 实时聊天

    我正在启动一个项目 我认为该项目特别适合 MongoDB 因为它提供的速度和可扩展性 我目前感兴趣的模块是与实时聊天有关的 如果我要在传统的 RDBMS 中执行此操作 我会将其分为 频道 一个频道有很多用户 用户 一个用户有一个频道但有多条
  • CouchDB“加入”两个文档

    我有两个看起来有点像这样的文档 Doc id AAA creator id data DataKey id credits left 500 times used 0 data id AAA 我想要做的是创建一个视图 它允许我传递 Data
  • nosql 是什么意思?有人可以用简单的话向我解释一下吗?

    在这篇文章中堆栈溢出架构 http highscalability com stack overflow architecture我读到了一些叫做 nosql 的东西 我不明白它的意思 我试图在谷歌上搜索 但接缝我无法确切地了解它是什么 谁
  • 当我的数据非规范化时(Firebase),如何按上次更新时间对我的聊天组进行排序?

    我正在使用 Firebase 和 AngularJS 构建一个聊天应用程序 并且我有一个与上的数据结构类似的数据结构此 Firebase 文档页面 https firebase google com docs database web st
  • 查询 mongodb 返回今天创建的文档

    我如何编写今天创建的结果文档的过滤器 我知道 ObjectId 有时间戳 我试过这个 db doc find id gte ObjectId getTimestamp getTime 我可以写吗 db doc find id getTime
  • Firebase 数据库结构 - 需要建议

    我知道这个问题可能被视为基于意见的问题 但是我认为值得讨论正确构建数据库的方法 我在 Swift 中开发 iOS 应用程序 并决定使用 firebase 作为我的后端服务 让我们从应用程序描述开始 该应用程序旨在为图书阅读体验提供跟踪和社交
  • 库存管理系统的 SQL 与 NoSQL

    我正在开发一个基于 JAVA 的网络应用程序 主要目的是拥有在多个称为渠道的网站上销售的产品的库存 我们将担任所有这些渠道的管理者 我们需要的是 用于管理每个渠道的库存更新的队列 库存表 其中包含每个通道上分配的正确快照 将会话 ID 和其
  • Flux waitFor() 和异步操作,如何建模。

    我使用 pouchDB 作为应用程序的本地数据库 我想查询 PouchDB 的结果并将其加载到 React js 中 然而 即使我使用 waitFor 方法 PouchDB 查询的结果返回得太晚了 我想我不明白 waitFor 的用法是否正
  • 如何在弹性搜索(aws)中存储日期范围数据并搜索范围?

    我正在尝试在弹性搜索中存储酒店房间可用性 然后我需要 搜索从某个日期到另一个日期可用的房间 我想出了 存储数据以确保可用性的两种方式 如下 这里可用性字典存储了所有日期 每个日期键的值是 true 或 false 代表其可用 那天与否 id
  • 如何:SQL 还是 NOSQL?

    我还没有遇到过这个问题 但这就是我的想法 非常肤浅和简单化恕我直言 如果您有键值类型的存储 并且所有访问都是键查找 请使用 NOSQL 解决方案 如果您想要基于值 和子值 进行查找或者有一些更复杂的东西 例如联接 您会选择关系解决方案 事务
  • redis - 使用哈希

    我正在使用 redis 为我的 Web 应用程序实现社交流和通知系统 我是 redis 的新手 我对哈希值及其效率有一些疑问 我读过这篇很棒的文章Instagram 帖子 http instagram engineering tumblr
  • NoSQL(MongoDB)与 Lucene(或 Solr)作为数据库[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 随着基于文档数据库的 NoSQL 运动的发展 我最近关注了 MongoDB 我注意到如何将项目视为 文档 就像 Lucene 以及 Solr 用
  • CAP 定理 - 可用性和分区容错性

    当我尝试理解CAP中的 可用性 A 和 分区容错性 P 时 我发现很难理解各种文章的解释 我感觉A和P可以在一起 我知道事实并非如此 这就是为什么我无法理解 简单解释一下 A和P是什么以及它们之间的区别 一致性意味着整个集群中的数据是相同的
  • 何时使用 NoSql,使用哪一种? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • MongoDB:如何使用单个命令更新多个文档?

    我惊讶地发现以下示例代码仅更新单个文档 gt db test save id 1 foo bar gt db test save id 2 foo bar gt db test update foo bar set test success
  • PHP 中的 MongoDB - 如何将项目插入集合中的数组中?

    这必须很容易 但我似乎无法弄清楚 假设我有一个集合users这是集合中的第一项 id ObjectId 4d8653c027d02a6437bc89ca name Oscar Godson email email protected cdn
  • ArangoDB:(1 个具有多个边缘定义的图)Vs(每个图 1 个边缘定义)

    我想知道在一个图中拥有多个边定义与每个图都有一个边定义相比是否有任何优势 谢谢你的帮助 使用多个边缘定义而不是仅使用一个边缘定义有多种原因 显示内容差异 您可能需要不同的边缘集合bought and watched 不过 这也可以通过使用标

随机推荐