代码之家  ›  专栏  ›  技术社区  ›  JD Long

本机与ODBC数据库连接

  •  6
  • JD Long  · 技术社区  · 15 年前

    我知道有些数据库在R中有本机支持(例如MySQL),但是您可以使用RODBC连接到其他数据库,比如mssqlserver。与RODBC相比,使用本机驱动程序的读写速度提高了多少?其他哪些数据库在R中有本机驱动程序?一般来说,阅读比写作快还是慢?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Community CDub    4 年前

    如果您对SQL Server特别感兴趣,下面的参考资料有点过时了,但我想它可能仍然适用。

    Using ODBC with Microsoft SQL Server

    ODBC作为本机API的性能

    关于ODBC的一个长期传言是它天生就比原生dbmsapi慢。这种推理基于这样的假设:ODBC驱动程序必须作为一个附加层实现在原生dbmsapi上,将来自应用程序的ODBC语句转换成原生dbmsapi函数和SQL语法。与应用程序直接调用本机API相比,这种转换工作增加了额外的处理。对于通过本机dbmsapi实现的一些ODBC驱动程序来说,这种假设是正确的,但是microsoftsqlserverodbc驱动程序不是这样实现的。

    microsoftsqlserverodbc驱动程序是DB-Library的功能替代品。SQLServerODBC驱动程序与底层网络库的工作方式与DB库DLL完全相同。microsoftsqlserverodbc驱动程序不依赖DB-Library DLL,如果客户机上甚至没有DB-Library,驱动程序将正常工作。

    微软的测试表明,基于ODBC和基于DB library的sqlserver应用程序的性能大致相当。

        2
  •  1
  •   Dirk is no longer here    15 年前
    • 这是一个经验主义的问题,为什么不根据你感兴趣的组合来衡量呢?
    • 公共代码不是隐藏的,所以为什么不计算一下CRAN的其他DB接口呢?仅对于DBI,我们就有SQLite、MySQL、Postgresql、Oracle;对于定制的db后端,有Vhayu之类的东西。
    • 有专门的论坛,那你为什么不在r-sig-db上问问呢?
    • 最后,一旦有了API和需求,人们就会倾向于将两者结合起来。我已经写了两个不同的(在工作中,因此未发布)包到两个高度专业化和快速的后端。