Redis学习第一篇(NoSQL)

什么是NoSQL

NoSQL不仅仅是SQL,它是Not Only SQL的缩写,也是众多非关系型数据库的统称。NoSQL和关系型数据库一样,也是用来存储数据的仓库。

NoSQL 具有如下特点:

  • 容易扩展,方便使用,数据之间没有关系。

  • 数据模型非常灵活,无须提前为要存储的数据建立字段类型,随时可以存储自定义的数据格式。

  • 适合大数据量、高性能的存储。

  • 具有高并发读/写、高可用性。

NoSQL 的 4 种数据模型

  • 键值对数据模型

    采用键值对形式将数据存储在一张哈希表中的一类数据库,这张哈希表具有一个特定的键和一个特定的数据指针。键值对存储中的值可以是任意类型的值,如数字、字符串,也可以是封装在对象中的新键值对。

    典型代表:Redis(由C/C++语言开发)、Memcached、Voldemort、Berkeley DB\Tokyo Cabinet/Tyrant等。当采用该类型数据库存储数据时,需要定义数据结构(半结构化)才能进行存储。

    优点

    • 查询速度快

    • 保存速度快

    • 兼具临时性和永久性

    缺点

    • 数据无结构,通常只被当作字符串或二进制数据

    • 当进行临时性保存时,数据有可能丢失

    适用场景

    • 高速缓存,大数据量存储与访问

    • 日志缓存

    • 存储用户信息

  • 列数据模型

    将数据按照列簇形式来存储的一类数据库,通常用于存储分布式系统的海量数据。它也有键,这些键指向多个列,由数据库的列簇来统一安排。

    典型代表:HBase(由Java语言开发)、VCassandra(由Java语言开发)、Riak(由 Erlang语言、C 语言及 JavaScript 组合开发)等。当采用该类数据库存储数据时,需要定义数据结构(半结构化)才能进行存储。

    优点

    • 查询速度快

    • 擅长以列为单位读入数据

    • 可扩展性强,尤其是分布式扩展

    缺点

    • 功能相对局限

    适用场景

    • 做分布式文件系统

    • 存储日志信息

  • 文档数据模型

    以文档形式进行存储,它的键值对数据模型的升级版,是版本化文档。它可以使用模式来指定某个文档结构,通常采用特定格式来存储半结构化的文档,最常使用的存储格式是 XML、JSON。每个文档都是自包含的数据单元,是一系列数据项的集合。

    典型代表:MongoDB(由 C++语言开发)、CouchDB(由 Erlang 语言开发)、RavenDB等。当采用该类数据库存储数据时,不需要定义数据结构(非结构化)就可以存储。

    优点

    • 无需定义表结构,表结构可变

    • 对数据结构要求不严格

    • 可以使用复杂的查询条件

    缺点

    • 查询性能不高

    • 缺乏统一的查询语法

    适用场景

    • Web 应用,与key-value 类似,value 是结构化的,不同的是数据库可以了解 value 的内容

    • 存储日志信息,做相关业务的分析

  • 图数据库模型

    图数据模型采用图结构形式存储数据,它是最复杂的 NoSQL,常被用于存储一些社交网络的社交关系,适用于存储高度互联的数据。它由多个节点和多条边组成,节点表示实体,边表示两个实体之间的关系。

    典型代表:Neo4j(由 Java 语言开发)、InfoGrid、Infinite Graph 等。

    优点

    • 具有很多图结构算法的支持,如最短路径算法、最小生成树算法等

    缺点

    • 为了得到结果,需要对整个图形进行计算

    • 不利于做分布式应用

    • 适用范围有限

    适用场景

    • 应用于大型社交网络

    • 做相关推荐系统

    • 面对一些关系性强的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值