
NoSQL数据库
文章平均质量分 76
分享NoSQL数据库相关知识
赵渝强老师
20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大数据、数据库、中间件技术和Java技术。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【赵渝强老师】Redis的主从复制集群
Redis的主从复制是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为Master主节点,后者称为Slave从节点。数据的复制是单向的,只能由主节点到从节点。一个主节点可以有多个从节点或者没有从节点,但一个从节点只能有一个主节点。Redis主从复制的架构有两种不同的方式,即星型模型与线型模型。下面通过具体的步骤来演示如何基于三个节点来部署星型模型的Redis主从复制。(3)使用Redis的客户端登录Redis主从复制的主节点。(5)在主节点上写入数据,验证从节点上是否能够读取出数据。原创 2025-07-17 22:00:23 · 300 阅读 · 0 评论 -
【赵渝强老师】HBase的物理存储结构
HBase的存储结构分为逻辑存储结构与物理存储结构,并且HBase通过逻辑存储结构来管理物理存储结构。而最终物理存储对应的文件又是存储在HDFS之上。而HBase的物理存储结构主要包括StoreFile、HFile和HLog日志。【赵渝强老师】HBase的存储结构。原创 2025-05-30 10:59:20 · 803 阅读 · 0 评论 -
【赵渝强老师】HBase的逻辑存储结构
HBase的逻辑存储结构主要包括:命名空间(NameSpace)、表(Table)和列族(Column Family)。【赵渝强老师】HBase的存储结构下面分别进行介绍。原创 2025-05-29 10:17:04 · 800 阅读 · 0 评论 -
【赵渝强老师】HBase的体系架构
HBase是大表(BigTable)思想的一个具体实现。它是一个列式存储的NoSQL数据库,适合执行数据的分析和处理。简单来说,就是适合执行查询操作。从体系架构的角度看,HBase是一种主从架构,包含:HBase HMaster、Region Server和ZooKeeper,下图展示了这一架构。【赵渝强老师】HBase的体系架构下面详细讨论HBase体系架构中每一个组成部分的作用。原创 2025-05-27 12:19:05 · 1090 阅读 · 0 评论 -
【赵渝强老师】Memcached的路由算法
Memcached支持两种不同方式的客户端路由算法,即:求余数Hash算法和一致性Hash算法。下面分别进行介绍。原创 2025-05-18 10:56:17 · 974 阅读 · 0 评论 -
【赵渝强老师】管理MongoDB的运行
MongoDB提供了mongod命令用于启动MongoDB服务器端;而停止MongoDB服务器却可以通过几种不同的方式完成。下面分别进行介绍。原创 2025-03-08 09:03:32 · 531 阅读 · 0 评论 -
【赵渝强老师】监控Redis
对运行状态的Redis实例进行监控是运维管理中非常重要的内容,包括:监控Redis的内存、监控Redis的吞吐量、监控Redis的运行时信息和监控Redis的延时。通过Redis提供的监控命令便能非常方便地实现对各项指标的监控。原创 2025-03-04 18:59:48 · 782 阅读 · 0 评论 -
【赵渝强老师】什么是NoSQL数据库?
随着大数据技术的兴起,NoSQL数据库得到了广泛的应用。NoSQL的全称是Not Only SQL,中文含义是不仅仅是SQL。它泛指所有的非关系型数据库,即:在NoSQL数据库中存储数据的模型可能不是二维表的行和列。NoSQL数据库不遵循关系型数据库范式的要求,因此在NoSQL数据库中可能会造成数据的冗余。【赵渝强老师】什么是NoSQL数据库?原创 2025-01-11 18:54:43 · 1063 阅读 · 0 评论 -
【赵渝强老师】Redis的慢查询日志
Redis慢查询日志帮助开发和运维人员定位系统存在的慢操作。慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(慢查询ID,发生时间戳,耗时,命令的详细信息)记录下来。Redis客户端的一条命令可以分为四个部分执行,如下图所示。【赵渝强老师】Redis的慢查询日志一条Redis的慢查询日志由以下四个属性组成:标识ID,发生时间戳,命令耗时,执行命令和参数。提示:需要注意的是,慢查询日志只是统计执行命令的时间,所以慢查询并不代表客户端没有超时问题。原创 2025-01-09 16:43:36 · 713 阅读 · 0 评论 -
【赵渝强老师】MongoDB写入数据的过程
在检查点(Checkpoint)操作开始时,WiredTiger存储引擎将提供指定时间点的数据库快照,该快照反映的是MongoDB当前内存中的数据情况。当向磁盘写入数据时,WiredTiger存储引擎将快照中的所有数据以一致性方式写入到MongoDB的数据文件上,并保证数据文件和内存数据是一致性的。当新的检查点创建成功后,WiredTiger存储引擎以原子方式更新元数据表使其引用新创建的检查点,同时会将老的检查点占用的磁盘空间释放。然后在创建检查点操作开始时,再将日志文件中记录的操作刷新到数据文件。原创 2025-01-04 10:32:17 · 539 阅读 · 0 评论 -
【赵渝强老师】MongoDB文档级别的并发控制
MongoDB在执行写操作时,WiredTiger存储引擎会在文档级别进行并发控制。换句话说在同一时间点上,多个写操作能够修改同一个集合中的不同文档;这意味着如果当前文档正在被修改,其他写操作必须等待该文档上的写操作完成之后才能进行修改。当WiredTiger存储引擎探测到两个操作之间发生了冲突,将会产生一个写冲突并将会重新执行操作。在了解到了MongoDB的并发控制机制以后,下面通过一个示例来演示如何监控MongoDB锁的信息。提示:从锁的信息可以看出,此时在数据库级别和集合级别产生了大量的写锁信息。原创 2025-01-01 15:16:52 · 468 阅读 · 0 评论 -
【赵渝强老师】MongoDB的Journal日志
Journal日志用于记录上一个检查点之后发生的数据更新,并将更新的信息顺序写入Journal日志文件中。当缓冲区中的日志信息超过了设定的128KB,才会将其写入到Journal日志文件中。此时,MongoDB会重新执行从上一个检查点之后发生的数据更新操作,将数据还原到Journal日志记录的一致性状态。提示:在默认情况下,MongoDB已经启用了Journal日志记录,如果没有启用可以通过在启动MongoDB服务器时指定参数–journal来启动Journal日志记录。原创 2024-12-28 20:38:07 · 640 阅读 · 0 评论 -
【赵渝强老师】MongoDB逻辑存储结构
MongoDB的逻辑存储结构是一种层次结构,主要包括了三个部分,即:数据库(Database)、集合(Collection,也可以叫做表)和文档(Document,也可以叫做记录)。MongoDB的逻辑存储结构是面向用户使用的,使用mongoshell或者应用程序操作MongoDB时,主要就是操作的MongoDB逻辑存储结构。数据库(Database)、集合(Collection)和文档(Document)的层次结构如下图所示。【赵渝强老师】MongoDB的逻辑存储结构。原创 2024-12-25 12:14:09 · 544 阅读 · 0 评论 -
【赵渝强老师】Redis的AOF数据持久化
Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出会造成服务器中的数据库状态也会消失。所以 Redis 提供了数据持久化功能。Redis支持两种方式的持久化,一种是RDB方式;另一种是AOF(append-only-file)方式。两种持久化方式可以单独使用,也可以将这两种方式结合使用。【赵渝强老师】Redis的数据持久化AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。原创 2024-11-08 11:46:38 · 1068 阅读 · 0 评论 -
【赵渝强老师】Redis的RDB数据持久化
Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出会造成服务器中的数据库状态也会消失。所以 Redis 提供了数据持久化功能。Redis支持两种方式的持久化,一种是RDB方式;另一种是AOF(append-only-file)方式。两种持久化方式可以单独使用,也可以将这两种方式结合使用。【赵渝强老师】Redis的数据持久化这里重点讨论一下Redis的RDB数据持久化。RDB持久化是Redis默认的持久化方式。原创 2024-11-07 09:51:00 · 735 阅读 · 0 评论 -
【赵渝强老师】安装部署Memcached
Memcached通过在内存里维护一个统一的巨大的Hash表来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。下面以Memcached 1.6.15来演示如何安装,在其官方的网站上提供了下面的地址和安装部署的说明。(9)编辑文件/etc/profile设置Memcached的环境变量,在文件最后添加下面的内容。(2)下载Memcached的安装包文件:memcached-1.6.15.tar.gz。(6)配置Memcached的安装目录。(7)执行Memcached的安装。原创 2024-11-06 17:04:57 · 279 阅读 · 0 评论 -
【赵渝强老师】Memcached的数据存储方式
Memcached是一个高性能的分布式的内存对象缓存系统。Memcached通过在内存里维护一个统一的巨大的Hash表来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。但是Memcached不能将数据进行持久化,因此严格意义来说,Memcached只能叫做一个缓存技术,而不能叫做数据库。然后在1M的Slab空间里根据保存数据的大小再划分相同大小的Chunk。换句话说,Memcached在保存数据之前需要先为数据分片内存存储的空间。下图说明了Memcached的数据存储方式。原创 2024-11-05 09:59:02 · 188 阅读 · 0 评论 -
【赵渝强老师】MongoDB的WiredTiger存储引擎
WiredTiger提供文档级别(Document-Level)的并发控制,检查点(CheckPoint),数据压缩和本地数据加密( Native Encryption)等功能。从MongoDB 3.2 版本开始,WiredTiger成为MongDB默认的Storage Engine。【赵渝强老师】MongoDB的WiredTiger存储引擎下面将详细讨论WiredTiger存储引擎的功能特性。原创 2024-09-02 09:22:20 · 1420 阅读 · 0 评论 -
【赵渝强老师】MongoDB的In-Memory存储引擎
提示:虽然In-Memory存储引擎不会向文件系统写入数据,但是它任然需要使用–dbpath参数指定一个目录用于存储少量的元数据和诊断日志。MongoDB的In-Memory存储引擎将会把数据存储在内存中。除了少量的元数据和诊断日志以外,In-Memory存储引擎不会维护任何存储在硬盘上的数据,从而避免硬盘的读写操作,以减少数据查询的延迟,从而提高性能。提示:因为使用In-Memory存储引擎,MongoDB不会执行数据的持久化操作。(1)创建目录用于保存In-Memory存储引擎的元数据和诊断日志。原创 2024-09-01 09:47:35 · 914 阅读 · 0 评论 -
【赵渝强老师】MongoDB的MMAPv1存储引擎
名称空间的元数据里包含指向第一个及最后一个extent的位置指针,通过这些信息,就可以遍历一个名称空间下的所有extent数据。每个Database可以包含多个Namespace名称空间文件,该名称空间对应MongoDB中的集合,名称空间文件文件实际上是一个Hash表,可用于快速定位某个集合的起始位置。每个Extent包含多个Record,该Record对应MongoDB集合中的Document),同一个Extent下的所有Record以双向链表形式组织。(6)查看目录/data/mmapv1下的文件。原创 2024-08-31 09:25:12 · 913 阅读 · 0 评论 -
【赵渝强老师】MongoDB的存储引擎
存储引擎(Storage Engine)是MongoDB的核心组件,它负责管理数据如何存储在硬盘(Disk)和内存(Memory)上。从MongoDB 3.2 版本开始,MongoDB支持多种类型的数据存储引擎。提示:在MongoDB 3.x支持WiredTiger、MMAPv1和In-Memory的存储引擎。我们将在后续的更新中,为大家详细介绍这三种存储引擎的功能。【赵渝强老师】MongoDB的存储引擎。原创 2024-08-30 07:44:53 · 762 阅读 · 0 评论 -
【赵渝强老师】Redis的管道Pipeline
管道PipeLine通过减少客户端与Redis服务器端的通信次数来实现降低往返延时时间,而且管道PipeLine 实现的原理是队列,而队列的原理是时先进先出,这样就保证数据的顺序性。提示:管道PipeLine在某些场景下非常有用,比如有多个命令需要被"及时的"提交,而且他们对相应结果没有互相依赖,对结果响应也无需立即获得,那么管道PipeLine就可以充当这种"批处理"的工具;而且在一定程度上,可以较大的提升性能,性能提升的原因主要是TCP连接中减少了"交互往返"的时间。原创 2024-08-29 11:10:36 · 935 阅读 · 0 评论 -
【赵渝强老师】部署MongoDB复制集
在了解到了MongoDB复制集的体系架构以后,下面将通过具体的步骤来演示如何搭建单个节点的MongoDB复制集环境。提示:MongoDB复制集经过选举后,27017的节点被选举成了主库,而27018和27019的节点成为了从库。提示:在默认情况下,MongoDB复制集的从库是不可用的,需要手动启用从库。这说明MongoDB复制集正在执行选举的操作,此时的三个节点都是从库。(9)创建复制集的配置信息,将各个节点添加到复制集配置信息中。提示:在MongoDB复制集的环境中从库是只读的状态。原创 2024-08-14 09:40:43 · 626 阅读 · 0 评论 -
【赵渝强老师】MongoDB复制集中的成员
在某些情景下,在选举过程中可能有某个瞬间存在多个主库的情况,例如当网络出现问题时。当这种情况出现时,MongoDB复制集会将其中一个主库降级为从库,而对于客户端应用程序来说会察觉到主库降级所造成的数据过期以进行回滚操作。当前从库出现问题的时候,MongoDB复制集还可以对客户端应用程序隐藏从库,从而使得客户端无法访问该从库。MongoDB的复制集中主要包括三个成员,即:主库、从库和仲裁者。数据库管理员也可以在复制集中添加一个MongoDB的实例,作为复制集的仲裁者。提示:优先级为0的从库不能被选举为主库。原创 2024-08-13 11:52:15 · 335 阅读 · 0 评论 -
【赵渝强老师】MongoDB复制集的体系架构
MongoDB复制集由一组MongoDB实例组成,其中包含一个Primary节点和多个Secondary节点,MongoDB 客户端的Driver通过使用Primary节点来写入文档数据,而Secondary节点会自动从Primary节点同步写入的数据,以保持复制集内所有成员存储相同的文档数据,从而提供系统整体数据的高可用。当主库出现故障变得不可用时,MongoDB复制集中一个的从库可以通过选举的方式会成为新的主库。MongoDB的复制就是数据文档在多个MongoDB服务器节点直接进行数据同步的过程。原创 2024-08-12 11:34:51 · 442 阅读 · 0 评论 -
【赵渝强老师】Redis消息的生产者消费者模式
Redis List的主要操作为lpush/lpop/rpush/rpop四种,分别代表从头部和尾部的push/pop,除此之外List还提供了两种pop操作的阻塞版本blpop/brpop,用于阻塞获取一个对象。生产者将消息数据添加到List结构中,消费者通过rpop或者brpop消费消息,brpop是阻塞的方式,可以设置等待时长。一般来说消息队列有两种场景,一种是发布者订阅者模式,而另一种是生产者消费者模式。下面的通过具体的步骤来演示如何使用Redis消息机制的生产者消费者模式。原创 2024-08-11 13:05:01 · 348 阅读 · 0 评论 -
【赵渝强老师】Redis的消息发布与订阅
发布者和订阅者通过channel频道进行解偶, 订阅者监听某个channel的消息,当发布者向该channel推送消息时,订阅该channel的消费者都可以收到消息。由于Redis支持的消息类型是广播类型的消息,因此这里需要开启三个会话的窗口。一个作为消息的发布者,另外两个作为消息的订阅者。在发布者和订阅者模式下,Redis维护一个数据字典pubsub_channels用于保存channel以及订阅者的关系,结构如下图所示。(3)此时在消息订阅者的两个会话窗口中将成功接收到发布的消息,如下图所示。原创 2024-08-10 10:05:19 · 353 阅读 · 0 评论 -
【赵渝强老师】MongoDB的客户端工具
MongoDB是一个基于分布式文件存储的NoSQL数据库,它也是最像关系型数据库的NoSQL数据库。MongoDB官方提供了两个客户端工具:一个是命令行客户端工具mongoshell;另一个是图形化免费工具MongoDB Compass。【赵渝强老师】MongoDB的客户端工具下面分别介绍。原创 2024-08-02 10:17:08 · 1342 阅读 · 0 评论 -
【赵渝强老师】Redis的存储结构
每个Redis数据库都会有一个编号,该编号从0开始计算。当使用Redis客户端连接Redis服务器时,默认将连接到0号数据库中。可以通过使用select语句进数据库的切换。Redis内部默认存在16个数据库,这是通过在redis.conf文件中的参数databases决定的。Redis的存储结构如下图所示。【赵渝强老师】Redis的存储结构。原创 2024-08-02 10:15:47 · 246 阅读 · 0 评论 -
【赵渝强老师】HBase的体系架构
在学习HBase的体系架构之前,需要先了解一下HBase中的一些术语。这些术语如下表所示。从体系架构的角度看,HBase是一种主从架构,包含:HBase HMaster、Regionserver和ZooKeeper。【赵渝强老师】HBase的体系架构下图展示了这一架构。下面详细讨论HBase体系架构中每一个组成部分的作用。原创 2024-08-01 10:44:44 · 597 阅读 · 0 评论 -
【赵渝强老师】HBase的表结构
简单来说就是把所有的数据存入一张表中,这样做的目的就是为了提高查询的性能。这样设计是有实际意义的,因为在早些年的时候,存储的介质是比较昂贵的,需要考虑成本的问题。HBase的表由列族组成,上图的“emp”和“dept”都是列族,列族中包含列。HBase就是BigTable大表思想的一个具体实现,并且它是一个列式存储的NoSQL数据库适合执行数据的分析和处理。如果把上图中的部门-员工数据存入HBase的表中,那将会是什么样的呢?例如,如果要得到上图所示的表结构和数据,可以在HBase中执行下面的语句。原创 2024-08-01 10:37:52 · 289 阅读 · 0 评论 -
【赵渝强老师】MongoDB的安装与访问
MongoDB是一个基于BSON文档的NoSQL数据库,下面的步骤将在Linux的操作系统上安装和部署MongoDB。(3)解压MongoDB Database Tools安装包文件,并将MongoDB提供的工具复制到目录“/root/mongodb5/bin/”下。提示:从输出的信息可以看出,在默认情况下MongoDB服务器将监听27017的端口,也可以通过使用下面的命令确定MongoDB服务器监听的端口。提示:在默认的情况下,MongoDB服务器将使用目录“/data/db”来存储服务器端的数据。原创 2024-08-01 10:24:04 · 432 阅读 · 0 评论 -
【赵渝强老师】Redis的安装与访问
修改/root/training/redis/conf/redis.conf的文件。(4)将Redis的配置文件redis.conf复制到/root/training/redis/conf目录下。(6)使用vi编辑器修改/root/training/redis/conf/redis.conf的文件。(8)进入Redis的安装目录,执行bin目录下的redis-server命令启动Redis。(9)查看文件/root/training/redis/redis.log的内容。(1)创建Redis的安装目录。原创 2024-08-01 10:16:45 · 439 阅读 · 0 评论 -
【赵渝强老师】MongoDB的存储结构
MongoDB是一个可移植的NoSQL数据库,它几乎可以运行在所有的操作系统之上,从而实现了跨平台性。尽管在不同的操作系统上虽然略有差别,但是从整体上来看,MongoDB在不同的操作系统平台上的体系架构(如数据逻辑结构和数据存储等等)都是一样的。一个运行着的MongoDB数据库就可以看成是一个MongoDB服务器,该服务器由MongoDB数据库实例和MongoDB数据库组成。在一般情况下,一个MongoDB数据库实例可以对应有多个MongoDB数据库,这一点与MySQL数据库类似。如下图所示。原创 2024-07-31 17:36:48 · 568 阅读 · 0 评论 -
【赵渝强老师】基于Redis的旁路缓存架构
缓存的作用是将应用程序已经访问过的内容或数据存储起来,当应用程序再次访问时先找缓存,缓存命中返回数据。不命中再查询数据库,并保存到缓存。一般情况下数据存在数据库中,应用程序直接操作数据库。下图展示了引入缓存后系统的架构。通过使用缓存可以提升访问性能、降低网络拥堵、减轻服务负载和增强可扩展性。【赵渝强老师】基于Redis的旁路缓存架构。原创 2024-07-31 13:22:13 · 201 阅读 · 0 评论