我目前有一个小型零售/点销售和一个教育应用程序运行作为前提定制解决方案,为不同的客户。我正计划将应用程序和主机重写为基于SaaS/web的应用程序。
我可能会使用Postgresql,我会选择一个DB和共享模式。(数据量很低,而mo则是。并发用户最多可达400个)。
零售应用程序的地址是账单、库存等(后台/迷你-ERP)。该教育应用程序涵盖学生注册、管理和学生展望等(主要是前端-学生管理、知识管理、引线、一些市场营销等)。
最初的想法是有一个公共模式(包含地址、联系人和其他公共表对象),并为零售和教育制定特定的模式。即工业垂直-wise。当我在不同业务中添加比现有客户更多的客户时,我最终会添加额外的模式。这可能是一种方法。
或者我在想,我是否应该为ERP类型的功能、类似CRM的功能等选择一个公共模式和单独的模式,这样模式将是横向的,即基于功能而不是基于工业。明天,我可以添加一个化学零售或医疗联系管理客户端或一个餐馆客户端,他们需要计费,并且可以轻松地将它们安装到现有的数据模型中,并且可以处理应用程序代码的变化,而不是为每个业务行创建新的模式。
从长远来看,哪一种方法会更好?
编辑:还是我不应该麻烦和坚持公共模式,并处理代码的变化?或者,是否有任何令人信服的理由采取上述办法或任何其他更好的办法比这更好?
发布于 2012-01-08 11:52:07
我知道您希望使用单个数据库(因为从管理和维护的角度来看,它是好的),但是它可能是太多的集成。
我假设:
我认为,在这种情况下,一个可以接受的解决办法是:
西蒙在他的评论中提到的问题真的很重要。因此,您必须对数据库中的赠款执行非常严格的策略。
在PostgreSQL中,可以实现(以及在许多其他关系数据库管理系统中)。实现多租户解决方案的关键是智能地使用模式、角色、search_path设置。见http://www.postgresql.org/docs/current/static/ddl-schemas.html。实际上,我提出的建议将在某种程度上仿效Oracle的做法。如果你需要帮助的细节,请问。
https://dba.stackexchange.com/questions/10357
复制相似问题