2015-05-17 20 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