当前位置: 首页 > 面试题库 >

编写可移植的SQL有何必要或方便?

甘永春
2023-03-14
问题内容

您实际上从编写可移植的SQL并消除了方言的专有工具/语法中受益吗?

我从来没有见过有人花很多时间在mysql上构建复杂的应用程序,然后说 您知道那会是桃子吗? 让我们切换到(PostGreSQL | Oracle |
SQL Server)!

-say- PHP中的通用库确实提取了SQL的复杂性,但是要花多少钱呢?最终您将无法使用有效的构造和功能,因为您可能永远不会使用这种假定的可移植性。这听起来像教科书YAGNI。

编辑:
也许我提到的示例过于狡猾,但我认为重点仍然是:如果您计划从一个DBMS迁移到另一个DBMS,则可能无论如何都在重新设计该应用程序,或者根本就不会做。


问题答案:

与大型企业打交道的软件供应商可能别无选择(事实上,这就是我的世界)-他们的客户可能有只使用一个数据库供应商产品的政策。错过主要客户在商业上是困难的。

在企业 工作时 您可能可以从平台的知识中受益。

通常来说,数据库层应该被很好地封装,因此,即使您必须移植到新数据库,更改也不应泛滥。我认为采用YAGNI方法进行移植是合理的,除非您有特定的要求立即获得多供应商支持。使它与当前的目标数据库一起使用,但要仔细构造代码以实现将来的可移植性。



 类似资料:
  • 问题内容: 在我的Windows机器上,我通常在python 2中执行此操作以编写一个csv文件: 现在python 3禁止将文本文件编写为二进制文件,该代码段不再起作用。这样可行: 问题是:Python 2未知参数。 当然,省略换行符会导致csv文件中包含太多字符,因此是不可接受的。 我目前正在执行向后兼容的过程,以逐步从python 2迁移到python 3.5。我的所有模块中都有很多这样的语

  • 问题内容: 试图开发一些可以在较大的RDBMS之间移植的东西。 问题在于 生成 和 使用 自动递增数字作为表的主键。 这里有两个主题 用于生成自动递增数字的机制。 如何指定您要将其用作表的主键。 我正在寻找我 认为 当前状态的验证: 不幸的是,标准化在这方面来得很晚,并且在某些方面仍未实施(作为强制性标准)。这意味着在2013年仍然无法以可移植的方式编写CREATE TABLE语句…如果您希望使用

  • WebAssembly的二进制格式是被设计成可在不同操作系统与指令集上高效执行的,无论在Web或非Web环境中。 对高效执行的设想 尽管执行环境是有条件的,本地的,不确定的,也不要向WebAssembly提供下述特性。有些情况下为了WebAssembly模块执行,也许不得不模拟一些宿主硬件或操作系统不提供的特性,让它们似乎被支持。这种情况将会导致糟糕的性能。 随着WebAssembly的标准化推进

  • 2.2.1.可移植性 Linux可以轻松地移植到各种不同的硬件平台上。有了Linux做硬件抽象层,Android就不必为不同硬件的兼容性而劳心。Linux 的绝大多数底层代码都是用可移植的 C 代码编写,因此第三方开发者可以将 Android 移植到很多不同的设备上。

  • "C语言结合了汇编的强大功能和可移植性" -- 无名氏,暗指比尔.萨克。 可移植代码的好处是有目共睹的。这一节将阐述一些编写可移植代码的指导原则。这里"可移植的"是指一个源码文件能够在不同机器上被编译和执行,其 前提仅仅是在不同平台上可能包含不同的头文件,使用不同的编译器开关选项罢了。头文件包含的#define和typedef可能因机器而异。一般 来说,一个新"机器"是指一种不同的硬件,一种不同的

  • 主要内容:什么是PCL在本章中,我们将讨论什么是PCL(可移植类库),以及为什么我们需要PCL。 为了理解这个概念,让我们打开在前面章创建的类库项目文件夹。 在这个文件夹中,除了和CS文件之外,还可以看到文件,这是因为Visual Studio安装.NET Core项目类型为而不是。 正如微软所提到的,将会消失,但它仍然在预览工具中。UWP应用程序使用。 现在把引用和实际上是不可行的,而且这个功能不会被执行,因为将会移