大家好,如果您还对Mongodb插入数据会有重复的请问怎么解决不太了解,没有关系,今天就由本站为大家分享Mongodb插入数据会有重复的请问怎么解决的知识,包括mongodb不建议太多索引的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
本文目录
Mongodb插入数据会有重复的请问怎么解决
可以设置唯一索引解决,比如"name"字段不能重复,可以设置"name"字段为唯一索引。db.things.ensureIndex({“name”:1},{unique:true})
memcache、redis、mongodb优缺点是什么啊,怎么选
谢邀,mongodb不应和redis/memcache比较,因为两者的适用场景是完全不同的。
mongodb是一款介于内存数据库和关系数据库的数据库,是高性能、无模式的文档型数据库。
mongodb数据存储在磁盘,只有在需要时通过mmap映射到内存,在内存中修改,修改完毕由操作系统负责flush到磁盘。
优点:支持复杂的数据结构,能存储海量的数据,能提供类似关系数据库般强大的查询。
redis是一个开源的key-value存储系统,所有数据都是放在内存中的,持久化是使用RDB方式或者aof方式。仅支持key、string、hash、list、set几种结构,优点:读写速度非常快。缺点:受内存限制无法存储过多的数据,也无法提供强大的查询,只使用单核。
memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。memcache仅支持简单的key-value结构,但使用多核。
在爬虫中,经常采用redis+mongodb的方式,Mongodb用于存储爬取的海量的数据,而redis则用于去重和保存待爬取的url。
redisVmemcache:
1:Redis支持服务器端的数据操作,而在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去;
2:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached;
3:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis;
4:Memcached单个key-value大小有限,一个value最大只支持1MB,而Redis最大支持512MB;
5:Memcached只是一个单一key-value内存Cache,而Redis则是一个数据结构内存数据库,支持五种数据类型
6:Memcached只能作为缓存,Redis不仅可以缓存,而且还可以作为数据库用。
除了某些功能外,Redis可以视为Memcached的扩展。
如何做好mongodb的数据备份
文档数据库服务是云服务商重要的数据库服务产品之一,而数据库的备份与恢复功能是数据库容灾重要且必不可少的手段。文档数据库云服务提供了数据库的备份与恢复功能,但我们要了解其背后的机制,文档数据库服务采用的是开源的mongoDB,自然就要先从mongoDB数据库的备份和恢复机制入手。
mongoDB的数据库备份恢复机制主要有两种,
一是使用自带的mongodump&mongorestore工具;
二是基于数据文件的备份和恢复。
现简要阐述如下:
一、mongodump与mongorestore1、mongodump用于把数据库内容以BSON文件备份,可用于备份实时运行的数据库(无需锁住或者关闭数据库);备份命令行:$mongodump-hlocalhost--port27017执行后将数据默认备份到dump目录,Dump目录包含每个集合的所有文档,包含定义用户和索引的系统集合。但索引本身的数据不会包含到dump目录里。这意味着恢复数据库时索引需要重建。如果有很大的数据集,或者许多索引,则会花费很多时间。2、mongorestore用于读取BSON文件并恢复它们;恢复命令行:$mongorestore-hlocalhost--port27017dump注意当恢复数据时,mongorestore不会删除数据,所以如果恢复的是当前的数据库实例,就确保使用-drop标记执行。
二、基于数据文件的备份大部分用户会选择基于数据库文件的备份方式,直接把原始的数据库文件拷贝到别的地方。这个方法比使用mongodump快得多,因为备份和恢复不需要转换数据格式。这种方式唯一的问题就是它需要锁住数据库服务器,但是通常只是需要锁住从节点,因此应该可以在备份过程中保证应用的正常运行。以下是同步和锁库的命令:>useadmin>db.fsyncLock()命令执行后,基于写入锁住数据库,且数据文件同步到磁盘,此时,就可以安全的拷贝数据文件了。解锁命令:>db.fsyncUnlock()也给大家提供了思维导图的展现方式:三、文档数据服务提供的备份恢复功能华为云&天翼云的文档数据服务提供了单实例、副本集和集群三种方式,三种方式均提供了备份恢复功能。先说备份,创建实例完成时会执行一次全备份,根据备份策略,可以周期性的在设定的某个时间段执行自动备份,当然也提供了手动备份的功能。再说恢复,我发现只能恢复到新的实例,不能恢复到当前实例,,就意味着没有办法对当前实例进行灾难恢复,只能讲数据恢复到新的实例,这样就存在数据库切换的动作,感觉比较奇怪,查了产品手册,确实如此。为了更深入了解备份和恢复的机制,打算寻求客服的帮助。
四、文档数据服务提供的备份恢复机制针对不能恢复到当前实例的问题,我在华为云上提了工单,如下:工单提问:请问DDS备份的数据,执行恢复操作,是不是只能恢复到新建实例,不能恢复到当前实例?客服答复:您好,是只能恢复到新建实例,不能回复到当前实例这是文字答复,在我提了工单没多久,华为云客服就给了我电话,在确认了只提供恢复到新实例后,就又问了为何不提供恢复到当前实例,客户的答复说,因为恢复到当前实例可能存在恢复失败的可能,但是在执行恢复操作前,会执行删除数据的操作,这样一旦失败,就会对现有实例造成不可恢复的灾难。想进一步了解华为云的备份恢复机制,又提了工单,如下:工单提问:请问DDS的备份和恢复功能后台的实现机制是什么?是基于快照机制还是数据文件级的备份?另外能否实现基于时间点的恢复机制,谢谢!客服答复:集群和副本集是复制物理文件的方式,单实例为mongodump的方式。参照上面第一部分结算的内容就能理解客服答复的内容了。nosql数据库包含哪几个数据库
常见的nosql数据库有:1、Redis支持多种数据结构,支持持久化操作,支持通过Replication进行数据复制;2、Memcache可以利用多核优势,单实例吞吐量极高;3、MongoDB处理很大的规模的单表。
常见的nosql数据库有:
1.Redis
优点:
1.支持多种数据结构,如string(字符串)、list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)
2.支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。
3.支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。
4.单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。
5.支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。
6.支持简单的事务需求,但业界使用场景很少,并不成熟。
缺点:
1.Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右)。
2.支持简单的事务需求,但业界使用场景很少,并不成熟,既是优点也是缺点。
3.Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存
耗用。
2.Memcache
优点:
1.Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。
2.支持直接配置为sessionhandle。
缺点:
1只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。
2.无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失。
3.无法进行数据同步,不能将MC中的数据迁移到其他MC实例中。
4.Memcached内存分配采用SlabAllocation机制管理内存,value大小分布差异较大时会造成内存利用率降低,并引发低利用率时依然出现踢出等问题。需要用户注重value设计。
3.MongoDB
优点:
1.更高的写负载,MongoDB拥有更高的插入速度。
2.处理很大的规模的单表,当数据表太大的时候可以很容易的分割表。
3.高可用性,设置M-S不仅方便而且很快,MongoDB还可以快速、安全及自动化的实现节点
(数据中心)故障转移。
4.快速的查询,MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置
获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内
存资源相当丰富的话,这将极大地提高数据库的查询速度。
5.非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而
导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响,
整个过程会非常快速。
缺点:
1.不支持事务。
2.MongoDB占用空间过大。
3.MongoDB没有成熟的维护工具。
如果你还想了解更多这方面的信息,记得收藏关注本站。