每次调用 API 时如果不存在则创建表:不好的做法?

Rom*_*eev 5 mysql innodb performance php

我正在用 PHP 编写一个简单的 API,并使用 MySQL 作为 Web 应用程序的数据库。我打算CREATE TABLE IF NOT EXIST在每个 API 调用中放入所有表。

我预计会有 5-6 张桌子。

我尝试这样做的原因很简单:我不需要运行任何额外的脚本来初始化应用程序 - 它会在第一次运行时自动执行。

作为一个缺点,我预计这会减慢 API 操作的速度。然而,我尝试记录 API 调用,但仍然是 2-3 毫秒(在我的例子中,如果有 CREATE TABLE 或没有 CREATE TABLE,我没有注意到任何差异)。

有什么想法吗?

Mic*_*een 4

所以让我们稍微往前想一下。应用程序上线,表格创建完毕,一切都很顺利。然后,您有新的要求,表格必须更改。你如何编码?有针对代码从未运行的环境的 CREATE,以及针对现有环境的一堆 ALTER。现在又出现了另一个要求。这次您必须出于某种原因迁移数据。现在有 CREATE(针对新环境)、ALTER(针对现有环境)以及一大堆 DDL 和迁移逻辑。但是等等——还有更多。出于真正好的商业原因,您希望保存迁移数据的列与现有列具有相同的名称。现在如何判断数据库是否已迁移?您不再进行仅元数据的查找。不,现在您需要一个标志或版本表来显示每次执行时必须运行的 DDL。

是的!你非常成功。无数人想要使用您的服务。风险投资家把钱推到你家门口。第三方组织正在寻求与您合作。开发团队的规模增加了一倍(不,是三倍!)来处理业务机会和定制。哎呀。这些都必须编码在API启动代码中。每个。和。每一个。一。您不再拥有 API。您拥有所有迁移脚本之母,并附加了一段业务代码。:悲伤的脸: