最近一直在思考底層資料模型對整個產品的影響,底層實現直接影響到上層的效能及開發效率,又要滿足快速迭代及快速產品擴充的需求,就考慮到了NOSQL資料庫了,通過對比就選擇了MongoDB,打算通過他好好的瞭解下NOSQL,記得幾個月前看了javaeye老大寫的哪篇NOSQL的文章還沒有深入去思考,現在是工作上需要用到了,就想深入瞭解下,對於資料庫,MySQL一直是我的唯一選擇,但是現在MySQL的各種問題都暴露出來的了,在很多情境下其實有更好的做法去替代,不管從節約機器上,還是從效能上來說都是有益的,所以就花時間深入瞭解下MongoDB了。
先貼點資料吧:
MongoDB的官方網站 http://www.mongodb.org
不周山部落格上的MongoDB的總結 http://www.wentrue.net/blog/?p=772
超群的MongoDB in Action http://www.fuchaoqun.com/2010/01/mongodb-in-action/
PPT地址:http://www.fuchaoqun.com/2010/01/mongodb-in-action/
MongoDB的安裝地址:http://www.tbdata.org/archives/410
PHP安裝MongoDB驅動 http://cn.php.net/manual/en/mongo.installation.php#mongo.installation.nix
官方文檔 http://www.mongodb.org/pages/viewpage.action?pageId=5079170
http://www.mongodb.org/display/DOCS/Schema+Design
INFOQ上的介紹 http://www.infoq.com/cn/news/2010/04/mongodb
PHP上的支援文檔 http://php.net/manual/en/book.mongo.php
接下來秀下自己的安裝的結果,算是對今晚工作的一個記錄了,先讓自己的環境跑起來了,真的去用了,去體驗了才感覺到它的強大
安裝成功,我是在Ubuntu下直接使用了Synaptic Packages Manager 來安裝的 ^_^ 沒有任何的計算含量了,無奈機器不支援虛擬機器的64位安裝
接下來要做的是PHP下使用MongoDB的具體步驟了.....
1.安裝PHP mongo 支援 (這裡如果報phpize錯誤,請安裝php5-dev , sudo apt-get install php5-dev
2.安裝完了mongo後如果無法啟動請連結 ln - s /usr/lib/xulrunner-1.9.2.12/libmozjs.so /usr/lib/libmozjs.so 連結後就可以啟動了
3.啟動成功之後的
4. 安裝PHP支援後的
5.安裝成功後 new Mongo() 取得執行個體後列印出來的結果
6.分享下超群同學寫的mongodb類。。。。。。
貼出超群寫的MongoDB下的PHP的操作類Cola_COM_Mongo一看就知道如何操作了,具體動作陳述式見超群的PPT了
<?phpClass Cola_Com_Mongo{ protected $_mongo, $_db; /** * Constructor * * @param array $config */ public function __construct($config = array()) { $config = (array)$config + array('server' => 'mongodb://localhost:27017', 'options' => array('connect' => true)); extract($config); $this->_mongo = new Mongo($server, $options); if (isset($database)) $this->db($database); if (isset($user) && isset($password)) $this->auth($user, $password); } /** * Authenticate * * @param string $user * @param string $password */ public function auth($user, $password) { $result = $this->_db->authenticate($user, $password); if (1 == $result['ok']) { return true; } throw new Cola_Exception('Mongo Auth Failed: bad user or password.'); } /** * Select Database * * @param string $db * @return MongoDB */ public function db($database = null) { if ($database) { $this->_db = $this->_mongo->selectDB($database); } return $this->_db; } /** * Select Collection * * @param string $collection * @return MogoCollection */ public function collection($collection) { return $this->_db->selectCollection($collection); } /** * MongoId * * @param string $id * @return MongoId */ public static function id($id = null) { return new MongoId($id); } /** * MongoTimestamp * * @param int $sec * @param int $inc * @return MongoTimestamp */ public static function Timestamp($sec = null, $inc = 0) { if (empty($sec)) $sec = time(); return new MongoTimestamp($sec, $inc); } /** * GridFS * * @return MongoGridFS */ public function gridFS($prefix = 'fs') { return $this->_db->getGridFS($prefix); }}
MongoDB下的資料庫設計工具
對比了幾個管理工具之後選擇了開源的rockmongo很不錯的管理工具類似PHPMYADMIN
: http://code.google.com/p/rock-php/wiki/rock_mongo_zh