Sqlite用于磁盘支持的关联数组?

时间:2009-04-04 00:59:47

标签: c++ sql database sqlite persistence

我想将SQLite用作保存到磁盘的关联数组。

这是个好主意吗?我担心每次执行以下操作时都必须解析SQL:

数据库[“someindex”] ,必须翻译成类似

的内容

从db中选择值,其中index ='someindex',而这又必须转换为SQL内部语言。

4 个答案:

答案 0 :(得分:5)

如果您担心SQL开销并且只需要一个简单的关联数组,那么像GDBM或Berkeley DB这样的dbm可能是个不错的选择吗?

答案 1 :(得分:1)

查看sqlite参数以获得变量的简单方法< - > SQL

答案 2 :(得分:1)

SQLite应该像基于磁盘的关联数组一样快。请记住使用prepared statements,它会解析并编译一次SQL以便多次调用;他们对SQL injection attacks也更安全。如果你这样做,你应该从SQLite中获得相当不错的性能。

对于简单的基于磁盘的关联数组,另一种选择是文件系统;这是一个非常流行的基于磁盘的关联数组。在文件系统上创建一个目录,每个条目使用一个密钥。如果您需要超过几百个,那么每个字符的两个字符前缀创建一个目录,以保持每个目录的文件数量相当小。如果您的密钥不像文件名那样安全,那么使用SHA-1或SHA-256或其他东西对它们进行哈希处理。

答案 3 :(得分:0)

这实际上取决于你的实际问题。您的问题陈述非常通用,并且高度依赖于散列表的大小。

对于小哈希表,一旦你可能真的更喜欢文本文件(方便调试),你只打算读写。

如果您的哈希表小于25美元,那么SQLite可能会很适合您