couchdb - POS应用的CouchDB设计
问题描述
我正在使用带有角度的 couchdb 创建 POS(销售点)应用程序。因为我是 NoSQL 世界的初学者。需要指导如何设计系统。
它应该是基于云的应用程序,登录用户可以在其中创建公司,每个公司都有 n 个位置。
在关系数据库的意义上,我的数据库设计看起来像这样。
- 登录到我的应用程序时,用户名和密码已根据许可证数据库验证。如果他们是有效的应用程序将连接他们自己的公司数据库。
- 每当用户创建新公司时,都会创建新数据库,他们所有的位置、发票、付款都在他们自己的数据库中。
- 许可证数据库负责用户帐户、付款及其计划和安全级别(他们可以访问/编辑的屏幕)。
- 该应用程序具有使用 PouchDB 的离线支持。将相关位置详细信息下载到用户浏览器,并将它们同步回服务器数据库。
问题:
- 是否可以为每个公司创建数据库。
- 如果用户想要离线操作,他们可以只同步自己的位置数据(过滤复制),如果他们想要访问其他位置数据,应用程序应该连接云数据库。可以吗?
- 我想要相同的代码在 couchdb 和 PouchDB 中查询/插入数据。可能吗?
- couchdb map-reduce/mango 查询是否支持复杂报表
- Angular+Couchdb 是否足够,或者我需要任何服务器端框架。我现在没有任何第三方身份验证。
- 上面的关系型数据库设计应该如何在couch db中实现
我应该考虑这个软件设计的其他事情是什么
解决方案
- 是的。CouchDB 的一种常见设计是每个用户都有一个数据库。每个公司一个是完全合理的。
- CouchDB 支持过滤复制。您可以为本地数据库实例(PouchDB 或 CouchDB)上的用户文档设置过滤复制
- PouchDB 允许您连接到 CouchDB。基本上,您可以拥有一个 PouchDB 库来执行您的所有业务操作。您只需要更改云或客户端数据库的数据库适配器。
- Map/Reduce 非常简单。它允许您索引文档并通过它们的键查询它们。您可以轻松更改索引中的值,也可以使用 reduce 函数。Mango 查询更加灵活。有点类似于 MongoDB。
- 您最终可能需要一个应用程序层,但只能使用 CouchDB。