目录:

  • 为什么要使用nosql
  • mongo的简介
  • 应用场景
  • 入门demo

为什么要使用nosql:

随着互联网的发展,用户数量激增,访问量的上涨,传统的关系型数据库的性能趋于瓶颈

关系型数据库难以克服的问题:

1、高并发读写:为什么关系型数据库难以支持高并发的读写呢,因为它基于IO操作磁盘,而nosql一般直接操作内存。

2、海量数据高效存储与访问

3、高扩展性、高可用性

。。。。。。

关系型数据库的拘束:

1、事务一致性的约束;支撑高并发已经很困难了,还需要满足数据的一致性。

2、读写实时性需求

。。。。。。

nosql是什么,它的特点:

nosql(Not Only SQL),本质上也是一种数据存储技术,但相对与传统的sql来说它不会遵循一些约束。

1、特点:

  • 支持海量数据存储
  • 打破性能瓶颈
  • 操作简单
  • 支持开源
  • 对服务器性能要求低

2、缺点:

  • 不支持事务
  • 复杂的sql难以实现(似于多表关联)
  • 等等

mongo的简介:

mongo的特性:

1、面向集合文档的存储:存储bson形式(json的扩展)的数据

2、存储格式自由:数据格式不固定,修改数据结构不影响服务运行

3、强大的查询语句,媲美sql

4、完整的索引、查询计划支持

5、支持数据的复制和故障转移

6、支持二进制数据及大对象文件的高效存储

7、使用分片集群提升系统性能

8、使用内存映射存储引擎,把磁盘的IO操作转化为内存操作

。。。。。。

mongo概念与rdms对比:

如果有一个存储用户和邮箱的关系的需求:

1、在sql中一般需要用两个表来实现,且邮箱表需要有一个字段关联用户;user(用户表)、email(邮箱表,一对多)

2、但在mongo中你只需要将email那一字段设计成数组类型就可以了

{
_id: 0001
username: 'zd'
email: [
'test1@qq.com',
'test2@qq.com'
]
}

应用场景:

项目中只要包含以上两个特征,选择mongo绝对不会错!!!

入门demo:

1、增加mongodb-drive依赖

 <dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.4.3</version>
</dependency>

2、获取一条document数据

 public class Test {

     public static void main(String[] args) {
MongoClient client = new MongoClient("192.168.233.128", 27017);
MongoDatabase db = client.getDatabase("local");
MongoCollection<Document> user = db.getCollection("user");
for (Document next : user.find()) {
Object name = next.get("name");
Object age = next.get("age");
System.out.println(MessageFormat.format("name={0}, age={1}", name.toString(), age.toString()));
}
}
}

最新文章

  1. django模板里循环变量&lt;table&gt;里想要两个一行如何控制
  2. schemaLocation value = &#39;xxxxxxxxxxxx&#39; must have even number of URI&#39;s
  3. VS2013和VS2008项目的互通
  4. angularjs实现IOS8自带计算器
  5. C++调用GDAL库读取并输出tif文件,并计算斑块面积输出景观指数:CSD
  6. POJ2251Dungeon Master
  7. express 3.0.x 中默认不支持flash() 的解决方法
  8. C++第三天学习
  9. MySQL数据库操作常用命令
  10. scanf后面跟一个getchar
  11. LuaHotUpdate原理
  12. 移动端 slide拖拽
  13. 宝塔面板配置阿里云SSL证书流程
  14. 深入浅出的webpack构建工具---HappyPack优化构建(九)
  15. [git] 关闭 git branch 的pager
  16. java学习进度
  17. 使用 sendKeys(keysToSend) 批量上传文件
  18. Python小白学习之路(三)—【数字功能】【字符串功能】
  19. asp.net网站项目调用page,或者ashx页面不能用反射
  20. STL - 容器 - List

热门文章

  1. redis系列之------主从复制
  2. Koa 本地搭建 HTTPS 环境
  3. python高阶函数——sorted排序算法
  4. springboot~yml里的自定义配置~续
  5. postgreSQL安装教程 Windows
  6. 给spark submit main传递参数
  7. ActiveMQ下载与安装(消息中间件JMS)
  8. openstack_dashboard无法获取nova
  9. [C]#include和链接
  10. [译]Vulkan教程(15)图形管道基础之RenderPass