【问题标题】:Even lighter than SQLite甚至比 SQLite 更轻
【发布时间】:2011-02-24 04:10:01
【问题描述】:

我一直在寻找一个 C++ SQL 库实现,它像 SQLite 一样易于挂接,但更快更小。我的项目是在游戏开发中,在需要通过 ACID 测试和想要一些极端性能之间肯定有一个分界点。我愿意放弃 SQL 字符串样式查询,允许它由代码驱动,但我还没有发现任何东西可以提供类似 SQL 的灵活性,同时也更喜欢 ACID 测试的性能。

我不想重新发明轮子,我自己实现一个 SQL 库的想法非常令人生畏,即使它只是你可以进行的所有调用的一个简单子集。

我需要基本命令(SELECT、MODIFY、DELETE、INSERT、带 JOIN 和 WHERE),而不是数据操作(如排序、最小值、最大值、计数),并且不需要数据库是原子的,甚至不需要强制一致性(我可以在测试和调试时使用真正的 SQL 服务)。

【问题讨论】:

    标签: c++ sql database performance sqlite


    【解决方案1】:

    你确定你已经从 SQLITE 获得了最大的速度吗?开箱即用,SQLITE 非常安全,但速度很慢。如果您知道自己在做什么,并且愿意在磁盘崩溃时冒数据库损坏的风险,那么您可以进行一些优化来提供惊人的速度提升。

    特别是:

    • 关闭同步
    • 对事务进行分组写入
    • 索引表
    • 在内存中使用数据库

    如果您还没有探索过所有这些,那么您的运行速度可能会比实际慢很多倍。

    【讨论】:

    • +1。我会同意的;我个人找不到比 SQLite 更好的东西(基于 SQL)。
    • 不能说事务对 INSERT 和 SQLite 的性能影响有多大。巨大的。
    • 经过试验,是的,我错过了使用 SQLite 可以做什么的技巧。我忽略了使它本身更快的所有选项。非常感谢。
    • 它是开源的,您可以使用定义来自定义您的需求,以去除您不想要的内容,甚至在 sql 列表甚至 Richard Hipp 中评论您有这个特殊要求。将来的版本可能会考虑。
    【解决方案2】:

    我不确定你是否能找到比 SQL 性能更好的东西。特别是如果你想要像 JOIN 这样的操作...... SQLite 速度真的是个问题吗?对于简单的请求,它通常比任何完整的 SGDB 都快。 你没有索引问题吗?

    关于大小,不是二进制文件中的额外事件 1Meg,所以我有点惊讶这是一个问题。

    您可以查看 Berkeley DB,它可能是可用的最快的数据库,但它主要是键->值数据库。

    如果您确实需要更高的速度,请考虑将整个数据库加载到内存中(再次使用 SQLite)。

    【讨论】:

    • +1; Berkeley DB 是我处理此类需求时的首选,但它不是基于 SQL 的。
    • +1。我认为 Berkeley DB 提供了“类似 SQL 的灵活性,同时也更喜欢性能”。我没有看到“基于 SQL”的要求。
    • 1mb 在游戏中是个问题。即使在今天,这也已经减少了大约 5% 的代码预算(在 PS3/360 编码上)。继续讨论其他编码人员认为是可选第三方代码的内容。
    【解决方案3】:

    看看 gigabase 及其双胞胎 fastdb。

    【讨论】:

      【解决方案4】:

      您可能需要考虑Embedded innoDB。它提供了基本的 SQL 功能(显然,参见 MySQL),但不提供实际的 SQL 语法(因为这是 MySQL 的一部分,而不是 innoDB)。 838KB,不算太重。

      【讨论】:

        【解决方案5】:

        如果您只需要这些基本操作,则不需要 SQL。看看 NoSQL 数据存储,例如Tokyo Cabinet

        【讨论】:

          【解决方案6】:

          你可以试试leveldb,它是key/value store

          http://code.google.com/p/leveldb

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多