- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MongoDB 最常见的错误说法
YouTube 上有个视频,视频里有几只狗(看起来应当是狗吧?)。你可能已经看到了——其中一只是盲目的新技术跟随者,它盲目信任 MongoDB,没有真正加以了解。另一只狗比较理性,第一只狗的盲从让它感到懊丧。
在加入 MongoDB 第一天,我的一个伴侣给我发了这个视频链接,但此前,我已经看过了。看看日期,这段视频已经流传十多年了。当时真的很好玩,但现在呢?里面几乎全部的东西都过时了。
现实上,MongoDB 公司很多人的 T 恤或笔记本电脑贴纸上都有这个角色,它是 MongoDB 的非官方吉利物。
MongoDB 到底是什么?
在开头讲“MongoDB 不是什么”之前,我们来总结一下 MongoDB 到底是什么。
MongoDB 是一个分布式文档数据库。集群(我们称之为复本集)大多是自我管理的——当集群中的每台机器都晓得了其他服务器的所在,假如其中一个节点宕机或网络消灭问题,它们会自动加以处理。假如其中一台机器被关闭或发生崩溃,其他机器会接管。要实现仲裁,群集中至少需要有 3 个节点。集群中的每台服务器都有数据库全部数据的完整副本。
集群是为了冗余,而不是为了可伸缩性。全部的客户端通常只连接到一台服务器——被选举出来的主服务器,它担任执行查询和更新,并将数据变更传输到备用机器。
你可以直接连接到备用服务器做一些好玩的事情,比如运转分析查询。但一般来说,直接连接到备用节点意味着你可能会遇到一些旧数据,所以不应当连接到备用节点,除非你可以接受旧数据。
讲完“分布式”,接下来讲讲“文档数据库”。
MongoDB 与传统关系型数据库的不同之处在于,它不是将数据保存成扁平的行,然后存储在数据库的表中,而是在文档中存储分层结构的数据——基本上与 JSON 对象类似。文档存储在集合中,集合实际上就是一堆文档。每个文档可以具有与集合中其他文档不同的结构或模式。你还可以(而且应当)依据将要运转的查询类型和存储数据对集合中的文档进行索引。假如你想要确保集合中的全部文档都遵照一种结构,可以将 JSON 模式应用于集合,作为验证器。
{ _id: ObjectId(573a1390f29313caabcd4135), title: Blacksmith Scene, fullplot: A stationary camera looks at a large anvil with a blacksmith behind it and one on either side., cast: [Charles Kayser, John Ott], countries: [USA], directors: [William K.L. Dickson], genres: [Short], imdb: {id: 5, rating: 6.2, votes: 1189}, released: datetime.datetime(1893, 5, 9, 0, 0), runtime: 1, year: 1893}
复制代码
上面的文档是一个例子,显示了 1893 年的一部电影的信息!文档是用PyMongo驱动程序猎取的。
留意,这里有些值是数组,比如“countries”和“cast”,而有些值是对象(我们称它们为子文档)。这就是 MongoDB 文档的层次结构——它们不像关系数据库中的表行那样扁平。
还需要留意的是,它还包含一个原生 Python datetime 类型的“released”字段,以及一个特殊的 ObjectId 类型的值。或许这个不是真正意义上的 JSON 文档?我们待会再来说这个……
上面的文档是一个例子,显示了 1893 年的一部电影的信息!文档是用PyMongo驱动程序猎取的。
留意,这里有些值是数组,比如“countries”和“cast”,而有些值是对象(我们称它们为子文档)。这就是 MongoDB 文档的层次结构——它们不像关系数据库中的表行那样扁平。
还需要留意的是,它还包含一个原生 Python datetime 类型的“released”字段,以及一个特殊的 ObjectId 类型的值。或许这个不是真正意义上的 JSON 文档?我们待会再来说这个……
迷思 1:MongoDB 的版本是 3.2
假如你在 Debian Stretch 上使用apt get mongodb安装 MongoDB,它会安装 3.2 版本。不幸的是,这个版本已经是 5 年前的了!从那时起,已经发布了 5 个次要版本,它们包含大量的新特性,以及平安性、功能和可伸缩性方面的改进。
MongoDB 的当前版本是 4.4(截至 2021 年末)。假如你要安装,应当安装MongoD
文档评论(0)