2013-04-24 62 views
1

我是php/mysql新手,我正在编写一个简单的CMS。但在这种情况下,我将托管多个公司(每个公司与他们的多个用户),支付使用该系统的费用。单个数据库或多个数据库(对于单个应用程序中的多个用户)

所以......我的问题是关于如何组织数据库...谈论安全,管理和性能,我只是想知道这些情况至极的OU人的意见是最好的:

  1. 主机上的单个数据库中的所有企业,都获得公司ID来匹配用户。

  2. 每家公司有一个分开的数据库保存用户在那里(和不需要的公司ID了)。

我会在第一种情况下开始开发......但比我想如果我有一些黑客攻击/ sql注入,每个客户端都会受到伤害。分离数据库后,损坏将只能得到一个客户端。所以也许第二种情况在安全性方面会更好。但对于管理和业绩却说不完。

因此,根据您的经验,任何帮助或提示将是伟大的!

在此先感谢,并对我可怜的英语感到抱歉。

+1

我会倾向于单独的数据库。 1)如果需要,您可以选择向公司提供直接访问数据库的权利。 2)为每个客户定制变得更容易,因为您不再使用(尽可能多)复合主键。 3)每家公司的保留数据位于不同的地方,公司看到他人数据的风险要低得多。 – GarethL 2013-04-24 14:24:09

回答

2

我会去单独的数据库。但不仅仅是黑客攻击。

可扩展性: 假设您有一个服务器可以处理10个网站,但其中有1个网站的请求,内容等发展迅速。您的服务器很难全部承载。

随着单独的数据库,它是分散在多个服务器上的一块蛋糕。使用单一的一个,你将不得不升级你当前的数据库或将其集群,但有时候托管公司不可能或者非常昂贵。

性能: 你,他们都在1 DB和多个用户的数据在1台,锁可能会减缓其它用户。

大表,平均大指数,大查找等。因此,分裂到不同的数据库将实际速度提高。

您将不得不处理每个数据库的额外内存和CPU开销,但它们通常不会产生惊人的巨大影响。

是的,管理多个数据库是更多的工作,但具有适当的更新脚本并密切关注数据库模式的版本将大大减少您的管理担忧。

更新:也看到这篇文章。 http://msdn.microsoft.com/en-us/library/aa479086.aspx

+0

嘿,非常感谢你的提示...所以我会按照你的建议继续使用多个数据库!这篇文章是我最喜欢的。今天晚上去读它! – RBR 2013-04-24 15:11:23

0

独立的DB有许多优点,包括性能,安全性,可扩展性,移动性等方面有更多的风险回报少尝试的一切打包成1个数据库尤其是当你谈论的是独立的公司数据。

0

你还没有提供任何细节,但一般来说,我会选择单独的数据库。

使用为每个客户端的独立数据库允许更好的控制程度,因为这将是可以管理/备份/垃圾/等。他们单独,而不影响其他人。由于数据更容易区分,而且一个数据库无法打破其他数据库,所以它也不需要修饰。

且不说它会使开发过程变得更容易 - 注意,单独的数据库意味着你不必总是验证行的“所有者”。

0

如果您打算有这个数据库在云环境中托管,如在资源(相对)便宜,客户端都运行相同的代码库Azure数据库,该数据库架构是相同的(明显),并有是在公司之间共享一些数据的可能性,那么多租户数据库可能是一条可行的路。对于其他任何事情,您可能会为多租户数据库创建大量额外的工作。

请记住,如果转到单独的数据库路由,稍后尝试迁移到多租户云解决方案是一项巨大的任务。我只提到这一点,因为过去几年我在IT水冷却器上听到的所有内容都是“Cloud!Cloud!Cloud!”。

+0

这个计划真的要在云端托管......但是起初我会和resseler托管计划一起去,直到我获得支付云计划的最低收入。 – RBR 2013-04-24 15:17:05

+0

您仍然可以在云中托管多个数据库,而不是转到多租户数据库。重读你的问题之后,我主要关心的是你说你是PHP/mysql的新手,作为初学者,我不建议增加多租户数据库的复杂性;没有什么是“简单”的。 – Sav 2013-04-24 15:26:25

相关问题