[問題] 關於用python存資料庫的問題

看板Python作者 (hazton)時間14年前 (2009/11/06 08:06), 編輯推噓4(4010)
留言14則, 4人參與, 最新討論串1/1
我用的資料庫是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

11/06 10:20, , 1F
看python 記憶體用量會不會爆掉
11/06 10:20, 1F

11/06 10:20, , 2F
不會的話直接將資料全部處理完在一次寫入mysql
11/06 10:20, 2F

11/06 10:21, , 3F
會的話就用檔案分別暫存
11/06 10:21, 3F

11/06 10:21, , 4F
正常像常用英文單字有限,要直接在python裡面處理完不難
11/06 10:21, 4F

11/06 11:13, , 5F
Insert 的table用index 會越來越慢因為要一值重整
11/06 11:13, 5F

11/06 12:04, , 6F
要不要考率用map reduce的分散式寫法?
11/06 12:04, 6F

11/06 12:05, , 7F
基本上google用來切單詞找頻率好像就是用這種方法
11/06 12:05, 7F

11/06 12:12, , 8F
http://discoproject.org/ Python的map reduce
11/06 12:12, 8F

11/06 12:13, , 9F
現成的map reduce分散式運算
11/06 12:13, 9F

11/06 12:32, , 10F
又或著 如果你不喜歡map reduce
11/06 12:32, 10F

11/06 12:33, , 11F
可以考慮把文章分成好幾群 降到可以開dict的數量級
11/06 12:33, 11F

11/06 12:34, , 12F
然後就照你說的 每台電腦parse文章都用dict檢查
11/06 12:34, 12F

11/06 12:34, , 13F
等那一整部份的文章做完 再一口氣存回mysql
11/06 12:34, 13F

11/10 11:36, , 14F
如果不堅持自己做,可用sphinx fulltext search engine
11/10 11:36, 14F
文章代碼(AID): #1AysYVIH (Python)