我正在用PHP编写一个简单的API,并将MySQL作为web应用程序的数据库。我打算为每个API调用中的所有表设置CREATE TABLE IF NOT EXIST。
我想我会有5-6张桌子。
我尝试这样做有一个简单的原因:我将不需要任何额外的脚本来运行应用程序的初始化-它将自动在第一次运行。
作为一个缺点,我希望这可以减缓API操作。但是,我尝试记录API调用,它仍然是2-3毫秒(在我的例子中,如果存在CREATE,我没有注意到任何不同)。
有什么想法吗?
发布于 2017-03-13 10:30:51
所以让我们向前想一想。应用程序启动,表被创建,一切都很美好。然后,您将有一个新的需求,并且表必须更改。你是怎么编码的?这是为代码从未运行的环境创建的,另外还有一些针对现有环境的更改。现在又出现了另一个要求。这一次,由于某种原因,您必须迁移数据。现在有了创建(针对新环境)、更改(针对现有环境)以及大量DDL和迁移逻辑。但是等等-还有更多。出于非常好的业务原因,您希望保存迁移数据的列具有与现有列相同的名称。现在如何判断数据库是否已被迁移?不再有元数据查询。不,现在您需要一个标志或版本表来显示DDL在每次执行时必须运行的内容。
嗯!你是一个伟大的成功。成千上万的人想要使用你的服务。风险资本家把一大笔钱推到你家门口。第三方组织正在乞求与你合作。开发团队翻了一番(不,翻了三倍!)在规模上处理商业机会和定制。糟了。这些都必须在API启动代码中进行编码。每个人。和。每个。一。您已经没有API了。您拥有所有迁移脚本的之母,并添加了一个业务代码片段。*悲伤的表情:
发布于 2017-07-08 09:55:42
我在寻找同样原因的开销信息。可能没有开销,因为表通常是缓存的,并且没有磁盘访问。数据库的瓶颈通常是磁盘访问。然而,一个更好的解决方案可能有以下特性:
听起来很复杂,但这就是编写API和编写应用程序之间的区别。除非您的应用程序必须安装在许多服务器上.
而且,如果您设计得很好,您将不必进入复杂的步骤。每个版本更新脚本都是一个步骤,主要是添加可能具有默认值的新表或字段。如果您设计得很好,那么大多数版本更新根本不需要更新数据库。
https://dba.stackexchange.com/questions/166996
复制相似问题