服务器架构之性能扩展-第九章(10)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

第九章Mongodb数据库

9.1mongodb入门

9.1.1 NoSQL入门

NoSQLnot only SQL的缩写,它指的非关系型数据库,是以key-value形式存储,和传统数据不一样,比如不遵循sql标准。随着大数据时代的到来,NoSQL有助于解决传统数据库扩展困难,读写慢,成本高,有限的支撑容量问题.因为它在扩展和性能方面做了提升,对于事务性的要求还不能代替传统数据库。目前新浪微博的redis数据库,视觉中国的mongodb都属于NoSQL数据库范畴。

9.1.2认识mongodb

 

Mongodb是一个介于关系数据库和非关系数据之间的产品,它语法类似javascript语言。数据是键与值的一种组合,格式如{age”:25}形式,数据以集合存储。目前已超过百家网站使用mongodb

9.1.3 mongodb的安装

首先到mongodb.org上下载相应版本。

Tar zxvf mongodb-linux-x86-2.2.2.tgz   //解压

Cd mongodb-linux-x86-2.2.2  //解压完毕后即成为可执行程序

 

9.1.4 启动mongodb

Mkdir /usr/local/mongodb

Mkdir /usr/local/mongodb/data

Rsync  -auvz /root/mongo-linux-ix86-2.2.0/bin/ /usr/local/mongodb/

Touch /usr/local/mongodb/dblogs

 

/usr/local/mongodb/bin/mongod  --dbpath=/usr/local/mongodb –logpath=/usr/local/mongodb/dblogs –fork  //启动mongodb

 

Echo /usr/local/mongodb/bin/mongod  --dbpath=/usr/local/mongodb –logpath=/usr/local/mongodb/dblogs --fork >>/etc/rc.local //开机启动

一般使用pkill mongod  //终止进程,避免使用kill -9杀死进程,因为容易造成mongodb死锁。

/usr/local/mongodb/bin/mongo  进入字符界面

9.1.5mongodb体系结构

Mongodb数据库不同于传统的关系数据结构,它包括文档,集合和数据三级结构组成。物理结构为一个ns文件一些数据库.0和数据库.1成。Mongodb数据类型,包括null、布尔、数字、字符串、数组以及对象六种数据类型组成。

9.1.6 mongodb基本命令

>Show dbs  //显示所有数据库

>db.dropDatabase();  //删除当前数据库

>use mydb   //建立新的数据库

>db.user.insert({name:”user1”,age:25}); //插入数据

>db.user.find();  //查看数据

>db.user.drop({name:”user1”}); //删除记录

>db.user.update({_id:1},{name:”user2”});  //修改记录

9.2  mongodb的高级操作

9.2.1 insert的操作

>db.user.save({name:”user2”});  //保存数据

saveinsert一般有同样的插入效果。 但是当主键id相同时,save便会只做修改不做插入的操作。

 

Db.cl.remove();删除所有记录,如果加上记录字段则删除相应字段。

批量插入数据

 Js方式插入数据

9.2.2 find查询的操作

Db.c1.find();查询语句

Find命令也可以指查找指定字段,字段值为1为真显示,为0为假。

条件查询,gt大于,lt小于,e等于,ne不等于,gte大于等于,lte小于等于,用$定义。

 

Sort用于排序排列,用sort排列,-1位倒叙,1位正序排列

Limit用来控制显示输出个数,skip用来排除前面多少个

in用来进行范围查找

$or或的查询,$nor非,orin区别是:or可以接不同字段,in需要接同一个字段。

插入数组,用elemMatch查找数组,代替post.title

查询控制两种方法

 

 

查询数组记录,必须在第二个字段进行

9.2.3 update更新的操作

Db.collection.updatecriteriaobjNewupsertmulti);

Criteria:用于设置查询条件的对象

Objnew:用于设置更新内容

Upsert:如果记录村子啊就更新它,否则新增一记录

Multi:如果多个符合条件的记录,只会更新第一个符合条件的记录

Upsert第三个参数,意思是如果字段不存在则增加该字段

 

$set可以用于改变源字段值或增加新字段

 

$inc字段每个年龄增加一岁,inc对字段曾进行增减值的更改

$unset删除字段,当age为真时删除字段

$push增加数组字段

$pop删除上条记录,如为-1则从前数,$pushAll一次插入多条记录

addToSet只能插入不同值记录

$addToSet$each一起用一次加入多个值

$pull删除数组指定值,$pullAll删除多个指定值

$rename更改字段名

9.2.4 创建capped collection固定集合

固定集合是固定大小的数据存储方式,它速度处理更快

Db.createCollectionc6{cappedtruesize10000max5}); //数据大小10kB,记录5条,填满了则取代前面的记录

Db.runCommand({convertTocapped:”test”,size:10000});

9.2.5 GridFS大存储类型

GridFS是一种大二进制文件,可以存储一些大文件。包含.files元数据对象和.chunks二进制块信息。

加载GridFS数据类型:

Cd /usr/local/mongodb/bin

Tar zcvf mongofiles.tar.gz  mongosniff

./mongofiles put mongofiles.tar.gz

Mongofile是进行文件上传下载的工具,put上传,get下载

9.3           mongodb性能管理

性能优化,如同大多数数据库一样索引可以很好地完成优化工作。可以通过explain()查看数据查询记录的次数。

9.3.1     mongodb的索引管理

>db.c1.ensureIndex({name:1});  //建立索引

>db.c1.getIndexes();  //查看索引

再执行explain()便可以看到次数变为8->1

Db.c1.dropIndexes();   //删除索引

9.3.2     profile慢查询

profile是一种慢查询日志功能。可以通过两种方式开启:

1、          启动mongodb是可以加上—profile=级别

2、          使用db.setProfilingLevel(级别,时间); 定义级别

0-:不开启;1-:记录慢查询;2-:记录所有密令

最后通过>db.getProfilingLevel();查看级别

9.3.3     mongodb优化方案

首先建立索引可以提高执行效率

其次使用limit();可以减少资源的消耗量

再次capped collection固定空间功能可以提高效率

再次,查询时指定字段而不是所有字段,提高速度

最后使用慢查询功能,优化语句。

9.3.4     mongodb性能监控

mongosniff命令可以监控数据库操作历史

Mongostat命令可以查看mongodb实时结果

 

 

 

 

 

 

本文转自zsaisai 51CTO博客,原文链接:http://blog.51cto.com/3402313/989251

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
24天前
|
存储 弹性计算 安全
阿里云第七代云服务器ECS性能、适用场景与价格参考
阿里云第七代云服务器ECS(Elastic Compute Service)作为阿里云最新一代的高性能计算产品,凭借其基于最新硬件架构和虚拟化技术的全面升级,在计算能力、存储性能、网络传输速度以及灵活性等多个方面实现了显著提升。这一代云服务器旨在为用户提供更为强大、稳定且可定制的云端基础设施服务,广泛适用于从基础的Web托管到复杂的高性能计算等多种应用场景。
|
21天前
|
监控 持续交付 API
深入理解微服务架构:构建高效、可扩展的系统
【10月更文挑战第14天】深入理解微服务架构:构建高效、可扩展的系统
70 0
|
8天前
|
存储 Oracle 关系型数据库
服务器数据恢复—EVA存储硬盘读写性能不稳定掉线的数据恢复案例
服务器存储数据恢复环境: 一台EVA某型号控制器+EVA扩展柜+FC磁盘。 服务器存储故障&检测: 磁盘故障导致该EVA存储中LUN不可用,导致上层应用无法正常使用。
70 47
|
4天前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
3天前
|
存储 弹性计算 网络协议
深度对比阿里云服务器ECS通用型g7、g7a、g8i、g8y、g8ise和g8a性能对比
阿里云ECS通用型g7、g7a、g8i、g8y、g8ise和g8a云服务器性能对比,涵盖CPU、内存、网络、存储等多方面参数。这些实例适用于多种企业级应用场景,如数据库、Web应用、大数据处理等。
24 1
|
7天前
|
人工智能 安全 Linux
|
8天前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c7、c8a、c8y、c8i实例性能、适用场景区别及选择参考
随着阿里云2024年金秋云创季的开始,目前在阿里云的活动中,属于计算型实例规格的云服务器有计算型c7、计算型c8a、计算型c8y和计算型c8i这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,虽然这几个实例规格的云服务器通常处理器与内存的配比为都是1:2,但是他们在处理器、存储、网络、安全等方面等性能并不是一样的,所以他们的适用场景也有着不同。本文为大家介绍计算型c7、c8a、c8y、c8i实例的性能、适用场景的区别以及选择参考。
|
8天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
34 1
|
15天前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c7、计算型c8y、计算型c8i实例性能对比与选择参考
目前阿里云在售的云服务器中,主要包含了第6代、第7代、第8代实例规格的云服务器产品,从类别上来说,又分为计算型(c系列)、通用型(g系列)、内存型(r/re系列)、通用算力型(U实例)、大数据型(d系列)、本地SSD型(i系列)、高主频型(hf系列)等不同种类的云服务器实例规格,而在阿里云目前的活动中,计算型(c系列)主要计算型c7、计算型c8y和计算型c8i实例可选,有的新手用户并不清楚这三个计算型实例之间的差别,本文对这三个计算型实例的实例规格、CPU(核)、内存(G)、计算、存储、内存等方面为大家做个对比,让大家了解一下他们之间的不同,以供参考选择。
|
15天前
|
存储 安全 网络协议
阿里云服务器通用型g7、通用型g8y、通用型g8i实例性能和适用场景对比与选择参考
目前阿里云在售的云服务器中,主要包含了第6代、第7代、第8代实例规格的云服务器产品,在选择云服务器实例规格时,对于需要平衡计算、存储和网络性能的应用场景来说,通用型g7、通用型g8y和通用型g8i实例是许多用户的热门选择。为了帮助大家更好地了解这三款实例的区别,并为选择提供参考,本文将详细对比它们的实例规格、CPU、内存、计算、存储、网络等方面的性能,并附上活动价格对比。让大家了解一下他们之间的不同,以供参考选择。