朋友们,我们平时使用的数据库,大多都是关系型数据库,包括MySQL、PostgreSQL、SQLServer等。关系型数据库的特点是数据的存储通过二维表格实现,将数据存储在相互独立的表格中。
近年来,随着互联网的飞速发展,数据的形态发生了很大改变,非关系型数据库NoSQL应运而生、越来越流行。NoSQL主要包括键值(Key-Value)存储数据库、列存储(Column-oriedted)数据库、面向文档(Document-Oriented)数据库、图形(Graph)数据库四种,下面介绍三款最常用的NoSQL数据库。
Memcached(键值数据库)
Memcaced是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的web应用,最初版本由LiveJoumal 的Brad Fitzpatrick在2003年开发完成。目前全球有非常多的用户都在使用它来架构主机的大负载网站或提升主机的高访问网站的响应速度。
Memcached是一种纯内存缓存系统,数据就像一张巨大的hash表,数据以key-value对的方式存在。通过缓存经常被存取的对象或数据,从而减轻了频繁读取数据库的压力,提高网站的响应速度,构建出快速更快的可扩展的Web应用。
Memcached非常适合需要超高性能读写速度、持久化保存的应用场景,但是最近几年逐渐被其他的持久化产品替代如Redis。
Redis(键值数据库)
Rediskey-value型存储系统。相比Memcached,redis支持的存储value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等。这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。
为了保证效率,redis的数据都是缓存在内存中。区别是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在基础上实现了master-slave(主从)同步。
Redis提供了Python、Ruby、Erlang、PHP客户端,使用非常方便。支持内存缓存、支持持久化存储、数据库类型更丰富、支持主从集群、分布式 、支持队列等特殊功能。
MongoDB(文档数据库)
MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。MongoDB支持的数据库结构非常松散,类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongodb***的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB使用高效的二进制存储数据,她具有面向集合(Collenction-Orented)存储、模式自由(schema-free)、支持动态查询、支持完全索引、支持复制和故障恢复、自动处理碎片、以支持云计算层次的扩展性等诸多优异性能,非常流行、应用也非常广泛。
虽然当前数据库的主流还是关系型数据库,但NoSQL的应用只会越来越广泛,原因非常简单,因为当代和未来我们面对的数据类型越来越复杂,传统的数据存储方式已经越来越无法满足要求。
朋友们,如果您有兴趣,可以更深入的了解下NoSQL,对您未来的学习、就业肯定会有莫大的帮助。