从关系型数据库和非关系型数据库说起

文章目录

  • [1. 非关系型数据库介绍](#1. 非关系型数据库介绍)
    • [1.1 特点与优势](#1.1 特点与优势)
    • [1.2 类型与应用场景](#1.2 类型与应用场景)
    • [1.3 适用性与限制](#1.3 适用性与限制)
  • [2. 非关系型数据库的细节](#2. 非关系型数据库的细节)
    • 2.1.认识NoSQL
    • [2.2 查询方式](#2.2 查询方式)
    • [2.3 事务](#2.3 事务)
    • [2.4 对比](#2.4 对比)
  • [3. Redis](#3. Redis)

1. 非关系型数据库介绍

非关系型数据库(NoSQL)是一种数据库管理系统,它采用了非传统的表格关系模型,与传统的关系型数据库(如SQL数据库)不同。非关系型数据库通常以键值对、文档、列族、图形等形式存储数据,以适应对大数据量、高并发性、分布式部署等需求的处理。

1.1 特点与优势

  1. 灵活的数据模型:非关系型数据库可以支持多种数据模型,如键值对、文档、列族、图形等,适用于不同类型和结构的数据存储需求。

  2. 高性能和可伸缩性:非关系型数据库通常设计为分布式系统,能够水平扩展,支持处理大规模数据和高并发访问。

  3. 无需预定义模式:与关系型数据库需要定义表结构不同,非关系型数据库通常无需事先定义数据模式,能够灵活地存储和处理各种数据格式。

  4. 适应大数据应用:非关系型数据库适用于处理大规模数据、半结构化数据和非结构化数据,能够应对大数据应用场景的需求。

1.2 类型与应用场景

  1. 键值对型数据库(Key-Value Stores):如Redis、Memcached,适用于缓存、会话管理等场景。

  2. 文档型数据库(Document Stores):如MongoDB、Couchbase,适用于内容管理、博客平台等场景。

  3. 列族型数据库(Column Stores):如HBase、Cassandra,适用于分布式存储、数据分析等场景。

  4. 图形型数据库(Graph Databases):如Neo4j、ArangoDB,适用于社交网络、推荐系统等场景。

1.3 适用性与限制

  1. 数据一致性:部分非关系型数据库在追求性能和可伸缩性时可能牺牲了一致性,需要在应用设计中进行权衡。

  2. 查询能力:相比关系型数据库,非关系型数据库在复杂查询和事务处理上可能表现较弱。

  3. 学习成本:非关系型数据库通常需要开发人员具备新的技能和经验,学习成本相对较高。

非关系型数据库以其灵活的数据模型、高性能和可伸缩性等优势,在大数据处理和分布式应用中有着广泛的应用前景,但也需要根据具体的应用场景和需求进行选择和权衡。

2. 非关系型数据库的细节

2.1.认识NoSQL

NoSql 可以翻译做 Not Only Sql(不仅仅是SQL),或者是 No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库

2.2 查询方式

传统关系型数据库会基于 Sql 语句做查询,语法有统一的标准;

而不同的非关系数据库查询语法差异很大,实现语法是各种各样的。

例如:

redis: get people 1

MongDB: db.users.find({_id:1})

elesticasearch: GET http://localhost:9200/users/10

2.3 事务

传统关系型数据库 能满足事务 ACID 的原则。

非关系型数据库 往往不支持事务,或者 不能严格保证 ACID 的特性,只能实现基本的一致性。

2.4 对比

SQL NoSQL
数据结构 结构化 非结构化
数据关联 关联的 无关联的
查询方式 SQL查询 非SQL
事务特性 ACID BASE

3. Redis

Redis 诞生于2009年全称是 Re mote D ictionary Server 远程词典服务器,是一个基于内存的键值型NoSQL数据库。

特征

  • 键值(key-value)型,value支持多种不同数据结构,功能丰富
  • 单线程,每个命令具备原子性
  • 低延迟,速度快(基于内存.IO多路复用.良好的编码)。
  • 支持数据持久化
  • 支持主从集群.分片集群
  • 支持多语言客户端

Redis的官方网站地址:https://redis.io/

从本篇文章开始, 我们将要踏上对 Redis 探索的奇幻之旅.

相关推荐
forestsea4 分钟前
全解:Redis RDB持久化和AOF持久化
数据库·redis·缓存
叫我DPT5 分钟前
分享一个python启动文件脚本(django示例)
数据库·python·django
小五Z34 分钟前
Redis--事务
redis·分布式·后端·缓存
XXYBMOOO1 小时前
基于 Qt 的 BMP 图像数据存取至 SQLite 数据库的实现
数据库·c++·qt
Sunlight_7771 小时前
第五章 SQLite数据库:1、SQLite 基础语法及使用案例
java·linux·服务器·jvm·数据库·tcp/ip·sqlite
JhonKI1 小时前
【从零实现高并发内存池】内存池整体框架设计 及 thread cache实现
java·redis·缓存
嘉嘉king1 小时前
Mysql联表查询
数据库
镜舟科技2 小时前
NoSQL 与 NewSQL 全面对比:如何选择适合你的数据库方案?
数据库·starrocks·nosql·newsql·技术架构·实时数据分析
TDengine (老段)2 小时前
TDengine 语言连接器(Node.js)
大数据·c语言·数据库·物联网·node.js·时序数据库·tdengine
洛神灬殇2 小时前
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 时间事件处理部分)
redis·后端