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