1

这是我的问题。

我想摄取大量数据....现在有数百万行,后来有数十亿行。

我一直在使用 MySQL,现在我正在使用 PostgreSQL。

插入很容易,但在我插入之前,我想检查该特定记录是否存在,如果存在我不想插入。随着数据库的增长,这个操作(显然)需要越来越长的时间。

如果我的数据在 Hashmap 中,查找将是 o(1),所以我想我会创建一个 Hash 索引来帮助查找。但后来我意识到,如果我每次都必须再次计算哈希,我会大大减慢这个过程(如果我不计算索引,我就没有 o(1) 查找)。

所以我很困惑,有没有简单的解决方案?还是复杂的?我很高兴尝试其他数据存储,但是我需要能够执行相当复杂的查询,例如类似于带有 WHERE 子句的 SELECT 语句的查询,所以我不确定 no-sql 解决方案是否适用。

我是一个新手,所以如果有一个简单的解决方案,我不会感到惊讶。

4

2 回答 2

2

Nosql 存储非常适合处理大量插入和更新

MongoDB 具有非常好的基于文档是否存在的更新/插入(称为 upsert)功能。

从 mongo doc 查看此页面

http://www.mongodb.org/display/DOCS/Updating#Updating-UpsertswithModifiers

您也可以在 mongo 连接中检查安全模式。您可以将其设置为 false 以获得更高的插入效率。

http://www.mongodb.org/display/DOCS/Connections

于 2011-07-10T15:31:48.933 回答
1

您可以使用CouchDB。它没有 SQL,因此您本身无法进行查询,但您可以创建设计文档,允许您在数据上运行 map/reduce 函数。

于 2011-07-09T05:20:04.867 回答