切换导航
首页
技术问答
编程语言
前端开发
移动开发
开发工具
程序设计
行业应用
CMS系统
服务器
频道导航
▸ PHP
▸ Java
▸ Java SE
▸ Python
▸ C#
▸ C&C++
▸ Ruby
▸ VB
▸ asp.Net
▸ Go
▸ Perl
▸ netty
▸ Django
▸ Delphi
▸ Jsp
▸ .NET Core
▸ Spring
▸ Flask
▸ Springboot
▸ SpringMVC
▸ Lua
▸ Laravel
▸ Mybatis
▸ Asp
▸ Groovy
▸ ThinkPHP
▸ Yii
▸ swoole
▸ HTML
▸ HTML5
▸ JavaScript
▸ CSS
▸ jQuery
▸ Bootstrap
▸ Angularjs
▸ TypeScript
▸ Vue
▸ Dojo
▸ Json
▸ Electron
▸ Node.js
▸ extjs
▸ Express
▸ XML
▸ ES6
▸ Ajax
▸ Flash
▸ Unity
▸ React
▸ Flex
▸ Ant Design
▸ Web前端
▸ 微信小程序
▸ 微信公众号
▸ iOS
▸ Android
▸ Swift
▸ Hybrid
▸ Cocos2d-x
▸ Flutter
▸ Xcode
▸ Silverlight
▸ cocoa
▸ Cordova
前端之家
NoSQL
Nosql(Not only SQL)
Nosql(Not only SQL)
2020-05-16
NoSQL
前端之家
前端之家
收集整理的这篇文章主要介绍了
Nosql(Not only SQL)
,
前端之家
小编觉得挺不错的,现在分享给大家,也给大家做个参考。
No
sql
概念随着web2.0的
快速
发展,非关系型、分布式数据存储得到了
快速
的发展,它们不保证关系数据的ACID特性。 No
sql
概念在2009年被提了出来。No
sql
最常见的解释是“non-relational”,“NotOnly
sql
”也被很多人接受。(“No
sql
”一词最早于1998年被用于一个轻量级的关系
数据库
的名字。)No
sql
被我们用得最多的当数key-value存储,当然还有其他的文档型的、列存储、图型
数据库
、xml
数据库
等。在No
sql
概念提出之前,这些
数据库
就被用于各种系统当中,但是却很少用于web互联网应用。比如cdb、qdbm、bdb
数据库
。 传统关系
数据库
的瓶颈 传统的关系
数据库
具有不错的
性能
,高稳定型,久经历史考验,而且使用简单,
功能
强大,同时也积累了大量的成功案例。在互联网领域,
MysqL
成为了绝对靠前的王者,毫不夸张的说,
MysqL
为互联网的发展做出了卓越的贡献。 在90年代,一个网站的访问量一般都不大,用单个
数据库
完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。 到了最近10年,网站开始
快速
发展。火爆的论坛、
博客
、sns、微博逐渐引领web领域的潮流。在初期,论坛的流量其实也不大,如果你接触网络比较早,你可能还记得那个时候还有文本型存储的论坛程序,可以想象一般的论坛的流量有多大。 Memcached+
MysqL
后来,随着访问量的上升,几乎大部分使用
MysqL
架构的网站在
数据库
上都开始出现了
性能
问题,web程序不再仅仅专注在
功能
上,同时也在追求
性能
。程序员们开始大量的使用缓存技术来缓解
数据库
的压力,优化
数据库
的结构和索引。开始比较流行的是通过
文件
缓存来缓解
数据库
压力,但是当访问量继续增大的时候,多台web机器通过
文件
缓存不能共享,大量的小
文件
缓存也带了了比较高的IO压力。在这个时候,Memcached就自然的成为一个非常时尚的技术产品。 Memcached作为一个独立的分布式的缓存服务器,为多个web服务器提供了一个共享的高
性能
缓存服务,在Memcached服务器上,又发展了根据hash算法来进行多台Memcached缓存服务的扩展,然后又出现了一致性hash来
解决
增加
或减少缓存服务器导致重新hash带来的大量缓存失效的弊端。当时,如果你去面试,你说你有Memcached经验,肯定会加分的。
MysqL
主从读写分离 由于
数据库
的写入压力
增加
,Memcached只能缓解
数据库
的读取压力。读写集中在一个
数据库
上让
数据库
不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写
性能
和读库的可扩展性。
MysqL
的master-slave模式成为这个时候的网站标配了。 分表分库 随着web2.0的继续高速发展,在Memcached的高速缓存,
MysqL
的主从复制,读写分离的基础之上,这时
MysqL
主库的写压力开始出现瓶颈,而数据量的持续猛增,由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发
MysqL
应用开始使用InnoDB引擎代替MyISAM。同时,开始流行使用分表分库来缓解写压力和数据增长的扩展问题。这个时候,分表分库成了一个热门技术,是面试的热门问题也是业界讨论的热门技术问题。也就在这个时候,
MysqL
推出了还不太稳定的表分区,这也给技术实力一般的公司带来了希望。虽然
MysqL
推出了
MysqL
Cluster集群,但是由于在互联网几乎没有成功案例,
性能
也不能满足互联网的要求,只是在高可靠性上提供了非常大的保证。
MysqL
的扩展性瓶颈 在互联网,大部分的
MysqL
都应该是IO密集型的,事实上,如果你的
MysqL
是个
cpu
密集型的话,那么很可能你的
MysqL
设计得有
性能
问题,需要优化了。大数据量高并发环境下的
MysqL
应用开发越来越复杂,也越来越具有技术挑战性。分表分库的规则把握都是需要经验的。虽然有像淘宝这样技术实力强大的公司开发了透明的中间件层来
屏蔽
开发者的复杂性,但是避免不了整个架构的复杂性。分库分表的子库到一定阶段又面临扩展问题。还有就是需求的变更,可能又需要一种新的分库方式。
MysqL
数据库
也经常存储一些大文本字段,导致
数据库
表非常的大,在做
数据库
恢复的时候就导致非常的慢,不容易
快速
恢复
数据库
。比如1000万4KB大小的文本就接近40GB的大小,如果能把这些数据从
MysqL
省去,
MysqL
将变得非常的小。 关系
数据库
很强大,但是它并不能很好的应付所有的应用场景。
MysqL
的扩展性差(需要复杂的技术来实现),大数据下IO压力大,表结构更改困难,正是当前使用
MysqL
的开发人员面临的问题。 NO
sql
的优势 易扩展 No
sql
数据库
种类繁多,但是一个共同的特点都是去掉关系
数据库
的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。 大数据量,高
性能
No
sql
数据库
都具有非常高的读写
性能
,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,
数据库
的结构简单。一般
MysqL
使用QueryCache,每次表的更新Cache就失效,是一种大粒度的Cache,在针对web2.0的交互频繁的应用,Cache
性能
不高。而No
sql
的Cache是记录级的,是一种细粒度的Cache,所以No
sql
在这个层面上来说就要
性能
高很多了。 灵活的数据模型 No
sql
无需事先为要存储的数据建立字段,随时可以存储
自定义
的数据格式。而在关系
数据库
里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,
增加
字段简直就是一个噩梦。这点在大数据量的web2.0时代尤其明显。 高可用 No
sql
在不太影响
性能
的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。 总结 No
sql
数据库
的出现,弥补了关系数据(比如
MysqL
)在某些方面的不足,在某些方面能极大的节省开发成本和维护成本。
MysqL
和No
sql
都有各自的特点和使用的应用场景,两者的紧密结合将会给web2.0的
数据库
发展带来新的思路。让关系
数据库
关注在关系上,No
sql
关注在存储上。
上一篇:NOSQL资料学习
下一篇:NoSql中的B-tree、B+tree和LSM-tre
猜你在找的NoSQL相关文章
Redis进阶实践之十八 使用管道模式提高Redis查询的速度
一、引言 学习redis 也有一段时间了,该接触的也差不多了。后来有一天,以前的同事问我,如...
作者:前端之家 时间:2020-11-07
MongoDb进阶实践之二 如何在Windows上安装和配置MongoDB
一、引言 上一篇文章,我介绍了如何在Linux系统上安装和配置MongoDB,其实都不是很难,不需...
作者:前端之家 时间:2020-11-07
Redis进阶实践之十七 Redis协议的规范
一、介绍 Redis客户端使用RESP(Redis的序列化协议)协议与Redis的服务器端进行通信。 虽然...
作者:前端之家 时间:2020-11-07
Redis进阶实践之十九 Redis如何使用lua脚本
一、引言 redis学了一段时间了,基本的东西都没问题了。从今天开始讲写一些redis和lua脚本...
作者:前端之家 时间:2020-11-07
Redis进阶实践之十五 Redis-cli命令行工具使用详解第二部分(结束)
一、介绍 今天继续redis-cli使用的介绍,上一篇文章写了一部分,写到第9个小节,今天就来完...
作者:前端之家 时间:2020-11-07
Redis进阶实践之十四 Redis-cli命令行工具使用详解第一部分
一、介绍 redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西。现在redis的...
作者:前端之家 时间:2020-11-07
MongoDb进阶实践之七 MongoDB的索引入门
一、引言 好久没有写东西了,MongoDB系列的文章也丢下好长时间了。今天终于有时间了,就写...
作者:前端之家 时间:2020-11-07
Memcached在Linux环境下的使用详解
一、引言 写有关NoSQL数据库有关的文章已经有一段时间了,可以高兴的说,Redis暂时就算写完...
作者:前端之家 时间:2020-11-07
Redis进阶实践之二十 Redis的配置文件使用详解
一、引言 写完上一篇有关redis使用lua脚本的文章,就有意结束Redis这个系列的文章了,当然...
作者:前端之家 时间:2020-11-07
Redis进阶实践之十二 Redis的Cluster集群动态扩容
一、引言 上一篇文章我们一步一步的教大家搭建了Redis的Cluster集群环境,形成了3个主节点...
作者:前端之家 时间:2020-11-07
编程分类
MySQL
MsSQL
Oracle
Sqlite
Postgre SQL
Mariadb
MongoDB
NoSQL
HBase
JDBC
最新文章
• Redis进阶实践之十八 使用
• MongoDb进阶实践之二 如何
• Redis进阶实践之十七 Redi
• Redis进阶实践之十九 Red
• Redis进阶实践之十五 Redi
• MongoDb进阶实践之六 Mong
• Redis进阶实践之十四 Redi
• MongoDb进阶实践之七 Mong
• Memcached在Linux环境下的
• Redis进阶实践之二十 Redi
热门标签
更多 ►
undo日志
persistent-c
mysql-error-
postal-code
sql-match-al
mysql-5.6
mysql-8.0
database-tri
安装路径
系统错误
data_dir
丢失文件
主从同步
sql_mode
数据库目录
匿名用户
character_se
ID归零
数据库位置
查询表
重复字段
查询字段
截断日志
SUSPECT
7391
Remote Serve
Linked Serve
玄学问题
登录不上
开启远程访问