首页 > 编程知识 正文

mongodb导入数据库,hbase是nosql数据库吗

时间:2023-05-03 21:01:43 阅读:44884 作者:3028

NOSQL数据库MongoDB一、NOSQL概述:概述: NOSQL数据存储不需要固定的表结构,通常不存在连接操作。 大数据访问的性能优势是关系数据库无法比拟的。 随着internet web 2.0网站的兴起,NoSQL数据库已成为当今热门的新领域,NoSQL产品发展非常快。 目前,谷歌的BigTable和亚马逊的Dynamo使用的是NoSQL型数据库。 二、Mongodb简介: Mongodb是一个用c语言编写的、基于分布式文件存储的非关系型开源数据库系统。 其优点是可以存储大量数据,具有强大的查询功能,是一种独立的集合文档格式。 起源与发展: 2007年10月,蒙哥数据库由10gen团队发展。 2009年2月首次发售。 应用程序APP平台: MonggoDB支持系统平台,如Unix、linux和windows。 三、Mongodb特点:记忆性:收藏、文档、二进制数据记忆

1、面向集合:集合-定向,数据分组存储在数据集中,称为一个集合(Collection )。 每个集合在数据库中具有唯一的可分辨名称,并且可以包含无限数量的文档。 的概念类似于关系数据库中的表,不同之处在于不需要定义架构。 2、面向文档:收藏的文档以密钥-值对的形式保存。 密钥用于唯一标识文档,它是字符串类型,值可以是各种复杂的文件类型。 这种存储格式称为二进制序列化文档格式(bson )。 3、高效的二进制数据存储:包括视频等大对象。 使用二进制格式的存储,可以存储任何类型的数据对象。 易用性:提供完整的索引、聚合工具,并为主要开发语言提供数据库驱动程序包

1、完整索引:可以对任何属性进行索引,包括内部对象。 加快查询速度2、强大的聚合工具: MongoDB除了提供丰富的查询功能外,还提供count、group等强大的聚合工具,支持MapReduce完成复杂的聚合任务; 3、支持Perl、PHP、Java、C#、JavaScript、Ruby、c和c语言的驱动程序: MongoDB提供所有当前主要开发语言的数据库驱动程序包,开发人员使用哪些主要开发语言可用性—主从复制、数据恢复和分片自动处理

1、支持复制和数据恢复: MongoDB支持主从复制机制,可实现数据备份、故障恢复、读取扩展等功能。 基于复制集的复制机制提供自动故障恢复功能,以确保群集数据不会丢失。 2、瓷砖自动处理: MongoDB支持集群自动分割数据。 将数据分片,可以在集群中存储更多的数据,实现更大的负载,还可以保证存储负载平衡。 三、蒙哥数据库应用场景:

应用方案:存储网站、缓存、高密度和低价值数据、高可扩展性、对象和JSON数据

1、网站数据: mongo非常适合实时插入、更新和查询,具有网站实时数据存储所需的复制和高度可扩展性; 2、缓存:由于性能较高,mongo也适合作为信息基础设施的缓存层。 重新启动系统后,mongo构建的永久缓存可以避免底层数据源过载; 3、高密度、低价值的数据:使用传统关系数据库存储一些数据可能会很贵。 在此之前,许多程序员经常选择和保存传统文件。 4、可伸缩场景: mongo非常适合于由数十台或数百台服务器组成的数据库。 5、用于对象和JSON数据的存储: mongo的BSON数据格式非常适合文档格式的存储和查询; 不适用的场景:

1、高级事务性系统:如银行或会计系统。 传统的关系数据库还适合于需要大量原子事务和复杂事务的APP应用2、传统的业务智能APP应用:数据库针对特定问题生成高度优化的查询方式。 数据仓库可能适合这种APP应用程序。 3、需要传统SQL语句的场景四、Mongodb存储结构:逻辑结构:

文档(document )是mongodb的核心概念,是逻辑存储的最小单位,相当于一行。 集合(collection ) )多个文档聚集在一起,相当于表格,但与表格不同的是没有固定结构。 数据库(database )多个集合组成数据库的总结:

mongodb实例- -数据库组- -数据库组- -文档组- -文档字段组---字段值对mongodb实例包含数据对Document包含一组字段,每个字段都是key/value pair。 物理结构:

1、ns文件:每个表或索引对应一个命名空间,数据量增加,文件数量增加,存储分配和使用中的磁盘空间; 2、数据文件:是存储数据的实体,使用事先分配的空间机制; 注意:空间预分配机制: mongodb根据当前数据文件预分配文件。 用0填充。 数据文件是每次新生成的文件,大小是上一个文件的两倍。 这样既不会浪费数据文件,也保证了可用性。 3、日志文件:系统日志文件、日志文件(用于保障mongodb崩溃恢复)、oplog复制操作日志文件(相当于mysql的二进制日志文件)、滚动查询日志)查询操作为时间

urnallog-->内存-->当内存数据=2G或60s数据从journallog中写入硬盘上文件中实现持久存储。 注:在mongodb 3.0版本后,默认的存储引擎已经改变,成为WT(wiredTiger)存储引擎,无以前的.ns文件; wiredTiger引擎:3.0新增引擎,官方宣称在read、insert和复杂的update下具有更高的性能。可以支撑更高的读写负载和并发量。因为对于production环境,更多的CPU可以有效提升wireTiger的性能,因为它是的IO是多线程的。wiredTiger不像MMAPV1引擎那样尽可能的耗尽内存,它可以通过在配置文件中指定“cacheSizeGB”参数设定引擎使用的内存量; journal就是一个预写事务日志,来确保数据的持久性,wiredTiger每隔60秒(默认)或者待写入的数据达到2G时,mongodb将对journal文件提交一个checkpoint(检测点,将内存中的数据变更flush到磁盘中的数据文件中,并做一个标记点,表示此前的数据表示已经持久存储在了数据文件中,此后的数据变更存在于内存和journal日志)。对于write操作,首先被持久写入journal,然后在内存中保存变更数据,条件满足后提交一个新的检测点,即检测点之前的数据只是在journal中持久存储,但并没有在mongodb的数据文件中持久化,延迟持久化可以提升磁盘效率; 为了确保数据的安全性,mongodb将所有的变更操作写入journal并间歇性的持久到磁盘上,对于实际数据文件将延迟写入,和wiredTiger一样journal也是用于数据恢复;

https://blog.csdn.net/xiaoql520/article/details/76973887

内存映射存储引擎MMAP:

1、mongodb会把数据文件映射到内存中,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,总之可以大幅度提升性能;2、MongoDB并不干涉内存管理工作,而是把这些工作留给操作系统的虚拟内存管理器去处理,这样做的好处是简化了MongoDB的工作,但坏处是你没有方法很方便的控制MongoDB占多大内存,幸运的是虚拟内存管理器的存在让我们多数时候并不需要关心这个问题;3、MongoDB的内存使用机制(持久化)让它在缓存重建方面更有优势,简而言之:如果重启进程,那么缓存依然有效; 五、Mongodb数据类型:

总结:

1、mongodb基于分布式文件存储的非关系开源数据库系统,优势是海量数据存放、查询功能强大、独立面向集合文档管理数据、支持跨unix、Linux、Windows系统平台;是最像关系型数据的非关系型数据库,是替代关系型数据库比较好的选择。2、mongodb存储数据:数据库(DB)-->集合(collection)-->文档(document) 1)集合(collection):数据的分组,相当于关系型数据的表,可以包含无限数目的文档; 2)文档(document):是具体的数据记录,以键/值对形式存储,键为字符串、值可以是多种文件类型、值最终以二进制方式存储; 3、mongodb高可操作性:支持完全索引(提高查询速率)、提供丰富聚合工具(如mapreduce、count)、为主流开发语言提供数据库驱动包。4、mongodb可用性:支持主从复制和数据恢复(基于副本集确保数据不会丢失)、自动处理分片(数据库扩容、保证存储负载均衡)5、mongodb适用场景和非适用场景: 1)适用场景:网站、缓存、存储高密度低价值数据、高伸缩场景、对象即json数据存储场景; 2)不适用场景:高度事务性的系统(用关系数据库)、传统的商务智能(BI)、需要使用SQL语句场景。6、mongodb存储结构:1)逻辑方面:一个mongodb实例-->一组数据库-->一个数据库一组集合-->一个集合一组文档-->一个文档一组字段-->一个字段一个建值对;2)物理结构:.ns文件(名称空间,存放文档或索引的元数据)、数据文件(存放数据的实体、预分配空间)、日志文件(系统日志、journal日志、oplog复制操作日志、慢查询日志)3)写入数据的流程:预写入journal日志-->内存-->当内存数据=2G或60s数据从journal日志中写入硬盘实现持久存储。4)mongodb支持存储引擎(存储方法):MMAP(内存映射引擎:尽量使用内存)和wiretiger(可设置最大内存:性能更好)。7、mongodb常见的数据类型:字符串、时间戳、日期、二进制、对象等。8、mongodb基本操作: 增:创建数据”use 数据名”,创建或添加集合“db.集合名.insert({“key”:”value”,...})”, 改:修改文档“db.集合名.update({条件key:value},{$set:{修改key:value}})”, 删:删除文档“db.集合名.remove({条件key:value})”、删除集合“db.集合名.drop()”、删除数据库“db.dropDatabase()”; 查:查看数据:show dbs、查看集合:show collections、查看文档:db.集合名.find().9、mongodb的导入、导出、备份、恢复、复制、克隆: 1)导入: 导入csv数据文件:mongoimport --host ip地址 -p 27017 -d 数据库 -c 集合名 -f 字段1,字段2 --file "数据文件.csv" --type csv (csv文件是从mysql等数据导出文件) 导入json数据文件:mongoimport --host ip地址 -p 27017 -d 数据库 -c 集合名 --file "数据文件.json" (json文件是mongoexport导出文件) 2)导出:mongoexport -host ip地址 -p 27017 -d 数据库 -c 集合 -q {条件} -o 数据目录/文件名.json 3)备份:mongodump --host ip地址 -p 27017 -d 数据库 -o 备份目录 4)恢复:mongorestore --host ip地址 -p 27017 -d 数据库 --dir=备份目录 5)本地复制:登录-->db.copyDatabase("库名1","库名2","ip:端口") 6)远程克隆:登录-->db.runCommand({cloneCollection:"库名.集合",from:"远程主机ip:27017"})10、数据库用户权限管理: 1)启动时使用“--auth”选项启用认证,进入数据库后使用db.auth('用户名','密码')认证 2)创建用户:db.createUser({user:"用户名",pwd:"密码",role:[{role:"read",db:"数据库1"}, {role:"readWrite",db:"数据库2"},...]}) 3)查看当前用户:db.getUsers() 查看所有用户:use admin-->db.system.users.find() 4)增加权限:db.grantRolesTouser("用户名",[{role:"readWrite",db:"数据库"}]) 5)撤销权限:db.revokeRolesFromUser("用户名",[{role:"readWrite",db:"数据库"}])

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。