是否有mariadb / mysql的本机C ++连接器,它不仅仅是旧C连接器的包装器?

时间:2015-02-23 19:33:57

标签: c++ mariadb mysql-connector

有没有人为mariadb / mysql发布了一个本地c ++连接器,它不是c连接器API的包装器?我用Google搜索,找不到任何东西。

我要问的原因是判断使用c ++连接器的最终价值,而不仅仅是在没有包装器的“中间人”的情况下实现c连接器本身。每种编程语言最终都只是cpu和程序员之间的人机界面。有些语言比其他语言更巧妙地呈现和强大,但它们仍然只是接口。我们有......

dbase engine< - c connector< - c ++ wrapper< - application

dbase engine< - c connector< - application

这是程序员不必自己从C类型到C ++类型和类的转换这一事实的唯一优势吗?

为什么我不会只使用旧的C连接器而忽略C ++包装器?由于“中间人”会导致性能下降吗?

2 个答案:

答案 0 :(得分:3)

可能没有本机C ++连接器(用于MySQL / MariaDB),因为libmysqlclient具有C API,并且因为该库与服务器之间的网络协议没有很好地记录或定义。据传,该协议已多次更改(使用MySQL版本)。

关于性能,在实践中并不重要,因为大多数时候SQL服务器与客户端不在同一主机上,因此它们之间存在真正的网络化(例如1Gbit / sec以太网) - 实际上已经是一个瓶颈(SQL服务器和客户端在同一主机上的情况可能有所不同,例如在localhost上;但这不是很常见)。典型的网络交互意味着线路上的千字节,因此几毫秒。

BTW,几个(可能是大多数)SQL请求可能需要真正的硬盘访问(至少当整个数据库大到不适合RAM时),这意味着很多毫秒。 (SSD磁盘的速度更快)。

所以在实践中,通过两层连接器通常并不重要(这只需要几十微秒)。

顺便说一句,如果您的数据与数据库客户端在同一台计算机上的情况很少,您可以考虑使用Sqlite。如果性能对您非常重要,您可能会放弃SQL并使用索引文件àlaGDBM

AFAIK,索引在性能方面比两层连接器更重要:良好的索引可以避免多次磁盘访问!

当然,我想的是足够大的数据库,它们不适合RAM。如果您的数据库只有一百兆字节,那么一切都在RAM中。我不是数据库或MySQL的专家

由于MySQL(& Mariadb)是free software,您可以研究libsqlclient的源代码,了解协议的所有细节,然后重新实现(在免费的GPL许可库中)使用正版C ++(或Ocaml等)。但我不认为这是值得的。

答案 1 :(得分:0)

Yes: https://launchpad.net/mariadb++

But there's no documentation and it hasn't seen any updates since it was first released over two years go.