本文目录导航:
全方位对比 Postgres 和 MongoDB (2023 版)
对比Postgres和MongoDB,了解哪款数据库更适宜你的需求。
Postgres和MongoDB均在世界数据库市场中占据关键位置。
依据2023年Stack Overflow调研,Postgres已成为最受欢迎的数据库之一。
而MongoDB则在2017年至2020年间延续蝉联最盼望经常使用的数据库头衔。
两者均排在世界数据库排名前五,正逐渐冲击Oracle、MySQL及Microsoft SQL Server的市场份额。
MongoDB最后被视为与Postgres等SQL数据库相统一的NoSQL数据库,但近年来两者正逐渐趋同。
The Guardian曾颁布长文讨论将MongoDB迁徙至Postgres的或许性,虽然时过境迁,但迁徙数据库的痛苦环节并未扭转。
Bytebase与多个数据库包含Google Cloud SQL严密协作,然后者更是由Bytebase开创人所创立。
在对比Postgres和MongoDB时,咱们将从以下几个维度启动评价:容许证、数据模型、JSON支持、性能、牢靠性、伸缩性、易用性、可运维性、生态系统以及两者之间的选用。
Postgres和MongoDB均准许企业级经常使用,Postgres支持JSON列,使其具有与MongoDB相似的性能,可以经常使用JSONB格局处置JSON。
两者在处置JSON方面均体现杰出,MongoDB经常使用自定义BSON格局,而Postgres经常使用JSONB格局。
无关在Postgres中经常使用BSON或JSONB之间的讨论,可参考相关资源。
性能方面,MongoDB在触及多个实体的操作时理论更优,由于其数据去规范化,无需启动复杂的表间衔接。
而Postgres则长于处置复杂查问,得益于其弱小的SQL和先进的查问提升器。
牢靠性方面,MongoDB早期因不支持ACID事务而遭到质疑,但经过收买WiredTiger并经常使用其存储引擎,当初的MongoDB与Postgres一样稳固牢靠。
MongoDB经过正本集提供内置的智能缺点转移性能,而Postgres则须要第三方处置打算,如pg_auto_failover。
伸缩性方面,MongoDB支持横向裁减,而Postgres理论驳回纵向裁减。
MongoDB是一个散布式数据库,支持智能分片,而Postgres的分片处置打算理论会在纵向裁减之后思考经常使用。
易用性方面,MongoDB驳回无预设形式的架构,易于上手,官方驱动程序使其与MongoDB数据库交互变得繁难直观。
Postgres则要求对schema启动解放,虽然在相关型数据库中相对严厉。
Stack Overflow调研显示,虽然Postgres是受访者中最受欢迎的数据库,但在新手用户中,MongoDB更受欢迎。
处置复杂查问时,MongoDB的MQL性能不如Postgres的SQL弱小。
可运维性方面,运转多节点MongoDB比运转多节点Postgres更为简便,由于分片和缺点转移由MongoDB处置。
在单节点部署下,MongoDB的散布式个性或许成为累赘。
生态系统方面,Postgres领有可裁减架构并由社区保养,近年来生态系统蓬勃开展。
MongoDB采取商业化战略,收买了低劣的处置打算,以确保成为其产品线无法或缺的局部。
Postgres是一个通用数据库,驳回相关模型,提供片面的SQL性能和裁减架构,由激情社区驱动。
MongoDB是一个片面的数据库处置打算,遍及文档模型,具有伸缩性和高可用性,提供完整的开发者体验,由营利性商业实体推进。
选用Postgres或MongoDB取决于特定需求。
在某些畛域中,一个数据库显著优于另一个,但在大少数运行程序用例中,两者都体现出弱小才干。
组织内同时经常使用Postgres和MongoDB也很经常出现。
关于Postgres和MongoDB的生命周期治理,Bytebase是一个值得思考的工具。
欲深化了解Bytebase,请访问其官方并收费注册云账号,立刻体验。
Mongodb 数据库的装置 和 可视化工具 `Robo 3T`的经常使用
一、下载地址,参考官方二、装置 Mongodb 步骤Mongodb 是非相关型数据库2.1、解压之后的目录如下2.2、在 mongodb 目录下,减少以下三个文件夹data、etc、logs,完整目录如下其中作用如下2.3、新建性能文件 ,内容如下(留意:dbpath和logpath。
这个是依据你的文件夹门路写的)寄存此目录下三、运转 Mongodb 服务步骤3.1、成功全局经常使用 mongodb 命令,须要性能path环境3.2、门路:控制面板\系统和安保\系统3.3、减少mongodb 服务3.4、启动服务产生失误:服务名有效处置方法: 治理员形式关上 cmd 窗口,输入以下命令成功3.5、阅读器输入网址,如下显示即启动成功3.6、启动 mongodb ,操作数据库, net stop mongodb 分开命令四、可视化工具Robo 3T,参考官方下载地址4.1、下载后,关上运行程序,新建衔接 (File --> connect 或许快捷键 CTRL + N)4.2、点击创立衔接,修正名字 localhost , 经常使用自动地址 localhost 和 端口 即可,点击save保留。
如下图所示:4.3、衔接成功之后,即可减少数据库、数据表等! 写给自己的随笔,有疑问欢迎指出指路掘金哈哈
删除MongoDB反双数据的4种方法
前言
妇孺皆知,咱们经常会用MongoDB存储少量数据。
但是,有时刻咱们遗记在建设汇合的时刻给某些字段设置unique属性,造成数据库中会存在少量重复的数据,这时刻如何删除这些数据就成了一个令人脑壳疼的疑问。
在数据量较小的状况下,可以间接写一个python脚本,经过导出已有数据并拔出到已建设unique索引的汇合中处置疑问。
但是,but,假设数据量较大的话,经常使用脚原本处置要消耗十分少量的期间,这种时刻就须要想想其余方法了
对命令的一些说明
经常使用aggregate聚合查问反双数据
\$group中是查问条件,依据content、endTime、startTime字段来聚合相反的数据;
\$count用来统计重复产生的次数,\$match来过滤没有重复的数据;
\$addToSet将聚合的数据id放入到dups数组中繁难前面经常使用;
查问结果经常使用forEach启动迭代id来删除数据
shift()作用是剔除队列中第一条id,防止删掉一切的数据;
方法三:间接在原汇合建设索引,在让MongoDB在建设索引的环节中删除反双数据({your_unique_key:1},{unique:true,dropDups:true})
上述命令的dropDups参数通知MongoDB,假设遇上了unique抵触的数据,就间接删除抵触的数据
方法四:经过MongoDB的原生支持,先导出数据为bson文件,再将bson文件数据导入到已建设索引的新汇合中mongodump-ddb_name-ccollection_name-o/_collection_({要建设的索引},{unique:true,dropDups:true})mongorestore-ddb_name-cnew_collection_name/tmp/db_name/collection_结语上述提供了四种删除MongoDB反双数据的方法,每种方法各有自己的优缺陷,大家可以依据自己的须要启动选用。