php – SAAS和Symfony2中的多租户?
我已经使用Symfony近2年了,到目前为止,我构建的每个项目都是专门为每个客户端(即一个客户端,一个代码库,一个数据库)部署的.
让我说我有一个Project Management应用程序,我想为许多客户端部署.假设客户端将随着我在系统中构建的任何功能而去,如果我为每个客户端部署不同的代码库(因此,分配不同的数据库),这里是我预见的问题: 推出错误修复和升级将会很痛苦.我需要将其推送到我部署的每个存储库.如果我有50个客户端使用相同的应用程序,它将不会很好地扩展. 这是我已经考虑并在一定程度上尝试的解决方案. 解决方案1 一个数据库和一个代码库为所有我的客户.项目将在一个表下,发票在一个表之下,全部由他们自己的client_id标记.用户可以分配到项目,所以不需要多次注册. 这不是很难创建.但是,如果不同的客户需要发票的不同列,会发生什么?我的发票表将不断扩展(不同客户端需要的不同字段),并且每行可能包含许多空字段.更不用说,我的发票实体将以文件大小增长,每次新的自定义进行时,我都必须更新数据库模式. 解决方案2 一个数据库,每个客户端都有自己的表前缀.所以对于客户端A,我可以使用clientA_projects,clientA_invoices,clientA_configuration等 这是理想的,如果每个客户想要自定义他们的领域.但是,这是否意味着我需要为进入系统的每个新客户端创建新的实体和表单类?看起来像这个解决方案,我需要更新数据库模式与我得到的每个新客户端. 目前,我正在尝试无模式数据库(mongo和couch),希望无需先前指定表模式,我可以无需麻烦地实现解决方案1.但是我还在尝试,在我敢于部署一个可以生产的应用程序之前,还有一些方法可以解决,不熟悉与Symfony的麻瓜和沙发的问题. 所以,这是我被困在哪里.作为一名自我训练的程序员,我觉得我的知识有很多漏洞,需要填写(而不是来自CS背景的人).网络上没有很多地方谈论Symfony 2和多租户(也许我正在寻找错误的东西).如果有人能指出我更清晰的方向,也许最好的做法,例子的项目,我会真的很感激! Btw,我打算在最新版本的Symfony(此时为2.3.2)中执行此操作. 先谢谢你们.
我也在使用Symfony2类似的时间(因为一个BETA),我建议你去解决方案#1.如果您正在进行SaaS,则无法根据您的原因向客户提供代码(主要是更新/升级的问题).整个麻烦将在用户管理上 – 哪个用户可以访问哪些数据,属于哪个组,公司等.所有其他的事情,如果完成正确将被编码与用户不一致的方式.您对不同公司的不同要求应该怎么做?使这些功能可配置.你可以在各个层次上实现:
>简单实体属性:在每个表中都有一个属性字段,并将所有内容保存为JSON,YAML或其他可动态结构化内容, 此外,解决方案1具有一个无与伦比的优势 – 即使您想在最终发布代码,它也可以处理更多的一家公司.你只需要掩盖添加更多的能力. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |