一.传统的企业开发模式(单机模式)
客户端-->服务器-->数据库
缺点:A.当请求量过大时,容易当机
B. 大容量的数据的存储问题
二.改变措施
redis Mysql (主) __________binlog________集群__________Mysql(从)
NOSql半结构化数据 //
\\ //
客户端--> 服务器- \\
\\
fastDFS 集群
tracker
-----------|-------------
| | |
storage1 storage2 storage3
数据分类:三大类
A.结构化数据 有规则的数据库和表 RDBMS Oracle Mysql
B.半结构化数据 无规则的数据 json xml NoSQL
C.非结构化数据 二进制文件 Xlsx
A.MySQL 集群 1)主从复制 高可用
2)读写分离 高性能(主写从读)
3)海量数据的存储 (分库分表)
水平拆分,将一张表数据水平 主键%10=0 第一张小表
Mycat 分库分表数据库中间键
B. 半结构化数据 (内存数据)
NOSQL : redis 键值型数据库
mongoDB 文档型数据库 bson数据格式
Hbase 列存储
Neo4J 图形存储
NOSQL 数据库的优点: 缺点
1>海量数据,高可扩展性 1)弱事务性
2>分布式计算 廉价的服务器 2)查询语言不统一,功能有限
3>低成本 3)数据安全性较差
4.数据结构灵活 (没有限制)
5.没有复杂的关系
选择:
事物要求高,数据完整性非常高---->关系型数据库
数据一般,后期可能扩展的数据 ----->noSQL
不重要的数据(缓存) redis memcached
二进制数据 fastDFS
三 .MongoDB
mongoDB是一款免费开源的NOSQL文档型数据库,旨在为WEB应用提供可护展的高性能数据存储解决方案。
Note:
- NOSQL(not only sql):指的是非关系型数据库,没有固定的存储格式,一般适用于超大规模数据的存储。
- NOSQL优点:高可用、可扩展、低成本、数据结构灵活
- NOSQL缺点:弱化事务
- 数据存储格式为 BSON(一种二进制形式的存储格式,类似于 JSON)
- 丰富的查询语言(CRUD、数据聚合、全文检索、地理位置查询)
- 高可用(副本集)
- 水平扩展,支持海量数据存储(分片)
- MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
- 支持完全索引
三、 MongoDB中概念解析
SQL术语 | MongoDB术语 | 说明 |
---|---|---|
database | database | 数据库 |
table | collection | 集合 |
row | document | 文档,一条记录 |
index | index | 索引 |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
foreign key | 无 | 无 |
四、环境搭建(注:最新版本3.6,只能在64位系统安装)
1. 安装
1 2 3 |
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.2.tgz tar -zxvf mongodb-linux-x86_64-3.6.2.tgz mv mongodb-linux-x86_64-3.6.2 mongodb |
2. 启动mongodb服务
1 2 |
# 启动mongo server命令 ./mongod --port 27017 --dbpath=/data/db |
# 启动成功,如下图所示:
五、MongoDB的客户端基本操作
1. 打开客户端交互窗口
1
|
/root/mongodb/bin/mongo 192.168.138.156:27017
|
注:
a. mongodb 客户端是一个javascript交互窗口,可以直接写js代码
b. mongodb和mysql数据库有点类似,有数据库的概念,在使用时需要先选中数据库,再执行操作
2. 数据库相关操作
show dbs
展示所有数据库db
展示当前使用的数据库use 数据库名
切换到指定数据库db.dropDatabase();
删除数据库db.help();
帮助命令