带你入门NoSQL(真的是太全了)
引子:
在我们开发过程中,数据库是一个很常用的数据存储工具,我们对sql运用的可以说如火纯情了,但不知道大家有没有想过,传统关系型数据库是关系的,而存储结构是面向对象的,这种情况下,每次存储或者查询时,都需要对数据进行转换,随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题。在数据存储方面,关系数据库只能存储关系型数据,不能进行页面、图表存储。
我们不禁会思考,为什么不能有数据库可以适应多种数据结构的存储?
有没有数据库在经过简单便捷的配置之后就可以解决高数据并发问题?
正题
本文将大家带从正面侧面全面了解NoSQL数据库。
首先从概念说起:
1. 概念
NoSQL,直译:不仅仅是sql,是传统数据库的简化版本,减少不常用的功能,来大幅度提高产品性能
2. 为什么会出现Nosql
呢?
以我们最常用的MySQL关系型数据库
对比
(1)结构方面:
关系型数据库由于结构的限制不能满足高性能查询需求;
java编程是面向对象的,但数据库是关系型数据库。存储结构是面向对象的,单数据库却是关系的,所以在每次存储或查询时,都需要进行数据转换,对性能要求不高时,MyBatis、Hibernate可以简化优化,但在高数据高性能时效率就有些达不到
(2)扩展方面:
应用程序规模的变大时,扩展复杂;
在网络应用程序的规模变大,数据存储量变大时,我们需要不停地扩展。扩展有以下两种方式
①纵向扩展:提高机器性能
②横向扩展:组建集群,关系型数据库组建集群使用Mycat,需要配置多个数据源,相对复杂
但上述方式要不然增加资金成本,要不然增加人力成本,实现不方便
通俗来讲,就是关系型数据库在某些方面不能满足开发者的需求了,需要改变创新,这时NoSQL就慢慢的出现在大众的视野中。
3. 意义
NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
4. NoSQL数据库类型
(1)键值(
key-value
)对形式存储
代表性数据库:【Redis/Memcached】
键值对形式存储,通过key快速查询到其value,规定了key必须是String类型,而value可以为String、list、hash、set、zset
五中数据类型,限制性比较小,并且读写速率也是非常快的。
(2)数据可以使用
XML\JSON\JSONB
形式等面向文档存储
代表性数据库【MongoDB】
可以使用多种形式存储数据,说明我们在开发时不需要考虑数据库表的设计,大大提高了我们的开发效率
MongoDB自带了副本集的概念,通过设计适合自己业务的副本集和驱动程序,可以非常有效和方便地实现高可用,读负载均衡
(3)列存储
代表性数据库【HBASE】
每一行都有一个可以排序的rowKey和任意多的列,列可以根据需要动态增加,同一张表的不同行可以有截然不同的列。
(4)图存储
代表性数据库【Neo4J】
比起传统的信息存储和组织模式,图数据库能够很清晰揭示复杂的模式
常用于网络拓扑分析图存储
5. 传统关系型数据库与NOSQL区别
关系型:
(1)高度组织化结构化数据
(2)查询语句结构化
(3)数据和关系存储在单独的表中
(4)数据操纵语言,数据定义语言
(5)严格的一致性
(6)基础事务
NOSQL
(1)没有生命性查询语言
(2)没有预定义的存储模式
(3)最终的一致性,而非ACID[原子、一致、隔离、持久]属性
(4)非结构化和不可预知的数据
CAP定力【一致性、可用性、容错性】
6.Nosql的特点:
(1)易扩展
(2)大数据量高性能
(3)多样灵活的数据关系
7、总结,如何选择
选择数据库是一个相对性问题,需根据系统的功能以及性能选择出适合自己的数据库
这里只对我自己的想法做以陈述:
(1)管理类系统
实时性不高数据量小时使用关系型数据库
就够了;
(2)商城类
有秒杀
功能的并发量高,性能要求高,可将关系型数据库与【Redis】
数据库结合使用
(3)市场分析、社交,物流,金融风控行业系统
需要用图片来反应数据的,可使用【Neo4J】
图处理数据库
(4)交通、 金融、电商、信息类
系统,需要进行海量数据存储
,并需要准实时查询
的情况,可使用【Hbase】
数据库
(5)对象或JSON 数据存储网站实时存储
的系统,可使用【MongoDB】
数据库
到这里,整个文章就结束了,能看到这里的都是努力的小码农
简单介绍一下。我是Myy,一个有灵魂的程序员。两年开发经验,想和大家一起学习,一起成长,我创建了“烧脑程序杂谈”这个公众号,专注于分享有趣的
Java 技术编程和有益的程序人生。你在看这篇文章的时候,应该也能发现,我们都是努力的小码农,如果你也喜欢我的文章,请记得微信搜索「烧脑程序杂谈」关注我的原创公众号,公众号中有我工作学习中整理的
Java 面试攻略,以及各位老师们的技术视频哦。绝对不容错过,期待与你一同成长,一同进步。
由于个人经验较少,不能保证写的文章中没有问题,但能保证文章中每句话都是我认真推敲、仔细斟酌之后写出来的。
如果你有发现文中有写的不对的地方,欢迎提出您宝贵的意见
带你入门NoSQL(真的是太全了)相关推荐
- C/C++入门的精髓!太全了吧,收藏夹的必备
随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者.而在今天,它又扮演着什么样重要的角色呢?请往下看: 后端服务器,移 ...
- Linux中vim中gg的英文全拼,计算机科学研究专家陶贤斌带您入门Linux中的vim
原标题:计算机科学研究专家陶贤斌带您入门Linux中的vim Vim一直被认为是一种非常高效的文本编辑器,但是对于普通用户来说,很难在入门的时候就体会到Vim的所谓高效性.Vim 是 UNIX 文本编 ...
- 15分钟带你入门sklearn与机器学习——分类算法篇
作者 | 何从庆 本文转载自AI算法之心(ID:AIHeartForYou) [导读]众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机 ...
- 带你入门nodejs第一天——node基础语法及使用
带你入门nodejs第一天--node基础语法及使用 带你入门nodejs第二天--http 模块化 npm yarm 带你入门nodejs第三天-express路由 带你学习nodejs第四天--身 ...
- TensorFlow 2.0 极简教程,不到 20 行代码带你入门
今天,Google 发布了 TensorFlow 2.0 的 alpha 版本,真是千呼万唤始出来,对应的 2.0 官方教程 也释出,本文翻译了官方最简单的一个教程,带你入门 TensorFlow. ...
- 网络知识入门:路由器基础知识全接触
网络知识入门:路由器基础知识全接触 发布时间:2008.05.29 07:01 来源:赛迪网 作者:月伴雨 路由器综述 路由器是互联网的主要节点设备.路由器通过路由决定数据的转发.转发策 ...
- 技术解析+代码实战,带你入门华为云政务区块链平台
摘要:政务区块链平台是行业区块链平台的初步实践,未来在区块链技术的发展下,还会打造面向其他领域的链管平台,构建多方协同的分布式账本,让区块链应用更便捷高效的为产业服务. 本文分享自华为云社区<技 ...
- linux 中国-新手村,从新手村开始,手把手带你入门梳理内核代码
原标题:从新手村开始,手把手带你入门梳理内核代码 在上一期内容中,Java离Linux内核有多远? 我们介绍了从 JVM 到内核的编译原理,告诉大家应用和系统工程师如何接触到内核. 本文将 从一个简单 ...
- BCrypt加密怎么存入数据库_松哥手把手带你入门 Spring Security,别再问密码怎么解密了...
因为之前有小伙伴在松哥群里讨论如何给微人事的密码解密,我看到聊天记录后就惊呆了. 无论如何我也得写一篇文章,带大家入门 Spring Security!当我们在一个项目中引入 Spring Secur ...
最新文章
- 进度条三方库tdqm trange用法
- 具有缺失值的多元时间序列的递归神经网络
- 30天敏捷结果(30):提升敏捷结果
- SpringBoot集成jsp(附源码)+遇到的坑
- MINA2-TCP服务端实例
- java 如何判定消息已在队列_Java面试—消息队列
- 计算机网络应用教学反思,《计算机网络实训之常用的网络工具》教学反思
- 5月24日起,每晚8点,实时数仓入门训练营见!
- 沙洋有几个微服务群_集群 分布式 微服务
- 【渝粤教育】电大中专Office办公软件 (4)作业 题库
- 批处理call和start
- idea 启动选择profiles_玩转SpringBoot 2 之项目启动篇
- iisS7 配置SSL 绑定主机头实现多站点访问
- 如何搜索旅行的好地方(MongoDb LINQ和.NET Core)
- golang 所有进程休眠_Golang基础--常见坑
- 2018下半年初级程序员考试时间
- 机顶盒系统升级服务器,服务器及其软件升级方法、IP机顶盒及其软件升级方法...
- CMMI3 和 CMMI 4
- 【R语言】rep用法(自用)
- 电脑上如何操作Android手机