NoSQL简介
- “NoSQL”一词最早于1998年被用于一个轻量级的关系数据库的名字
- 随着web2.0的快速发展,NoSQL概念在2009年被提了出来,非关系型、分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性
- NoSQL在2010年风生水起,现在国内外众多大小网站,如facebook、goole、淘宝、京东、百度等,都在使用nosql开发高性能的产品
- 对于一名程序员来讲,使用nosql已经成为一条必备技能
- NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受,指的是非关系型的数据库
传统关系数据库的瓶颈
- 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。进入21世纪,随着基础网络设施的建设,互联网逐渐被大众接受并使用,网站开始快速发展。火爆的论坛、博客、sns、微博逐渐引领web领域的潮流。随着3G、4G移动互联技术的研发与推广,上网逐渐成为日常生活中的重要组成部分,这就是使网站的访问量巨大,对于数据库的请求也更频繁
- 在互联网领域,MySQL成为了绝对的王者,毫不夸张的说,MySQL为互联网的发展做出了卓越的贡献。大部分的MySQL都应该是IO密集型的,大数据量高并发环境下的MySQL应用开发越来越复杂,也越来越具有技术挑战性。分表分库的规则把握都是需要经验的。虽然有像淘宝这样技术实力强大的公司开发了透明的中间件层来屏蔽开发者的复杂性,但是避免不了整个架构的复杂性。分库分表的子库到一定阶段又面临扩展问题。还有就是需求的变更,可能又需要一种新的分库方式。MySQL数据库也经常存储一些大文本字段,导致数据库表非常的大,在做数据库恢复的时候就导致非常的慢,不容易快速恢复数据库。比如1000万4KB大小的文本就接近40GB的大小,如果能把这些数据从MySQL省去,MySQL将变得非常的小
- 关系数据库很强大,但是它并不能很好的应付所有的应用场景。MySQL的扩展性差,大数据下IO压力大,表结构更改困难
NOSQL的优势
- 易扩展:NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展
- 大数据量,高性能:NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单
- 灵活的数据模型:NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦
- 高可用:NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构
结论
- NoSQL数据库的出现,弥补了关系数据(比如MySQL)在某些方面的不足,在某些方面能极大的节省开发成本和维护成本
- MySQL和NoSQL都有各自的特点和使用的应用场景,两者的紧密结合将会给数据库发展带来新的思路。让关系数据库关注在关系上,NoSQL关注在存储上
redis简介
- Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持
- Redis是一个开源(BSD许可)的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件
- redis是一个高性能的key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash(哈希类型)。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便
- Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。从盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助