【赵渝强老师】什么是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是同一条记录。

相关推荐
Q_97095639几秒前
java+vue+SpringBoo足球社区管理系统(程序+数据库+报告+部署教程+答辩指导)
java·开发语言·数据库
行星00821 分钟前
PostgreSQL大表创建分区实战
数据库·postgresql
isNotNullX38 分钟前
什么是数据分析?常见方法全解析
大数据·数据库·数据仓库·人工智能·数据分析
唐可盐1 小时前
第六章 SQL编程系列-Gbase8a从入门到进阶
数据库·sql·gbase8a
旷世奇才李先生1 小时前
SQLite 安装使用教程
数据库·sqlite
码小跳2 小时前
软件无法连接MySql数据库
数据库·mysql
晋阳十二夜7 小时前
【压力测试之_Jmeter链接Oracle数据库链接】
数据库·oracle·压力测试
EasyCVR9 小时前
SQLite不够用?视频汇聚系统EasyCVR切换MySQL数据库的关键参数怎么调?
数据库·mysql·sqlite
GDAL9 小时前
Node.js v22.5+ 官方 SQLite 模块全解析:从入门到实战
数据库·sqlite·node.js
DCTANT10 小时前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss