1

在涵盖所有要点的同时,我将尝试使其尽可能简短——我目前是一名 PHP/MySQL 开发人员。我和朋友有一个移动应用程序的想法,我们将开始开发它。

我并不是说它会很棒,但如果它流行起来,我们将拥有大量数据。

例如,由于没有更好的术语,我们会有“客户”,他们会列出 100-250,000 种“产品”。假设最好,我们可以有数百个客户。

客户端将通过 Web 界面编辑数据,移动界面只需调用 Web 服务器并返回 JSON(可能)。

我是一个低级的 cms 开发者,所以我不知道如何处理这个问题。我的问题或多或少是关于性能的。我在 MySQL 表中见过的最多的是 340k,而且它已经有点慢(当然它也不是最好的服务器)。

我只是无法理解一个有 4000 万行(并且有可能持续增长)运行良好的表。

我的计划是有一个“核心”数据库,其中包含“真实”数据库的名称,因此用户会进来并尝试访问客户的数据,它会转到核心数据库并确定要获取哪个数据库来自的信息。我不关心数据分离或数据安全(这不是私人信息)

4

1 回答 1

2

是的,这是可能的,我的公司就是这样做的。不过,我当然不会说它很聪明。我们有一个 SAAS 营销自动化系统。一些客户的数据库有超过 100 万条记录。我们处理第二个“通用”数据库,它有一个“履行”表,用于跟踪超过 400 万条记录的电子邮件、信件、电话等,以及许多其他非常大的共享表。通过适当的索引、优化、维护单独的仅 DB 服务器,以及可能的集群(我们还不需要这样做),您可以处理大量数据......在许多情况下,那些认为可以只处理几十万条唱片,以竞品为生。如果您仍然怀疑它是否有效,请考虑根据 MySQL 的集群指标,一个 8 服务器集群可以处理 2 个。每秒 500 万次更新。一点都不寒碜。。。。。。

使用两个数据库的问题在于处理多个连接。难吗?不,不是。您可以根据所需的数据库创建不同的对象并引用连接类。在我们的例子中,我们点击主数据库的公司类来推断客户端数据库名称,然后基于该名称构建第二个连接。但是,当您来回处理这些连接时,您可能会遇到需要额外调试的错误。这不仅仅是“我的查询有效吗?” 但是“我真的得到了正确的数据库连接吗?” 在我们的例子中,丢弃的会话会导致各种 PDO 错误触发,因为系统不再能够跟踪要访问的客户端数据库。另外,从可维护性的角度来看,它' 一个可怕的过程,试图将表结构更新推送到 100 个不同的实时数据库。是的,它可以自动化。但是一个失误,你已经击倒了很多人,并为自己做了很多额外的工作。现在,计算处理连接和推送更新所需的额外开发和测试......这将是你衡量它是否值得的标准。

我的推荐?找到一个允许您将两台机器放在同一个本地网络上的主机。我们选择了 Linode,但您使用的是谁无关紧要。从您的专用数据库服务器开始,提前计划在必要时进行集群。将所有内容保存在一个数据库中,认真地索引和优化。最后,找到一个非常好的数据库人并善待他。有了这么多数据,优秀的 DBA 将是必须的。

于 2012-06-06T19:34:32.023 回答