用于POS应用的CouchDB设计

时间:2019-01-24 14:20:22

标签: couchdb pouchdb

我正在尝试使用带有角度的长沙发来创建POS(销售点)应用程序。由于我是NoSQL世界的初学者。需要有关如何设计系统的指导。

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

从关系数据库的角度来看,我的数据库设计如下所示。

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

问题:

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

关于此软件设计,我还应该考虑些什么

1 个答案:

答案 0 :(得分:0)

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