1. NoSQL
NoSQL,Not-Only SQL,也泛指Non SQL,即非关系型数据库。 NoSQL 数据库是一种分布式、非关系型数据库,用于大规模数据存储和大规模并行、高性能的数据处理,跨越大量的商品系统。与传统的关系数据库/应用方法不同,NoSQL 提供了一种更接近应用程序的数据处理方法。它是一种现代数据存储范式,为高性能是主要需求的环境提供数据持久性。在 NoSQL 数据库中,数据的存储方式使得写和读都非常快,即使在重负载下也是如此。
1.1. 主要分类
-
Document databases
文档数据库将数据存储在类似于 JSON(JavaScript 对象表示法)对象的文档中。每个文档包含成对的字段和值。这些值通常可以是各种类型,包括字符串、数字、布尔值、数组或对象等,并且它们的结构通常与开发者在代码中使用的对象保持一致。由于字段值类型和强大的查询语言的多样性,因此文档数据库非常适合各种各样的使用案例,并且可以用作通用数据库。它们可以横向扩展以适应大量数据。据 DB-engines 指出,MongoDB 一直被评为世界上较受欢迎的 NoSQL 数据库,它就是一种文档数据库。有关文档数据库的更多信息,请访问 什么是文档数据库?。
-
Key-value stores
键值数据库是一种较简单的数据库,其中每个项目都包含键和值。通常只能通过引用键来检索值,因此学习如何查询特定键值对通常很简单。键值数据库非常适合需要存储大量数据但无需执行复杂查询来检索数据的使用案例。常见的使用案例包括存储用户首选项或缓存。Redis 和 DynanoDB 是流行的键值数据库。
-
Wide-column databases
宽列存储将数据存储在表、行和动态列中。宽列存储提供了比关系型数据库更大的灵活性,因为不需要每一行都具有相同的列。许多人认为宽列存储是二维键值数据库。宽列存储非常适合需要存储大量数据并且可以预测查询模式的情况。宽列存储通常用于存储物联网数据和用户配置文件数据。Cassandra 和 HBase 是较受欢迎的两种宽列存储。
-
Graph databases
图形数据库将数据存储在节点和边中。节点通常存储有关人物、地点和事物的信息,而边缘则存储有关节点之间的关系的信息。在需要遍历关系以查找模式(例如社交网络,欺诈检测和推荐引擎)的使用案例中,图形数据库非常出色。Neo4j 和 JanusGraph 是图形数据库的示例。
2. Redis
2.1. 概述
Redis,即Remote Dictionary Server,一种以key-value形式存储数据的NoSQL数据库。
2.2. 特征
- 单线程工作
- 高性能
- 多种类型数据存储
- 支持持久化
2.3. 应用场景
- 热点数据存储,如热点新闻、热点商品信息等等。
- 即时信息存储,如在线人数统计
- 时效性信息存储,如验证码、投票统计等等。
- 用作任务队列、消息队列、分布式锁