我一直在搜索MongoDB文档,Google,Stackoverflow和YouTube ...,但是我似乎仍然无法理解MongoDB中使用的驱动程序。
我知道不同的编程语言可以具有一个或多个不同的驱动程序-但是为什么我需要一个?
从严格意义上讲,您并不需要一个,但另一种方法是构建手动分散在代码库中的网络数据包。术语“驱动程序”有点令人讨厌,因为大多数人都希望某些与硬件对话的内核级程序。
MongoDB驱动程序更像是一个SDK或帮助程序库,可以帮助您完成许多使用MongoDB时几乎需要解决的任务。
本质上,MongoDB驱动程序执行以下操作:
它实现了用于与数据库进行通信的MongoDB有线协议,即,它知道数据库期望什么“消息”,知道相关的常量,等等。如果您愿意,它可以实现“ MongoDB API”。
它还带有帮助程序,用于管理实际的TCP / IP套接字,创建它们,解析副本集地址,实现连接池等。
接下来,驱动程序包含帮助程序,这些帮助程序使您可以更轻松地使用语言来处理BSON数据类型,因为通常没有1:1的类型映射。例如,mongodb数组可以用大多数语言映射到数组或某种列表或集合容器。ObjectId
和ISODate
可能需要的包装,等等。
最后,驱动程序实现了一个序列化程序,即可以从外部“创建”实例副本的软件,即无需Serialize()
在每种class
语言(或您的语言支持的任何概念)上实现方法)您要存储。与3)一起,这将写入数据的BSON表示形式。
序列化本身并不是一件容易的事,因为必须快速处理循环引用,因此需要针对一组未知属性的递归算法。如果这听起来还不够复杂,那么对象的反序列化(或水化)会更加痛苦,因此,除非具有高度可重用性,否则编写代码的类型并不是超级值得的。
我确定我忘记了驾驶员要做的其他事情,但是我认为这些是他们解决的关键难题。据我所知,它们的确切功能集因语言而异,并且在某些语言中,个别问题可能会或多或少地突出,但它们普遍存在于所有地方。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句