【发布时间】:2011-06-01 09:48:13
【问题描述】:
mysql 数据库中的表中有两列。第一列包含指纹,而第二列包含具有该指纹的文档列表。它很像搜索引擎构建的倒排索引。表中记录的一个实例如下所示;
34 "doc1, doc2, doc45"
指纹数量非常庞大(可达数万亿)。数据库中基本上有以下操作:插入/更新记录和根据指纹匹配检索记录。表定义python sn -p 为:
self.cursor.execute("CREATE TABLE IF NOT EXISTS `fingerprint` (fp BIGINT, documents TEXT)")
插入/更新操作的sn-p是:
if self.cursor.execute("UPDATE `fingerprint` SET documents=CONCAT(documents,%s) WHERE fp=%s",(","+newDocId, thisFP))== 0L:
self.cursor.execute("INSERT INTO `fingerprint` VALUES (%s, %s)", (thisFP,newDocId))
到目前为止,我观察到的唯一瓶颈是 mysql 中的查询时间。我的整个应用程序都是基于网络的。所以时间是一个关键因素。我也想过使用 cassandra,但对它的了解较少。请建议我一个更好的方法来解决这个问题。
【问题讨论】:
标签: python mysql nosql distributed-computing large-data-volumes