8 月 8 2010
[PHP] 試玩 MongoDB 的資料關聯
發現 MongoDB 是好一陣子前的事,而我也在某台機器上把它裝起來。
之前玩的時候,發現 MongoDB 不須帳號與密碼就可以連接,而且也無法配置使用者權限,所以把它丟在旁邊。
前幾天,我在網路上看到網友詢問 MongoDB 有沒有辦法作 JOIN,而他得到的答案是否定的。
趁著今天在家閒閒沒事作,書也看完幾個段落,就透過 PHP 來試試這種 ODBMS 如何實作資料關聯。
MongoDB 與常見的資料庫(例如:MySQL)有些微的不同:
資料庫 | 資料表 | |
MongoDB 稱之為 | Database(DB) | Collection |
MySQL 稱之為 | Database(DB) | Table |
先把這個觀念講清楚,底下的範例程式碼才不會看得霧煞煞。
首先,先建立 DB 與 Collection:
// 連接 MongoDB $m = new Mongo(); // 連接資料庫,名稱就是 test $testDB = $m->selectDB( 'test' ); // 建立 Collection,名稱分別是 user 與 sex $testDB->createCollection( 'user' ); $testDB->createCollection( 'sex' );
- MongoDB 沒有 createDB 這種指令。只要選擇資料庫,建立 Collection 之後,系統就會自動產生 DB。
- 指令列模式下,選擇資料庫的指令跟 MySQL 相同(USE DB_NAME)。
再來,存入性別資料:
// 連接 MongoDB $m = new Mongo(); // 連接資料庫,名稱就是 test $testDB = $m->selectDB( 'test' ); // 在 sex 這個 Collection 裡面放入資料,好讓程式分辨男性與女性 $testDB->sex->insert( array('sex_name' => 'Female') ); $testDB->sex->insert( array('sex_name' => 'Male') ); // 把 sex 這個 Collection 的資料倒出來看 $cursor = $testDB->sex->find(); $array = iterator_to_array($cursor); var_dump($array);
- 以往我們儲存在 Table 的 data row 會有個 id 值,方便我們建立關聯。MongoDB 這種資料庫則是在 Collection 裡面放物件,可以不需要 id 值。
開始存入使用者名稱,並紀錄他(她)們的性別:
// 連接 MongoDB $m = new Mongo(); // 連接資料庫,名稱就是 test $testDB = $m->selectDB( 'test' ); // 找出男性資料,並取得關聯值 $male = $testDB->sex->findOne( array('sex_name' => 'Male') ); $refMale = $testDB->sex->createDBRef( $male ); // 找出女性資料,並取得關聯值 $female = $testDB->sex->findOne( array('sex_name' => 'Female') ); $refFemale = $testDB->sex->createDBRef( $female ); // 存入使用者資料 $testDB->user->insert( array('name' => 'BoyName', 'sex' => $refMale) ); $testDB->user->insert( array('name' => 'GirlName', 'sex' => $refFemale) ); // 取出並顯示使用者資料 $cursor = $testDB->user->find(); $array = iterator_to_array($cursor); foreach ( $array as $user ) { // 找出性別的關聯物件 $sexRef = $testDB->user->getDBRef($user['sex']); echo "Name: {$user['name']}\tSex: {$sexRef['sex_name']}\n"; }
以上,簡單的試玩心得。
8 月 13 2010
別再瀏覽「看看誰把你從 MSN 聯繫名單中刪除了」這種網站了
剛剛在 WLM(原稱 MSN)收到這種訊息:
心血來潮上來貼這篇文章。
這種訊息應該不少人都收過,這種網站也應該有很多人看過。
我無法理解的是,當一個陌生的網站要你輸入你在其他網站或軟體的帳號密碼時,你怎麼能安心的輸入?
你能保證這個網站不會紀錄你輸入的密碼,用你的帳號密碼為非作歹?
這樣還不懂的話,我舉個生活化一點的例子:
假如真的有陌生人這麼跟你說,你會給他帳號跟密碼嗎?
醒醒吧!=_=b
如果你已經把帳號密碼送給某個(或是某些)網站的話,就… 快點變更密碼吧。
如果你收到朋友傳送類似的訊息,或是怪怪的網站給你的話,請回訊給對方,提醒對方變更密碼,甚至是檢查電腦是否中毒。
By Joe Horn • Life, Thoughts 0 • Tags: MSN, security, Windows Live Messenger, WLM