你必须在这里和我一起承担可能得到一些术语稍有不当,因为我根本不知道这掉进了整个“多租户”“软件即服务”类的,但是在这里。
我已经开发了客户端的会员制(在PHP)。 现在我们正在提供它作为我们的其它客户的完全托管解决方案,提供了一个子域(甚至自己的域名)。
我似乎选项有在桌子上,尽可能的数据存储云是:
选项1 -存储所有信息1名大的数据库,并且对需要它的表一“的client_id”字段(将有大约30桌,它将应用到),并有一个“客户”表中存储的主要设置,细节等,并映射到他们的域。 这就只是设置一个包含其个人客户端ID的全局访问的变量 - 我明明已经修改每一个查询来检查CLIENT_ID列。
选项2 -有一个主表与所述的共享参考'表,和“客户”表。 然后有其他数据库,其中每一个都包含“块”,说10个客户端。 客户端会得到自己的数据库表,与他们的客户ID前缀。 这增加了安全性,以防止看到其他客户的数据,一旦发生真的错了一点点。
选择3 -完全一样的选项2,除非你对每一位客户1个数据库,完全从其他客户隔离开来,并从理论上提供更多的保护,如果1个客户的表被黑客攻击或其他损坏,也不会影响其他人。 最大的缺点是,部署新的客户端时,整个数据库,用户名和密码需要设置,等等。难道这也可能导致开销相当数量的,或者这将是几乎一样的,如果你在一个有大家数据库?
有几个点,以及 - 一些客户将有5000多个“客户”与这些客户的所有细节一起 - 这就是为什么选项1可能是有点问题 - 如果我有100个客户,这可能等于50多万行1个表。
我在想方案3是在一个情况下客户数据(和支付信息)的安全性是关键,最好的方式去纠正。 从建议我有,有几个人表示,与选项1去,因为“它更容易”,但是我真的不这么认为。 我认为这是一个潜在的瓶颈的路线,这是肯定的,我可以围绕容易得多,如果他们有自己的数据库移动客户端。
(FYI该系统是基于与MySQL PHP)