甚至比SQLite更轻

时间:2010-05-26 12:38:14

标签: c++ sql database performance sqlite

我一直在寻找一种C ++ SQL库实现,它很容易像SQLite一样挂钩,但速度越来越快。我的项目是在游戏开发中,在需要通过ACID测试和想要一些极端性能之间肯定有一个截止点。我愿意放弃SQL字符串样式查询,允许它被代码驱动,但我没有发现任何提供类似SQL的灵活性,同时也更喜欢性能而不是ACID测试。

我不想重新发明轮子,而且我自己实现一个SQL库的想法非常艰巨,即使它只是你可以进行的所有调用的一个简单子集。 / p>

我需要基本命令(SELECT,MODIFY,DELETE,INSERT,JOIN和WHERE),而不是数据操作(如sort,min,max,count),不需要数据库是原子的,甚至不需要强制执行一致性(我在测试和调试时可以使用真正的SQL服务)。

6 个答案:

答案 0 :(得分:14)

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

特别是:

  • 关闭同步
  • 群组写入交易
  • 索引表
  • 在内存中使用数据库

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

答案 1 :(得分:10)

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

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

你可以看看Berkeley DB,它可能是最快的数据库,但它主要只是key-> value数据库。

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

答案 2 :(得分:1)

查看gigabase及其双胞胎fastdb。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

你可以尝试leveldb,它是键/值存储

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