mongodb介绍

mongodb介绍mongodb介绍

大家好,又见面了,我是你们的朋友全栈君。

一,memcached ,redis 属于key/value数据库

二,mongodb跟上面的区别是,它属于文档数据库,存储的是文档(Bson(基于json修改json串时,这个json串后面的数据位置不发生变化,介绍空间)->json的二进制)

内部引擎用JS解释器,把文档存储成bson结构,在查询是,转换为JS对象,并可以通过熟悉的js语法来操作。

三,与传统数据相比

传统数据库:结构化数据,定好了表结构后,每一行的内容,必是符合表结构的,就是说,列的个数类型都一样。

mongo文档数据库,表下的每篇文档都可以有自己独特的结构(电影评论,一张表管理所有评论与回复,在传统型数据库中至少要4张表,关联度很复杂)

四:mongo命令行可以写for循环等脚本

五,索引 

1,索引提高查询速度,降低写入速度,因此要权衡常用的查询字段,不必在太多列上建索引。

2,在mongo中索引可以按字段升序降序(1生效,-1降序)来创建索引,便于排序。

3,默认使用Btree来组织索引文件(穿件索引是会产生索引文件的,也是占用空间内存的),2.4版本后也允许建立hash索引。

4,db.find(query).explain(),如果输出显示|“cursor”:BasicCursor 说明没有索引发挥作用。

5,索引分类:普通索引(单列索引,多列索引),唯一索引(被加索引的key值唯一,否则报错 ,需设置unique:true),稀疏索引(如果被索引的字段的值是空的,将不建立索引与之相对,普通索引不管被索引字段的值是不是空的都会把该文档的field列的值认为null,并建索引)

6,对hash查询和Btree查询的介绍

二叉树(Btree):即二分法查询,根据大小范围缩小查询位置,具有排序特性,mysql具有此种查询方式。

哈希(hash):散列存储(即数据在硬盘上东一个西一条),它是根据hash算法,为每条数据指定存储位置,查找的时候也是根据hash算法瞬间找到数据位置具有很快的查询速度。但是由于散列存储,所以数据不具有排序聚合特性。不适合查询有序的集合数据。

6,replication set复制集

多台服务器维护相同的数据副本,提高服务器的可用性。

基本的一个primary(主节点),两个secondary(副本节点),三个节点两两相互通信,发送心跳信息(至于为什么两个副本也要通信是因为,如果主节点挂了,两副本要竞争)

7,shard分片,把数据分块存储(比如:1-1千万条数据放在shard1,1千万-2千万条数据放在shard2等)

数据存储到不同的分片需要通过mongos路由器,分发到指定的分片,怎么指定呢,在路由器与分片见有个configsvr,它不存储正真的数据,而是meta元信息,即某条数据在那个分片上的信息。

mongos查询某条数据时,要先找configsvr,询问得到该数据在那个shard上(当然要先设定好分片规则)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105984.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • MySQL字符串截取函数_oracle截取字符串前几位

    MySQL字符串截取函数_oracle截取字符串前几位一、left()left():顾名思义就是从左边截取字符串。用法:left(str,length),即:left(被截取字符串,截取长度)SELECTleft(‘JingLiPoSuo’,2);结果为:Ji二、right()right():顾名思义就是从右边截取字符串。用法:right(str,length),即:right(被截取字符串,截取长度)SELECTright(‘JingLiPoSuo’,2);结果为:uo三、截取特定长度的字符串截取特定长度的字符串有两

    2022年9月27日
  • 分享一个二次元动漫视频网站源码「建议收藏」

    分享一个二次元动漫视频网站源码「建议收藏」源码下载地址:下载地址非常大气漂亮的Miko动漫视频网站整站源码,二次元动漫网源码。Dz后台管理方便,整站数据都设置好了,传上即可制作一个完整的动漫网。1.源码上传到空间2.把数据库文件.sql上传到数据库里3.后台域名/admin.php4.账号liujianghao密码miko2016…

    2022年8月23日
  • python之map函数

    python之map函数map()函数会根据提供的函数对指定序列做映射。语法如下:map(func,*iterables)–>mapobject||Makeaniteratorthatcomp

    2022年7月6日
  • jar包下载网站「建议收藏」

    jar包下载网站「建议收藏」1.这里可以查询POM信息和JAR包下载https://www.kumapai.com/open/query/?querytype=title&querykey=cglib1.https

    2022年7月4日
  • 工控机上位机软件的开发历程(一)

    工控机上位机软件的开发历程(一)本人就职于一家环境监测公司,上位机软件的主要功能是采集各仪器的数据,然后存储起来,并传送到环保局平台。刚到公司的时候,公司使用的是组态软件(用以显示流程图),然后再开发了报表软件、数据上传软件。因为组态软件使用的是标准Modbus协议,而很多仪器使用的协议根本就是自定义的,所以还要加一个协议转换软件,把各种各样的协议转换成Modbus协议,让组态软件去读。除此之外,我们还希望软件能够开机启动,…

    2022年5月6日
  • 异步fifo的10个测试关注点_异步FIFO

    异步fifo的10个测试关注点_异步FIFO1、异步FIFO简介及其原理FIFO是英文FirstInFirstOut的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据。异步FIFO是指读写时钟不一致,读写时钟是互相独立的。1.1用途用途1:  跨时钟域:异步FIFO读写分别采用相互异步的不同时钟。在现代集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟,多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步FIFO是这个问题的一

    2022年8月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号