PHP Web 应用程序 : mysql database design best practices question

标签 php mysql database-design

我目前正在与一位同事就我们正在创建的 PHP Web 应用程序的数据库设计的最佳实践进行辩论。该应用程序专为企业设计,每家注册的公司都会有多个用户使用该应用程序。

我的设计方法是为每个注册的公司创建一个新的数据库。这样一切都是沙盒化的、模块化的和小的。我的同事理念是将每个人都放入一个数据库中。他的论点是,如果我们有 1000 多家公司注册,我们最终会处理 1000 多个数据库。更不用说做商业智能会变得一团糟。

为了举例,假设应用程序是一个订单输入系统。使用单独的数据库,即使每家公司每天处理 100 多个订单,表的大小也可以保持可管理。在单桶应用程序中,表会很快变得非常大。

有这方面的最佳实践吗?我尝试在网上搜索,但没有取得多大成功。欢迎链接、白皮书和演示文稿。

提前致谢

抢劫

最佳答案

我与 WordPress 托管服务 wordpress.com 的数据库架构师进行了交谈。他说他们从一个数据库开始,将所有客户集中在一起。毕竟,单个博客站点的内容确实不多。按理说,单个数据库更易于管理。

这对他们来说效果很好,直到他们获得了成百上千的客户,他们意识到他们需要横向扩展,运行多台物理服务器并在每台服务器上托管一部分客户。当他们添加服务器时,将个人客户迁移到新服务器会很容易,但很难在属于个人客户博客的单个数据库中分离数据。

随着客户来来去去,一些客户的博客事件量很大,而另一些则变得陈旧,多台服务器的重新平衡成为一项更加复杂的维护工作。监控每个数据库的大小和事件也更容易。

同样,对包含 TB 数据的单个数据库进行数据库备份或恢复,与每个数据库备份和恢复几兆字节相比,是一个重要因素。考虑一下:一个客户打电话说他们的数据由于一些错误的数据输入而变得一团糟,你能从昨天的备份中恢复数据吗?如果您的所有客户共享一个数据库,您将如何恢复一个客户的数据?

最终,他们决定拆分成每个客户的独立数据库,尽管管理起来很复杂,但可以为他们提供更大的灵 active ,因此他们将托管服务重新架构为这种模式。

因此,虽然从数据建模的角度来看,将所有内容都保存在一个数据库中似乎是正确的做法,但一些数据库管理任务会随着您通过数据量的某个断点。

关于PHP Web 应用程序 : mysql database design best practices question,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2022248/

相关文章:

php - 使用 LIKE 语句搜索 MySQL 数据库

php - 用户可以销毁他们的 php session 吗

php - 从post到php获取多个变量

php - 如何在 C# 中向 php 发送很长的字符串?

mysql - 根据其他列从 1 列返回 2 个值的查询

sql - 如何将单行列转换为 SQL 中的标量?

database - 4NF分解后新关系的主键

php - 根据日期时间列查询记录

mysql - 我应该标准化发票数据库表集吗?

mysql - 关系表的复合索引