实习学习7—NoSQL数据库

一、什么是NoSQL数据库

NoSQL指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

NoSQL 数据库专门构建用于特定的数据模型,并且具有灵活的架构来构建现代应用程序。NoSQL 数据库使用各种数据模型来访问和管理数据。这些类型的数据库专门针对需要大数据量、低延迟和灵活数据模型的应用程序进行了优化,这是通过放宽其他数据库的某些数据一致性限制来实现的。

以下主要介绍两种类型的数据库:key-value存储、文档存储

二、键值数据库

键值数据库是一种非关系数据库,它使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。键和值都可以是从简单对象到复杂复合对象的任何内容。键值数据库是高度可分区的,并且允许以其他类型的数据库无法实现的规模进行水平扩展。

1、redis数据库

①数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

 ②集群模式

Redis作为我们最常用的内存数据库之一,在面对高并发环境时,也需要保持高可用性。因此,通常情况下我们需要配置Redis集群。

Redis集群,通常是在多个服务器上部署Redis服务,每个服务器作为一个节点,所有的节点之间互相联系,数据互通,这样就构成了Redis集群。

Redis集群有三种模式,主从复制模式、Sentinel(哨兵)模式、Cluster 模式

主从复制的工作流程如下:主节点将写入操作记录在自己的本地数据库中,并将这些操作发送给连接的从节点。从节点接收到主节点的写入操作,并在自身的数据库中执行这些操作,使得从节点的数据与主节点保持同步。高可用性:如果主节点发生故障,可以将一个从节点升级为新的主节点,以保证系统的可用性。读取负载均衡:可以通过多个从节点分担读取请求,降低主节点的负载压力。

2、MemcacheDB

①数据类型

字符串 (String): 最基本的数据类型,可以存储字符串数据。

整数 (Integer): MemcacheDB 也可以存储整数类型的数据,并提供一些原子操作(如增加、减少),用于对整数进行操作。

列表 (List): MemcacheDB 支持列表类型的数据结构,允许在列表的两端进行元素的添加或移除操作。

集合 (Set): 集合是一种无序且不重复的数据结构,MemcacheDB 提供对集合进行添加、移除和交集等操作。

字典 (Dictionary 或 Map): 也被称为哈希表或关联数组,MemcacheDB 支持存储键值对的数据结构,并提供对这些键值对进行操作的方法。

其他数据类型: 有些版本的 MemcacheDB 可能支持其他复杂数据类型,比如 JSON 对象、二进制数据等,但这些支持可能会因具体版本和配置而异。

②集群模式

客户端分片: 这种方法涉及在客户端实现数据分片逻辑。客户端根据某种规则(例如哈希函数)将数据分散存储到多个 MemcacheDB 节点上。这种方式需要客户端处理分片逻辑和管理多个连接,但可以比较容易地实现水平扩展。

代理层: 使用代理层来实现集群化,代理负责将客户端请求路由到多个 MemcacheDB 节点上。代理层可以提供负载均衡、数据分片等功能,并隐藏底层节点的细节,简化了客户端与集群之间的交互。

第三方扩展: 有些第三方工具或组件提供了 MemcacheDB 的集群化解决方案。这些工具可以通过在 MemcacheDB 之上构建一层抽象或代理来实现集群功能,并提供一些额外的管理、监控和故障处理特性。

3、MongoDB

①数据类型

String(字符串):存储文本或字符数据。

Integer(整数):存储整数值。可以是32位或64位。

Double(双精度浮点数):存储双精度浮点数,用于表示小数。

Boolean(布尔值):存储 true 或 false。

Array(数组):存储数组或列表结构的数据。

Object(对象):存储键值对形式的数据,类似于JSON对象。

Null(空值):表示缺失或空值。

Date(日期):存储日期和时间信息。

Timestamp(时间戳):存储文档的时间戳。

Binary Data(二进制数据):存储二进制数据,例如图片或文件。

ObjectId(对象标识符):存储文档的唯一标识符。

Regular Expression(正则表达式):存储正则表达式。

②集群模式

MongoDB提供了几种集群化解决方案来满足不同规模和需求的数据库部署:

复制集(Replica Set): Replica Set 是 MongoDB 的基本高可用性解决方案。它包括多个 MongoDB 实例(节点),其中一个是主节点(Primary),其余是从节点(Secondary)。主节点处理所有写入操作并将数据同步到从节点。如果主节点发生故障,系统可以自动选举新的主节点。Replica Set 提供数据冗余和故障转移能力,提高了系统的可用性。

分片集群(Sharded Cluster): 分片集群是 MongoDB 的水平扩展解决方案。它将数据分成多个片段(Shard),每个片段存储部分数据。在分片集群中,有三种类型的节点:配置服务器(Config Servers)、分片服务器(Shard Servers)和路由节点(Query Routers)。配置服务器存储分片集群的元数据,分片服务器存储实际数据,而路由节点负责接收客户端请求并将其路由到正确的分片。这种架构可以通过添加更多的分片来水平扩展数据库存储能力。

混合部署(Mixed Deployments): MongoDB还支持混合部署,即同时使用复制集和分片集群。这种方式结合了复制集和分片集群的优势,可以提供高可用性和水平扩展能力。

  1. Redis Sentinel: 这种模式主要用于高可用性(High Availability)。它通过多个 Redis 实例来提供故障转移和监控。Sentinel 会监控 Redis 主节点和从节点的健康状态,当主节点出现故障时,会自动将一个从节点升级为新的主节点,以确保系统的可用性。

  2. Redis Cluster: Redis Cluster 是一种分布式的集群解决方案,用于水平扩展。它将数据分片(分散存储)到多个节点上,并通过节点间的数据交互来实现高性能和可伸缩性。Redis Cluster 支持自动数据分片和故障转移,能够容忍部分节点的故障,并在节点动态加入或离开时进行自动重新分片。

  3. Redis的主从复制(Master-Slave Replication)模式是一种常见的数据复制模式,用于创建多个 Redis 节点之间的数据同步。

    在主从复制中,有两种角色:主节点 (Master): 主节点负责接收写入操作,并将这些操作同步到从节点。它可以有多个从节点连接到它,并向它们发送复制的数据。从节点 (Slave): 从节点接收主节点的写入操作,将主节点的数据复制到自身。它主要用于读取操作,因为它们可以承担一部分读取负载,减轻了主节点的压力。

  • 28
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值