现在我在Mysql中有3列表。
DocId Int
Match_DocId Int
Percentage Match Int
我正在存储文档ID 及其近似重复的文档ID 和百分比,它们表明两个文档的匹配程度。
因此,如果一个文档有100个接近重复的文件,那么我们就有100行用于该特定文档。
目前,该表拥有超过10亿条记录,总计1400万份文档。 我预计总文件将高达3000万。这意味着我的表存储了近乎重复的信息,其行数超过5亿,可能不止于此。 (近似重复数据与总文档集成指数增长)
以下是我遇到的一些问题:
以下是我运行的几个查询:
检查特定文档是否有任何近似重复。 (这个比较快,但仍然很慢)
检查给定的文档集,每个百分比范围内有多少重复项(百分比范围是86-90,91-95,96-100)?
此查询需要大量时间。大部分时间都失败了。我按百分比列分组。
可以使用任何可用的NoSql解决方案进行管理吗?
我对NoSql解决方案的SQL查询支持持怀疑态度,因为我在查询数据时需要支持分组。
答案 0 :(得分:2)
您可以尝试使用当前的MySql解决方案进行分片,即将大型数据库拆分为较小的独特数据库。问题是你应该一次只使用一个分片,这会很快。如果您打算在多个分片中使用查询,那么这将非常缓慢。
Apache Hadoop堆栈值得一看。有几个系统允许您执行稍微不同的查询。一个好的观点是,它们都倾向于在彼此之间很好地互操作。
检查特定文档是否有任何近似重复。 (这是 相对较快,但仍然很慢)
HBase可以为大桌做这个工作。
检查给定的文档集,有多少个重复项 在每个百分比范围? (百分比范围是86-90,91-95,96-100)
这应该非常适合Map-Reduce
还有许多其他解决方案,请参阅this link以获取其他NoSql数据库的列表和简要说明。
答案 1 :(得分:1)