【问题标题】:Main Memory Database with C++ Interface带有 C++ 接口的主内存数据库
【发布时间】:2010-03-26 10:27:57
【问题描述】:

我正在寻找具有 C++ 接口的主内存数据库。我正在寻找一个具有编程查询接口的数据库,最好是一个与本机 C++ 类型一起使用的数据库。例如,SQLLite 将查询作为字符串并需要执行解析......这很耗时。我正在寻找的操作是:

  • 创建能够存储整数类型的任意维度(属性数量)的表。
  • 支持插入、删除、选择、投影和(非优先级)连接。

【问题讨论】:

    标签: c++ main-memory-database


    【解决方案1】:

    SQLite 的解析时间实际上并没有那么多(您可以将其分摊到许多查询中),除非您手动将值替换到 SQL 查询中。手工替换是一项艰苦的工作,笨拙,缓慢并且可能也不安全。相反,您应该使用绑定参数,以便更直接地执行操作(有关相关 API,请参阅 http://www.sqlite.org/c3ref/bind_blob.html)。

    请注意,如果您切换到不同的数据库,您将遇到同样的问题;您只能通过使用绑定参数从 any SQL 系统中获得高速。 (并且考虑不要过多地担心性能;它遇到存储的位是瓶颈......)

    【讨论】:

      【解决方案2】:

      试试Boost.MultiIndex

      【讨论】:

        【解决方案3】:

        BerkeleyDB(现在归 Oracle 所有)可以将数据完全存储在内存中(尽管它最初是为磁盘存储而设计的)。 TimesTen(现在也归 Oracle 所有)从一开始就是为内存存储而设计的。它们都支持 SQL 和用于从 C、C++ 等直接访问的 API。

        【讨论】:

          猜你喜欢
          • 2019-03-02
          • 2012-06-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-14
          相关资源
          最近更新 更多