2015-05-17 31 views
1

我已經淘到MongoDB的文檔,谷歌,#1和YouTube ...但我似乎仍不能明白什麼是驅動程序在MongoDB中使用。通俗地講,MongoDB驅動程序是什麼?

我知道,不同的編程語言可以有一個或多個不同的驅動程序 - 但爲什麼我需要嗎?

回答

4

你不嚴格地說需要之一,但另一種方法是建立網絡數據包手動代碼庫中的散落......術語「司機」是有點討厭,因爲大多數人期待一些內核級與硬件對話的程序。

MongoDB的驅動程序更像是一個SDK或輔助庫,可以幫助你與一個數字,你幾乎肯定需要解決,當你想使用MongoDB的任務。

在本質上,MongoDB的驅動程序做這些事:

  1. 它實現了用來與數據庫對話的MongoDB wire protocol,即它知道什麼「消息」數據庫預計,它知道有關的常數,等等,如果你願意的話,它實現了MongoDB API。

  2. 它還配備了助手來管理實際的TCP/IP套接字,創建它們,解決副本集的地址,實現連接池等

  3. 接下來,驅動程序包含助手,可以更容易的工作與來自您的語言的BSON數據類型相關聯,因爲通常不會有1:1的類型映射。例如,一個mongodb數組可以映射到大多數語言的數組或某種列表或集合容器; ObjectIdISODate可能需要包裝,等等。

  4. 最後,驅動程序實現串行,就是一個軟件,它可以創建「從外部」的實例的副本,也就是無需你實現每一個Serialize()方法每個class(或您的語言支持的任何概念)您要存儲。與3)一起,這會寫入數據的BSON表示形式。

序列化本身是不平凡的,因爲一個迅速必須應對的循環引用,因此需要一組未知屬性的遞歸算法。如果這聽起來不夠複雜,那麼對象的反序列化(或水合)就更加痛苦,所以它不是那種超級可寫的代碼類型,除非它是高度可重用的。

我敢肯定,我忘了別的司機做的,但我覺得這些都是他們解決關鍵的痛點。據我所知,它們的確切功能集因語言而異,在某些語言中,個別問題可能會更少或更明顯,但它們通常存在於任何地方。

+1

謝謝你這個真棒的答案,我現在完全理解它! – webDeverJr