PHP改用MongoDB過程 囧....



因為某個鳥原因

讓我弄了整晚都沒弄出來

PHP一直讀取不到php_mongo.dll這個extension........

暈倒0rz

囧囧囧...

因為早在之前有試成功過

所以很惱怒 ~~~~~~~~fqfqfqfqfqfqfqfqqf

一直google都說只要把dll檔丟進ext在php.ini多一行extension=php_mongo.dll就好

可是試好幾百次都沒有....

後來不小心google到一篇文章........

就是wamp改成安裝32bit版本就可以正常working了

結果是真的..........



原來是64bit惹的禍@#%$^#&*%$#%@$


試成功之後就爽~~~~但也發現........

死了0rz

我的mysql炸掉了...

就是一種很詭異的問題

明明看得到資料表........但是卻點不進去的鳥問題........

雖然之前我也遇到過這問題

不過沒去research

這次因為我的data都炸掉 不得不去google下what happened!?!?!!!?!

有篇文章老外說..........

這是因為InnoDB的關係

就是mysql的data目錄底下有個檔案叫ibdata1

想當年可以直接複製data目錄就複製好db 那是因為DB的類型是MyISAM

看那老外說的好像比較沒安全性.....因為只要複製過去所有的資料都被看光光

而innoDB就是有這特性 除非你還拿得到ibdata1這檔案 類似一個key的東西

總之我的狀況就像他說的........我的 data are all fucked......


應該是因為後來我發現mysql的資料要備份出來 重新安裝之前那版本的wamp

於是ibdata1就被覆蓋了.......吧........囧rz


好在前陣子我有備份我的DB

於是就這樣備份回去了 好家在.........

更好家在的是當天我有處理一些data.........用程式轉換

不知為啥想說備份到NAS好了

好在突然有這想法..........不然DB炸掉 要我重新轉換這些data我就要哭了0rzzzzzzzzzzzzz


而且更好在前陣子

我有備份之前接人力資源網的DB

那資料噴了我一定會囧到爆...........

因為他兩個DB加起來有超過12萬的個資XD


我每次接案子如果是接手~~改裝or升級網站的案子

我都會很自然的備份她的DB到我電腦裡

而作人力資源網是收穫最大的............他有超多候選人的資料 還有公司的資料

爽XD.....


後來我就想當作練習一邊學習的心態

幫我自己寫的鼻涕選股機改成MongoDB版本

過程坡折不斷.........

除了要改寫程式

還要從mysql轉換data到mongoDB

這個轉換過程因為不熟 前前後後我寫了7隻程式去轉換0rz............

好險我不是寫一個轉好了就在改寫作下一步

我是一個轉換動作寫成一個function

這樣是有好處的 因為後來我不小心有個轉換動作沒寫好......

於是重新再來一遍

這時候只要1,2,3,4,5號functon呼叫過一遍就變回剛剛的樣子了


過程除了學mongodb的語法.......還有概念

張搞成了我最好的導師0rz

總之他是無法join的 所以要為query去設計DB

反正跟mysql那種關聯是資料庫的思考邏輯不一樣就是.....

但是他非常非常快

一開始轉換資料到mongoDB 8萬筆資料 竟然5秒內就寫完了......還包含mysql的select時間..


後來就是一邊改寫程式 一邊發現資料要做轉換0rz

最後終於寫好了 跑出結果了............而且跟一開始寫的myql版本對應結果一致

但是慢到靠杯...........超級無敵慢...........比mysql的版本還慢好幾倍..........

於是上網google mongodb count performance的文章

找到有人說要做index

然後我嘗試去幫某欄位作index

再去run程式整個快超多#$%^#&$*&$^#%@$^&*&(


總之這兩天學到很多毛貓貓貓毛

主要是一點mongodb的概念

還有在PHP底下撈取 mongodb 的寫法


跟mongodb底下下查詢的語法

雖然當初已經有稍微看過他的文件

但學一個東西真的還是要去實作才學得多0rz||||||

沒有留言: