有没有人为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 ++包装器?由于“中间人”会导致性能下降吗?
答案 0 :(得分:3)
可能没有本机C ++连接器(用于MySQL / MariaDB),因为libmysqlclient
具有C API,并且因为该库与服务器之间的网络协议没有很好地记录或定义。据传,该协议已多次更改(使用MySQL版本)。
关于性能,在实践中并不重要,因为大多数时候SQL服务器与客户端不在同一主机上,因此它们之间存在真正的网络化(例如1Gbit / sec以太网) - 实际上已经是一个瓶颈(SQL服务器和客户端在同一主机上的情况可能有所不同,例如在localhost
上;但这不是很常见)。典型的网络交互意味着线路上的千字节,因此几毫秒。
所以在实践中,通过两层连接器通常并不重要(这只需要几十微秒)。
顺便说一句,如果您的数据与数据库客户端在同一台计算机上的情况很少,您可以考虑使用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.