我需要存储短字符串(50个以上的字符),然后快速查找它们。起初我想使用SQLite。我创建了一个带有单个索引TEXT列的表。使用各种低级技巧,我可以在10秒内用100万个字符串填充数据库。
问题在于,如果PC重新启动,添加额外的10.000行需要30秒,这与10秒内的1M行无关。原因是SQLite必须先从磁盘中读取现有索引的很大一部分,然后才能添加新行。另一个问题是数据库的大小增加了一倍,因为所有字符串都存储了两次(一次在常规表中,一次在索引表中),因为b树机制。
有一个简单的替代方案吗?例如,哪个使用基于散列的查找?我知道各种NoSQL解决方案,但他们专注于分散和分布式存储,而我只需要一个简单的嵌入式“平面文件”数据库?
答案 0 :(得分:0)
将最新值保存到磁盘有多重要?
您可以使用内存中的集合(如Dictionary或List),并通过serializing it将其持久保存到异步调用中的本地文件中。
然后,当您的应用程序启动时,您可以将其反序列化回内存。
这将是一种更加快速响应的方式来实现您所追求的目标,因为您不必一直通过读/写工作来锤击磁盘。