作為PHP程式設計師應該了解MongoDB的五件事

2022-10-06 13:12:16 字數 3234 閱讀 4662

2023年應該被人們記住,因為sql將在這一年死去。這一年關聯式資料庫行將就木,這一年開發者發現他們再不需要長時間辛苦的構造列或者**來存放資料。

2023年將是文件型資料庫的起始年。儘管這樣的勢頭已經持續多年,現在才是乙個更多,更廣泛的文件型資料庫出現的年代。從基於雲計算的amazon到google,大量開源工具,以及隨之誕生的couchdb和mongodb。

那麼什麼是mongodb?下面有五件事是php開發者應該了解的:

1. mongodb是乙個單獨的伺服器;

2. mongodb是基於文件,而不是基於表;

3. mongodb中較少的schema;

4. 你不需要學習另外的語言;

5. mongodb有良好的php支援。

1. mongodb是乙個單獨的伺服器

就像mysql和postgresql一樣,mongodb將監聽接入的鏈結。它提供的www.cppcns.com工具作用包括詢問,建立,更新和刪除。理論上,你將跟在mysql和postgresql一樣的進行工作:鏈結,處理,然後再關閉鏈結。

2. 向行和表說再見,歡迎文件和收集器

代替儲存資料的表和行,mongodb將資料儲存在文件中。假如我們有一篇帶標題的「文章」,它有多個作者乙個主題和標籤。所有這些看起來就像下面:

複製** **如下:

array(

'title'=>'hello world',

'authors'=>array('john','sally','jim'),

'body'=>'hello world',

'tags'=>array('tag1','tag2','tag3')

);?>

上面的例子中最關鍵的就是那一條記錄——這篇文件——是的,確實儲存起來就像是一篇文件,支援復合形式的值儲存在同一www.cppcns.com區域。不再需要結構化,不需要將資料按照表來區分。因此,表已經不存在了。

3. mongodb包含較少的schema

mongodb沒有schema語言。如果你想新建一種文件型別,你不需要告訴資料庫任何事情。儘管將新的資料放到資料庫中就行了。

在第二點中,我模擬了乙個文件。現在我想為所有區域定義乙個文章型別,所有我需要做的就是將這些資料寫到資料庫中。如果我決定延緩寫入呢?我只需要拉出這部分資料,然後加上日期字段,最後儲存就行。

那麼資料型別怎麼辦?簡單的回答就是mongodb運用一種強制系統,類似j**ascript或者php。如此這樣,資料庫極好的弱化了型別的作用。

這有一些漏洞(超大量的資料需要一些明確的定義),不過多數情況下,你寫你的mongodb**就像在php上程式設計一樣。

4. 你不需要學習另外的語言

回憶一下其他你曾寫過的資料庫抽象層。回憶所有你曾使用過的orm層。那麼你現在可以拋棄他們的,在mongodb上你用不著他們了。

mongodb(包含它的php驅動)不需要詢問語言。在大多數案例中,你只需要簡單的給定乙個指標具體制定你需要的,然後返回你乙個文件指向。

如果你執行一些高階函式(比如map-reduce),你可以通過j**ascript應用加入到mongodb中去,並且在j**ascript內部引擎中執行這些指令碼。

5. php和mongodb是天生一對?

php已經對mongodb具備很好的支援。mongo驅動可以作為乙個pecl載入項加入到php,這意味著安裝起來就像執行pecl一樣安裝mongo。

看到這裡,你可以開始編寫mongo的api了。更廣一些說,它和pdo排在一起。不是簡單的消亡,但是絕對不同於我們之前開發過的資料庫。

api的說明文件將包括乙個引導和許多例子,這樣你就可以在短時間內自舉。下面將是對你十分有用的提示。

mongodb發展非常快。

開發時間非常短,沒有過多的模式來管理,很少(如果有的話)的資料對映。

因為沒有新的查詢語言要學習,**的調整很小。畢竟,你不需要另外的orm,封包也非常輕。

你的**是未來的保證,可以更輕鬆的為你的物件增加更多的領域,甚至是更複雜的領域。因此你的**可以很輕鬆的適應需求的變化。

延伸閱讀

mongo是乙個高效能,開源,無模式的文件型資料庫,它在許多場景下可用於替代傳統的關係型資料庫或鍵/值程式設計客棧儲存方式。mongo使用c++開發,提供了以下功能:

◆面向集合的儲存:適合儲存物件及json形式的資料。

◆動態查詢:mongo支援豐富的查詢表示式。查詢指令使用json形式的標記,可輕易查詢文件中內嵌的物件及陣列。

◆完整的索引支援:包括文件內嵌物件及陣列。mongo的查詢優化器會分析查詢表示式,並生成乙個高效的查詢計畫。

◆查詢監視:mongo包含乙個監視工具用於分析資料庫操作的效能。

◆複製及自動故障轉移:mongo資料庫支援伺服器之間的資料複製,支援主-從模式及伺服器之間的相互複製。複製的主要目標是提供冗餘及自動故障轉移。

◆高效的傳統儲存方式:支援二進位制資料及大型物件(如**或)。

◆自動分片以支援雲級別的伸縮性(處於早期alpha階段):自動分片功能支援水平的資料庫集群,可動態新增額外的機器。

mongodb的主要目標是在鍵/值儲存方式(提供了高效能和高度伸縮性)以及傳統的rdbms系統(豐富的功能)架起一座橋梁,集兩者的優勢於一身。根據官方**的描述,mongo適合用於以下場景:

◆**資料:mongo非常適合實時的插入,更新與查詢,並具備**實時資料儲存所需的複製及高度伸縮性。

◆快取:由於效能很高,mongo也適合作為資訊基礎設施的快取層。在系統重啟之後,由mongo搭建的持久化快取層可以避免下層的資料來源過載。

◆大尺寸,低價值的資料:使用傳統的關係型資料庫儲存一些資料時可能會比較昂貴,在此之前,很多時候程式設計師往往會選擇傳統的檔案進行儲存。

◆高伸縮性的場景:mongo非常適合由數十或數百台伺服器組成的資料庫。mongo的路線圖中已經包含對mapreduce引擎的內建支援。

◆用於物件及json資料的儲存:mongo的bson資料格式非常適合文件化格式的儲存及查詢。

自然,mongodb的使用也會有一些限制,例如它不適合:

◆高度事務性的系統:例如銀dmnldfweei行或會計系統。傳統的關係型資料庫目前還是更適用於需要大量原子性複雜事務的應用程式。

◆傳統的商業智慧型應用:針對特定問題的bi資料庫會對產生高度優化的查詢方式。對於此類應用,資料倉儲可能是更合適的選擇。

◆需要sql的問題。

mongodb支援os x、linux及windows等作業系統,並提供了python,php,ruby,j**a及c++語言的驅動程式,社群中也提供了對erlang及.net等平台的驅動程式。

本文標題: 作為php程式設計師應該了解mongodb的五件事

本文位址:

作為程式設計師應該有怎樣的團隊

現在做什麼事都在講究團隊的效益和團隊的精神。作為開發人員或程式設計師的我們更應該有團隊的協作能力和合作精神,共同完成專案的開發。但我怎麼就沒有感覺到這樣的氛圍了。進入專案組已經有七八個月了,開始的激情到現在的頹廢樣,三言兩語的也說不明白,也道不出乙個是非。1.求助 在編碼的過程中難免會有自己不會的地...

程式設計師應該讀的書

第1名 1306票 code complete 2nd ed by steve mcconnell 中文版 大全 第二版 第2名 1161票 the pragmatic programmer 中文版 程式設計師修煉之道 第3名 689票 structure and interpretation of...

程式設計師應該讀的書

第1名 1306票 code complete 2nd ed by steve mcconnell 中文版 大全 第二版 第2名 1161票 the pragmatic programmer 中文版 程式設計師修煉之道 第3名 689票 structure and interpretation of...