这就是我的问题。
我想要摄取大量的数据...现在是数百万行,以后是数十亿行。
我一直在使用MySQL,现在我还在尝试使用PostgreSQL。
插入很简单,但在插入之前,我想检查特定的记录是否存在,如果存在,我就不想插入。随着数据库的增长,这个操作(显然)需要的时间越来越长。
如果我的数据在Hashmap中,那么查找将是o(1),所以我想我应该创建一个Hash索引来帮助查找。但是后来我意识到,如果我每次都必须再次计算Hash,我会大大减慢这个过程(如果我不计算索引,我就没有o(1)查找)。
所以我进退两难,有没有一个简单的解决方案?还是复杂的问题?我很乐意尝试其他数据存储,但是我需要能够执行相当复杂的查询,例如类似于带有WHERE子句的SELECT语句,所以我不确定非sql解决方案是否适用。
我是一个新手,所以如果有一个微不足道的解决方案,我不会感到惊讶。
发布于 2011-07-09 13:20:05
您可以使用CouchDB。
发布于 2011-07-10 23:31:49
Nosql存储非常适合处理巨大的插入和更新
对于基于文档是否存在的更新/插入(称为upsert),MongoDB有非常好的特性。
从mongo doc查看此页面
http://www.mongodb.org/display/DOCS/Updating#Updating-UpsertswithModifiers
你也可以在mongo连接中检查安全模式。您可以将其设置为false,以提高插入的效率。
http://www.mongodb.org/display/DOCS/Connections
https://stackoverflow.com/questions/6632885
复制相似问题