外行人的术语是什么是MongoDB驱动程序?

时间:2015-05-17 16:59:06

标签: mongodb driver

我一直在搜索MongoDB文档,谷歌,Stackoverflow和YouTube ...但我似乎仍然无法理解 MongoDB中使用的驱动程序

我知道不同的编程语言可以有一个或多个不同的驱动程序 - 但为什么我需要一个呢?

1 个答案:

答案 0 :(得分:4)

您严格来说需要一个,但另一种方法是构建手动分散在您的代码库中的网络数据包......术语“驱动程序”#39;有点恼火,因为大多数人都期望一些与硬件对话的内核级程序。

MongoDB驱动程序更像是SDK或帮助程序库,它可以帮助您完成当您想要使用MongoDB时几乎肯定需要解决的许多任务。

本质上,MongoDB驱动程序执行以下操作:

  1. 它实现了用于与数据库通信的MongoDB wire protocol,即它知道什么是'消息'数据库需要,它知道相关的常量等。它实现了MongoDB API'如果你愿意的话。

  2. 它还附带帮助程序来管理实际的TCP / IP套接字,创建它们,解析副本集地址,实现连接池等。

  3. 接下来,驱动程序包含帮助程序,使您可以更轻松地使用您的语言的BSON数据类型,因为通常不存在类型的1:1映射。例如,mongodb数组可以在大多数语言中映射到数组或某种列表或集合容器; ObjectIdISODate可能需要包装,依此类推。

  4. 最后,驱动程序实现了一个序列化程序,即一个可以从外部创建实例副本的软件,即,您无需在要存储的每个Serialize()(或您的语言支持的任何概念)上实施class方法。与3)一起,这将写入数据的BSON表示。

  5. 序列化本身并不重要,因为很快就必须处理循环引用,因此需要对一组未知属性的递归算法。如果这听起来不够复杂,那么对象的反序列化(或水化)就会更加痛苦,因此它并不完全是那种写作超级有益的代码类型,除非它是'高度可重复使用。

    我确定我忘记了司机所做的其他事情,但我认为这些是他们解决的关键难点。据我所知,他们的确切功能因语言而异,在某些语言中,个别问题可能更少或更明显,但它们通常存在于各处。