初识MongoDB

MongoDB的体系结构

1. NoSql的概念

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是 SQL ”,互联⽹的早期我们的数据 ⼤多以关系型数据库来存储的。其特点是规范的数据结构(预定义模式)、强⼀⾄性、表与表 之间通过外键进⾏关联,这些特征使我们对数据的管理更加清晰和严谨,但随着互联⽹的发展 数据成爆炸式的增⻓我们对数据库需要更好的灵活性和更快的速度。这就是NoSql可以做到 的。它不需要预先定义模式,没有主外键关联、⽀持分⽚、⽀持复本。

NoSql的分类:
键值(Key-Value)存储数据库

主要会使⽤到⼀个哈希表,这个表中有⼀个特定的键和⼀个指针指向特定的数据。Key-value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进 ⾏查询或更新的时候,Key-value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.

列存储数据库

通常是⽤来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指 向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.

⽂档型数据库

⽂档型数据库的灵感是来⾃于Lotus Notes办公软件的,⽽且它同第⼀种键值存储相类 似。该类型的数据模型是版本化的⽂档,半结构化的⽂档以特定的格式存储,⽐如JSON。⽂ 档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。⽽且⽂档型数据库⽐键值 数据库的查询效率更⾼。如:CouchDB, MongoDb. 国内也有⽂档型数据库SequoiaDB,已经 开源。

图形(Graph)数据库

图形结构的数据库同其他⾏列以及刚性结构的SQL数据库不同,它是使⽤灵活的图形模 型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语⾔(SQL),因此进⾏数据 库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接⼝或者查询API。如: Neo4J, InfoGrid, Infinite Graph.

2. NoSql的应⽤场景

NoSQL数据库在以下的这⼏种情况下⽐较适⽤:
数据模型⽐较简单;
需要灵活性更强的IT系统;
对数据库性能要求较⾼;
不需要⾼度的数据⼀致性;

3. MongoDb的逻辑组成
体系结构

在这里插入图片描述

逻辑结构与关系数据库的对⽐
关系型数据库 MongoDb
database(数据库) database(数据库)
table (表) collection( 集合)
row( ⾏) document( BSON ⽂档)
column (列) field (字段)
index(唯⼀索引、主键索引) index (全⽂索引)
join (主外键关联) embedded Document (嵌套⽂档)
primary key(指定1⾄N个列做主键) primary key (指定_id field做为主键)
aggreation(groupy) aggreation (pipeline mapReduce)

⼆、MongoDb安装配置与基础命令

1. MongoDB社区版

下载地址:https://www.mongodb.com/download-center/community

#下载安装包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.5.tgz
# 解压到指定文件夹下
tar -zxvf mongodb-linux-x86_64-4.0.5.tgz -C  /usr/mongodb
2. mongoDb启动参数说明

mongoDb 由C++编写,解压后的包可以直接启动

# 创建数据库目录
mkdir -p /data/mongo 
# 启动mongodb 
./bin/mongod --dbpath=/usr/mongodb/data/mongo/
常规参数
参数 说明
dbpath 数据库⽬录,默认/data/db
bind_ip 监听IP地址,默认全部可以访问 port 监听的端⼝,默认27017
logpath ⽇志路径
logappend 是否追加⽇志
auth 是否开启⽤户密码登陆
fork 是否已后台启动的⽅式登陆
config 指定配置⽂件
配置⽂件示例

创建配置文件

vi conf/mongodb.conf

配置文件内容:

dbpath=/usr/mongodb/mongodb-linux-x86_64-4.0.5/data
port=27017
bind_ip=0.0.0.0
fork=true
auth=false
logpath = /usr/mongodb/mongodb-linux-x86_64-4.0.5/log/mongodb.log
logappend = true

已配置⽂件⽅式启动

./bin/mongod -f ./conf/mongo.conf
3. 客户端Shell 的使⽤及参数说明
# 启动客户端 连接 本机的地的默认端口
./bin/mongo 
# 指定IP和端口
./bin/mongo --host=127.0.0.1 --port=27017

mongo shell 是⼀个js 控台,可以执⾏js 相关运算如:

4. 数据库与集合的基础操作
# 查看数据库
show dbs
show databases
# 切换数据库
use local
# 创建数据库与集合,在插入数据时,如果数据库与集合不存在则会自动创建数据库与集合
db.user.insertOne({
   name:"张三",age:18})
# 查看集合
show tables
show collections
# 删除集合
db.user.drop()
# 删除数据库
db.dropDatabase()
5. MongoDB中常用数据类型
a. Object ID 自生成的默认的主键(_id)

在这里插入图片描述

# ObjectId使用12字节的存储空间,是一个由24个16进制数字组成的字符串(每个字节可以存储两个16进制数字)
_id: 5dc95e47b9e5dc997e15d2fe
# "5dc95e47" 代指的是时间戳,这条数据的产生时间
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值