作者hazton (hazton)
看板Python
标题[问题] 关於用python存资料库的问题
时间Fri Nov 6 08:06:53 2009
我用的资料库是mysql
我现在想要把大量的文章(几十万篇吧)切token
然後针对每个token存进去资料库里,但随着资料量越大,速度越缓慢
假设我有一个存token的table,里面有token,token_frequency
每次我parser出一个token的话,我都要跟table里面token做比对,看有无这笔资料
没有的话就insert,但做到越後面,我速度就会越慢(table的token有在msql里选了建index)
然後我有想了1个解决方法:
就是不用mysql里的"把此键设为index"
改为程式开始跑时,我就用dict建hash table,当parser出一个token就比对到hash table
没有的话就insert,不用再去资料库找
请问以上这方法会比在mysql里直接把key建成index快吗?
这种问题还有其他种比较有效率的解法吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.141.42
1F:→ Lucemia:看python 记忆体用量会不会爆掉 11/06 10:20
2F:→ Lucemia:不会的话直接将资料全部处理完在一次写入mysql 11/06 10:20
3F:→ Lucemia:会的话就用档案分别暂存 11/06 10:21
4F:→ Lucemia:正常像常用英文单字有限,要直接在python里面处理完不难 11/06 10:21
5F:推 darkroad:Insert 的table用index 会越来越慢因为要一值重整 11/06 11:13
6F:推 StubbornLin:要不要考率用map reduce的分散式写法? 11/06 12:04
7F:→ StubbornLin:基本上google用来切单词找频率好像就是用这种方法 11/06 12:05
9F:→ StubbornLin:现成的map reduce分散式运算 11/06 12:13
10F:推 StubbornLin:又或着 如果你不喜欢map reduce 11/06 12:32
11F:→ StubbornLin:可以考虑把文章分成好几群 降到可以开dict的数量级 11/06 12:33
12F:→ StubbornLin:然後就照你说的 每台电脑parse文章都用dict检查 11/06 12:34
13F:→ StubbornLin:等那一整部份的文章做完 再一口气存回mysql 11/06 12:34
14F:→ iapptt:如果不坚持自己做,可用sphinx fulltext search engine 11/10 11:36