【赵渝强老师】什么是NoSQL数据库?

随着大数据技术的兴起,NoSQL数据库得到了广泛的应用。NoSQL的全称是Not Only SQL,中文含义是不仅仅是SQL。它泛指所有的非关系型数据库,即:在NoSQL数据库中存储数据的模型可能不是二维表的行和列。NoSQL数据库不遵循关系型数据库范式的要求,因此在NoSQL数据库中可能会造成数据的冗余。视频讲解如下:

视频讲解如下
【赵渝强老师】什么是NoSQL数据库?

下面介绍几个常见的NoSQL数据库:

Redis

​Redis是基于内存的NoSQL数据库,不论读写操作都是在内存上完成的,完全吊打磁盘数据库的速度。Redis之所以可以使用单线程来处理,其中的一个原因是,内存操作对资源损耗较小,保证了处理的高效性。Redis之所以具体很高的性能主要得益于以下几点:

(1)纯内存操作

一般都是简单的存取操作,线程占用的时间很少,时间的花费主要集中在IO上,所以读取速度快。

(2)采用单线程模型

Redis采用了单线程模型从而保证了每个操作的原子性,也减少了线程的上下文切换和竞争。

(3)使用IO多路复用模型

非阻塞I/O,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,Redis采用自己实现的事件分离器,效率比较高。

(4)高效数据结构

整个 Redis就是一个全局哈希表,它的时间复杂度是o(1),而且为了防止哈希冲突导致链表过长,Redis会执行再哈希操作,扩充哈希桶数量,减少哈希冲突。并且防止一次性重新映射数据过大导致线程阻塞,采用渐进式再哈希。巧妙的将一次性拷贝分摊到多次请求过程后总,避免阻塞。Redis全程使用哈希结构,读取速度快并且对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如使用有序的数据结构加快读取的速度。可以根据实际存储的数据类型选择不同编码。

MongoDB

MongoDB是基于BSON文档的NoSQL数据库。它是NoSQL中功能最丰富、最像关系型数据库的NoSQL数据库。

MongoDB是一个基于分布式文件存储的NoSQL数据库,由C++语言编写。MongoDB旨在为Web应用程序提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品,它是非关系型数据库当中功能最丰富、最像关系型数据库的NoSQL数据库。它所支持的数据结构非常松散,其数据结构是类似JSON的BSON格式数据。因此,MongoDB是一种文档型的NoSQL数据库,因此可以存储比较复杂的数据类型。

Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

HBase

HBase是Hadoop中基于HDFS之上的列式存储NoSQL数据库。HBase就是大表思想的一个具体实现。它是一个列式存储的NoSQL数据库,适合执行数据的分析和处理。简单来说,就是适合执行查询操作。下图展示了HBase的表结构。

HBase的表由列族组成,比如上图中的的emp和dept都是列族。列族中包含列,创建表的时候必须创建列族,不需要创建列。当执行插入语句插入数据到列族中的时候,需要指定rowkey和具体的列。如果列不存在,HBase会自动创建相应的列,再把数据插入到对应的单元格上。这里的rowkey相当于关系型数据库的主键。但是与主键不同的是,rowkey与关系型数据库类似不允许为空,但是可以重复的。如果rowkey重复了,表示相同的rowkey是同一条记录。

相关推荐
YGGP1 分钟前
MySQL 的事务
数据库·mysql
一 乐2 小时前
网红酒店|基于java+vue的网红酒店预定系统(源码+数据库+文档)
java·开发语言·数据库·毕业设计·论文·springboot·网红酒店预定系统
Alfadi联盟 萧瑶3 小时前
Python-用户账户与应用程序样式
数据库·sqlite
影子24016 小时前
Navicat导出mysql数据库表结构说明到excel、word,单表导出方式记录
数据库·mysql·excel
java_heartLake7 小时前
PostgreSQL15深度解析(从15.0-15.12)
数据库·postgresql
nuc-1279 小时前
sqli-labs学习记录8
数据库·学习·sqli-labs
余华余华10 小时前
计算机等级考试数据库三级(笔记3)
服务器·数据库·oracle
南風_入弦11 小时前
Oracle logminer详解
数据库·oracle·恢复
小安同学iter12 小时前
SpringBoot (二) 日志系统
数据库·spring boot·后端
Chandler2412 小时前
Redis:事务
数据库·redis·缓存