Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 每个客户端的MySQL数据库_Php_Mysql_Sql_Database - Fatal编程技术网

Php 每个客户端的MySQL数据库

Php 每个客户端的MySQL数据库,php,mysql,sql,database,Php,Mysql,Sql,Database,我需要一些关于这个问题的信息。我到处找了找,但这似乎真的取决于你的情况。我的情况解释如下: 我们开发了一个系统,在这个系统中,公司可以跟踪他们的项目和财务状况。他们可以创建订单、在员工之间分配任务、发送发票、检查是否已付款等 目前,我们有1个域和1个数据库,其中包含该公司的所有数据。我们也希望将此系统用于其他公司,但在1个域上,每个公司都有相同的文件。因此,我们可以将文件保存在一个位置,并将所有内容保存在我们自己的服务器上 出于以下原因,我们希望使用多个数据库: 我们希望文件在一个地方,更容易

我需要一些关于这个问题的信息。我到处找了找,但这似乎真的取决于你的情况。我的情况解释如下:

我们开发了一个系统,在这个系统中,公司可以跟踪他们的项目和财务状况。他们可以创建订单、在员工之间分配任务、发送发票、检查是否已付款等

目前,我们有1个域和1个数据库,其中包含该公司的所有数据。我们也希望将此系统用于其他公司,但在1个域上,每个公司都有相同的文件。因此,我们可以将文件保存在一个位置,并将所有内容保存在我们自己的服务器上

出于以下原因,我们希望使用多个数据库:

  • 我们希望文件在一个地方,更容易维护和更新
  • 客户不能意外访问其他客户的财务数据
  • 我们可以对客户的数据进行单独备份
我认为缺点是:

  • 如果表中的某些内容需要更新,则必须在每个数据库中手动进行更新
  • MySQL在超过100个数据库之后会变得很慢吗
我说得对吗?我们给每家公司提供一个行业数据库,这样做对吗


提前谢谢

从技术上讲,您可以拥有的数据库数量没有限制。通过一些人对1000多个数据库的简短搜索,我发现100多个数据库没有问题

我们希望文件在一个地方,更容易维护和更新

正如您已经在下面提到的,如果更新需要修改数据库的模式,该怎么办?与单个数据库(相关表中有
client
indicator列)相比,拥有数百个数据库维护起来同样困难

客户不能意外访问其他客户的财务数据

但是客户端只能通过您的webapp访问数据。如果由于意外或其他原因使其受损,那么如何阻止它访问其他数据库,而不是同一数据库中的意外记录

可以提供类似的安全优势(尽管目前存在一些性能成本)。但是,我倾向于创建存储过程,并强制我的应用程序通过它们执行所有数据库操作,这样我可以执行自己的安全检查,同时将所有数据库访问限制为仅预定义的操作

我们可以对客户的数据进行单独备份


仍然可以进行选择性备份,例如使用。

有时最好为每个公司使用自己的数据库。从不在理论上而是经常在实践中

  • Sql命令更简洁,更易于编写
  • 它更安全。如果sql查询或脚本出错,两家公司不可能意外地访问彼此的数据库。您只需仔细选择数据库
  • 稍后,如果数据库太忙,则很难将数据库分离到多个服务器。大型数据库或表可能难以拆分
  • 表保持较小,因此查询速度也更快

  • 简言之,不,1:1数据库公司关系是错误的。我认为,即使给每家公司一张单独的桌子也太多了。为什么不直接使用虚拟表来限制访问?如果您的DB服务器在添加
    n
    数据库后变得“慢”,那就是您添加另一台服务器的地方。@raina77现在我不同意,我们是在公司的基础上共享表的。就我们的情况而言,每家公司都有1000多万行,因此我们不得不在某些方面进行拆分。这一切都取决于您的具体情况。您的程序逻辑应该考虑不允许A公司查看B公司的数据。是否确实要添加多个数据库?为什么不为新公司增加一个表呢?我确信你编写应用程序逻辑是为了隐藏安全信息。我同意!很好,但是添加来自100多个客户机的数据不会扰乱整个数据库。我想象在几周内就能得到一个巨大的数据库。@StefanWeck:从本质上讲,没有理由认为一个数据库会有问题。RDBMS可以非常有效地整理您的数据(前提是您合理地设计它们,例如使用适当的索引)。如果表开始增长很大,考虑它们。如果它们变得太大,即使考虑到这一点,也要考虑升级硬件。如果你超过了硬件,考虑一下。你已经解决了我的问题,我想我会坚持1数据库。但我还有一个问题,那就用其他公司的数据搜索数千行,从1家公司获得数据。我们还跟踪公司的工作,数据库中有1家公司的28000个日志。想象一下,如果有20家公司这样做了。@StefanWeck:使用复合索引:首先是通过您的
    客户
    列(在适当的情况下),然后是通过您需要的任何其他内容。28k*20=560k,对于一个大型MySQL表来说,这根本不是很多记录。