【发布时间】:2014-05-01 16:09:54
【问题描述】:
我对最近添加的一些 Postgres 功能(例如外部数据包装器)感到非常兴奋。我不知道有任何其他 RDBMS 具有此功能,但在我尝试向我的主要客户说明他们应该开始更喜欢 Postgres 而不是他们当前的 RDBMS 鸡尾酒之前,并且在我的情况下包括没有其他数据库可以做到这一点,我想验证一下。
我无法找到任何其他支持 SQL/MED 的数据库的证据,以及类似这样的简短说明,指出 Oracle does not support SQL/MED。
让我怀疑的主要是http://wiki.postgresql.org/wiki/SQL/MED上的声明:
SQL/MED 是管理外部数据,是 SQL 标准的一部分,它处理数据库管理系统如何集成存储在数据库外部的数据。
如果 FDW 基于 SQL/MED,并且 SQL/MED 是一个开放标准,那么其他 RDBMS 似乎也实现了它。
TL;DR:
除了 Postgres 以外的数据库是否支持 SQL/MED?
【问题讨论】:
-
我认为 SQL Server 可以做类似的事情(不记得名字)。而甲骨文有“异构服务”:oracle-base.com/articles/misc/…
-
我很确定所有商业数据库都支持访问远程数据库中数据的方法。当然,SQL Server、Oracle 和 Teradata 提供了此功能。曾几何时,ODBC 是标准化的,这使得该功能随时可用。 (注意:我并不是说这些产品使用 SQL/MED。)
-
鉴于这似乎很普遍,我想知道为什么其他数据库供应商没有像 Postgres 人那样大肆宣传这种能力。 (也许他们有更好/无痛的实施方式???或者他们只是更擅长营销?)
-
我认为关键不在于它是否能够或支持类似的东西。真正更重要的是接口,诸如“如何制作 FDW”和“如何从 SQL 中操作数据”之类的内容是 SQL/MED(或类似 SQL/MED 的实现)的范围。
-
该标准的标志之一是您可以在数据库之间交换 FDW(例如,“哦,我在 XSQL 上创建了这个疯狂的 FDW,现在让它在 MariaDB 上运行!”)。结束... 即使 SQL/MED 已经很老了(与 ISO/ANSI SQL:1999 保持一致),它似乎还不够成熟(因为只有 1 个完全实现的 FDW API,引用 IBM DB2,表明它是过于复杂的 API)并且有更改空间。
标签: sql postgresql foreign-data-wrapper sql-med