关于用MEAN Stack创build多租户SAAS应用程序的build议(Mongodb,express,angular,node)

我试图围绕开发与MEAN堆栈,而不是PHP和MySQL的SAAS应用程序。 我需要一个很好的方法来build立一个使用mongodb的多租户应用程序。 我从以前的阅读中知道,由于单个mongo数据库的大尺寸,我不想为每个客户build立一个数据库,所以我很可能坚持使用单个数据库。

我想在每个集合中创build类似于具有“customer_id”值的mysql数据库的数据库将是最好的主意,但是这使我的主要问题…

如果我为这个应用程序创build一个REST API,用户将如何访问他们的信息。 我会login他们,然后根据他们的客户端ID,访问API的方式,如:

api.myapplication.com/CLIENTID/projects

任何意见,这是表示赞赏。

======

我想扩大我的用例情况,因为虽然第一个答案是非常好的,我想要一些额外的build议。 我将创build一个系统,用户注册我们的应用程序,并保留一堆内部logging。 我不想放弃太多的细节,所以可以说这个用户公司注册,然后他可以添加“团队成员”。 他的团队成员都有与他的主要公司有关的个人login信息。 这家公司有几个资源。 可以说估计和发票(像新书)。

我正在考虑启动这个项目,每个公司都提供一个独特的ID。 这个ID变成了一个mongo集合。 里面的单一收集是所有的公司估计,发票,团队成员和文件与他们所有的条纹api信息(我的帐单使用)。

======

我已经阅读了每个用户收集数据库的优缺点,我认为根据我读过的内容,每个用户情况下最好是单个数据库,这是我的第二select。

任何更多的意见/反馈基于我原来的问题的扩大表示赞赏。

这是一个相当高层次的问题,有很多领域可以在这里扩展,这使得回答有点困难。 同样devise这样的东西,没有太多关于如何使用或使用的信息也使得任何答案都很模糊。 所以对不起,所有的手挥手我会做:)

一般来说,有很多人会反对使用NoSQL数据库,就像你使用SQL数据库一样。 但是你可能想要在这些NoSQL数据库中查看它的全部内容,并且更好地理解它们的优缺点是完全可以理解的。 Mongo是一个非常stream行的版本,它有很多好的function,但是知道在多个集合中引用数据有点不同 。 一般来说,一个常见的用途是每个资源都有一个集合(这往往适合于REST)。

转到REST的问题,在这个问题上还有很多要说的。 当然,如果你对这个概念不熟悉的话,那就有很多东西需要阅读 。 大多数REST API是围绕一个资源build立的,所以不是你所build议的,而是更像是:

api.myapplication.com/projects
api.myapplication.com/movies
api.myapplication.com/cars
..等等

但是,一般来说,用户首先进行身份validation,然后尝试从每个资源的REST API中访问单个信息。 但是,随着您开始构build这些应用程序,越来越多的API意味着越来越多的请求/响应周期,这可能会导致客户端的滞后。 所以最近人们已经从SOA转移到更多的特定于客户端的API,这些API将多个资源捆绑到一个请求中(或者他们在SOA层之上构build这些API)。 这些API可以精确调整到特定的客户端应用程序,从而减less多个请求的开销。

希望能帮助你开始…