我将尝试尽可能简短地介绍所有要点 - 我目前是一名PHP / MySQL开发人员。我和朋友有一个移动应用程序的想法,我们将开始开发它。
我不是说这会很棒,但如果它能够实现,我们将会有很多数据。
例如,由于缺乏更好的术语,我们会有“客户”,他们会列出100-250,000个“产品”。假设最好,我们可以有数百个客户。
客户端将通过Web界面编辑数据,移动界面只会调用Web服务器并返回JSON(可能)。
我是一个低级开发cms的人,所以我不知道如何处理这个问题。我的问题或多或少是关于绩效的;我在MySQL表中看到的最多是340k,而且它已经慢了(授予它不是最好的服务器)。
我无法理解一张有4000万行(并且可能不断增长)的表格。
我的计划是拥有一个“核心”数据库,其中包含“真实”数据库的名称,因此用户会进入并尝试访问客户端的数据,它将转到核心数据库并找出哪个数据库从中获取信息。 我不关心数据分离或数据安全(它不是私人信息)
答案 0 :(得分:1)
是的,这是可能的,而我的公司也是这样做的。不过,我当然不会说这很聪明。我们有一个SAAS营销自动化系统。一些客户的数据库有100万+记录。我们处理第二个“通用”数据库,该数据库具有跟踪电子邮件,信件,电话等的“履行”表,其中包含超过400万条记录,以及许多其他非常大的共享表。通过适当的索引,优化,维护单独的仅DB服务器,以及可能的群集(我们还不需要做),您可以处理大量数据......在许多情况下,那些认为可以只处理数十万条记录,以竞争产品为生。如果您仍然怀疑它是否有效,请考虑根据MySQL的群集指标,8服务器群集可以处理250万次更新PER SECOND。一点也不简陋.....
使用两个数据库的问题是处理多个连接。这很难吗?不,不是真的。您可以根据所需的数据库创建不同的对象并引用连接类。在我们的例子中,我们点击主数据库的公司类来推断客户端数据库名称,然后基于此建立第二个连接。但是,当你来回地处理这些连接时,你可能会遇到需要额外调试的错误。这不只是“我的查询有效吗?”但“我真的得到了正确的数据库连接吗?”在我们的示例中,丢弃的会话可能会导致各种PDO错误,因为系统不再能够跟踪要访问的客户端数据库。此外,从可维护性的角度来看,尝试将表结构更新推送到100个不同的实时数据库是一个可怕的过程。是的,它可以自动化。但是一个滑倒了,你已经打倒了很多人,为自己做了大量额外的工作。现在,计算兼顾连接和推送更新所需的额外开发和测试....这将衡量它是否值得。
我的推荐?找到一个允许您将两台计算机放在同一本地网络上的主机。我们选择了Linode,但你使用的是无关紧要的。从专用数据库服务器开始,提前计划在必要时进行群集。将所有内容保存在一个数据库中,进行索引并进行宗教优化。最后,找到一个真正优秀的DB人并善待他。有了那么多数据,一个伟大的DBA将是必须的。