【问题标题】:CouchDB Design for POS applciationPOS 应用程序的 CouchDB 设计
【发布时间】:2019-01-24 14:20:21
【问题描述】:

我正在使用 couchdb 和 angular 创建 POS(销售点)应用程序。因为我是 NoSQL 世界的初学者。需要指导如何设计系统。

它应该是基于云的应用程序,登录用户可以在其中创建公司,每个公司都有 n 个位置。

在关系数据库的意义上,我的数据库设计是这样的。

  • 登录到我的应用程序时,用户名和密码已根据许可证数据库进行验证。如果他们是有效的应用程序将连接他们自己的公司数据库。
  • 每当用户创建新公司时,都会创建新数据库,他们的所有位置、发票、付款都在他们自己的数据库中。
  • 负责用户帐户、付款及其计划和安全级别(他们可以访问/编辑哪个屏幕)的许可数据库。
  • 该应用程序具有使用 PouchDB 的离线支持。将相关位置详细信息下载到用户浏览器,并将它们同步回服务器数据库。

问题:

  1. 是否可以为每个公司创建数据库。
  2. 如果用户想要离线操作,他们可以只同步自己的位置数据(过滤复制),如果他们想要访问其他位置数据,应用程序应该连接云数据库。可以吗?
  3. 我希望使用相同的代码在 couchdb 和 PouchDB 中查询/插入数据。有可能吗?
  4. couchdb map-reduce/mango 查询是否支持复杂报表
  5. Angular+Couchdb 够用吗,还是需要任何服务器端框架。我现在没有任何第三方认证。
  6. 上述关系型数据库设计应该如何在couch db中实现

关于这个软件设计我应该考虑的其他事情是什么

【问题讨论】:

    标签: couchdb pouchdb


    【解决方案1】:
    1. 是的。 CouchDB 的一种常见设计是每个用户都有一个数据库。每家公司一个是完全合理的。
    2. CouchDB 支持过滤复制。您可以为本地数据库实例(PouchDB 或 CouchDB)上的用户文档设置过滤复制
    3. PouchDB 允许您连接到 CouchDB。基本上,您可以拥有一个 PouchDB 库来执行您的所有业务操作。您只需更改云或客户端数据库的数据库适配器。
    4. Map/Reduce 非常简单。它允许您索引文档并通过它们的键查询它们。您可以轻松更改索引中的值,也可以使用 reduce 函数。 Mango 查询更加灵活。有点类似于 MongoDB。
    5. 您最终可能需要一个应用层,但只能使用 CouchDB。

    【讨论】:

    • 关于角度到 couchdb 连接,我存储 couchdb 用户名和密码的位置,是否需要服务器端库。我认为登录用户不在 _users 数据库中。我需要为每个用户自定义注册/忘记密码并设置安全性。
    • 在后端添加微服务或其他东西来处理身份验证/注册通常是个好主意。否则,我认为您可以公开您的数据库,以便人们可以注册。 Altought,我不知道如何处理“权限”。也许每用户功能可以帮助解决这个问题
    • 在第三点,你的意思是设计文档也在 PouchDB 中复制。但是基于这个问题(stackoverflow.com/questions/39256692/…),我们不应该在 PouchDB 中复制 DDocs。我不希望我的最终用户可以使用 chrome 开发工具查看设计文档。而不是 map-reduce,是使用 mango 查询来解决这个问题。
    • @Nest 我看不出我的第三点如何提到设计文档的使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多