[数据库] 【无标题】

95 0
Honkers 5 小时前 | 显示全部楼层 |阅读模式

数据库基本概念

1. 数据(Data)

数据是指对客观事物的属性进行描述并可供鉴别的符号记录。

它不仅包括狭义的数值型数字,还包括字母、文字、文本、图形、图像、音频、视频等多种表现形式。数据是信息的原始载体,本身未经加工时意义有限,只有经过处理、解释和组织之后,才能转化为有价值的信息。

要点:

  • 数据是客观事实的反映
  • 数据有多种表现形式,不局限于数字
  • 数据是信息的原材料

2. 数据库(Database,DB)

数据库是按照一定数据结构组织、存储和管理的数据集合。

这些数据被存放在结构化的数据表(Table)中,表由行(记录,Record)和列(字段,Field)构成。数据表之间通过关联字段(外键等)相互连接,共同反映客观事物之间的本质联系。

数据库的核心优势:

  • 数据独立性:应用程序与数据存储相互隔离,互不影响
  • 数据共享性:多用户、多应用可同时访问同一数据库
  • 低冗余度:通过规范化设计,避免数据重复存储
  • 数据一致性:通过约束机制保证数据准确有效

3. 数据库管理系统(Database Management System,DBMS)

数据库管理系统是位于用户(或应用程序)与操作系统之间的一层数据管理软件,用于定义、建立、操纵、控制和维护数据库。

主要功能:

  • 数据定义(DDL):创建、修改、删除数据库对象(表、索引、视图等)
  • 数据操纵(DML):对数据进行增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT)
  • 数据控制(DCL):权限管理、安全性控制
  • 事务管理:保证操作的原子性、一致性、隔离性、持久性(ACID)

常见DBMS:

类型代表产品
开源关系型MySQL、PostgreSQL
商业关系型Oracle、SQL Server、DB2
云原生Amazon RDS、TiDB、Snowflake
NoSQL(非关系型)MongoDB(文档型)、Redis(键值型)、Neo4j(图数据库)

4. 数据库应用程序(Database Application System,DBAS)

数据库应用程序是在数据库管理系统的基础上,使用特定的编程语言和数据库操作语法(如SQL),开发出来的直接面向终端用户的应用软件。

它为用户提供友好的交互界面(图形界面或命令行),使用户无需了解底层数据库技术细节,即可完成数据的录入、查询、修改、删除、统计分析等操作。

典型应用示例:

  • 企业资源计划系统(ERP)
  • 客户关系管理系统(CRM)
  • 电商网站后台订单管理
  • 图书馆借阅管理系统
  • 医院挂号与病历管理系统

DBAS与DBMS的关系:

用户 → 数据库应用程序(DBAS)→ 数据库管理系统(DBMS)→ 数据库(DB)

数据库的类型

数据库可以从多个维度进行分类,最常见的分类方式是按数据模型按部署架构划分。

一、按数据模型分类(最核心的分类方式)

数据模型决定了数据库如何组织、存储和操作数据,是数据库最根本的分类标准。

1. 关系型数据库(Relational Database,RDBMS)

关系型数据库采用关系模型来组织数据,数据以二维表(Table)的形式存储,表与表之间通过主键(Primary Key)和外键(Foreign Key)建立关联。

  • 数据以行(记录)和列(字段) 构成的表格存储

  • 使用结构化查询语言(SQL) 进行数据操作

  • 支持事务(ACID) 特性,保证数据的完整性和一致性

  • 数据之间有严格的约束关系(实体完整性、参照完整性、用户定义完整性)

  • 适用场景: 金融系统、ERP、CRM、电商订单管理、企业信息管理系统等需要强一致性和复杂关联查询的场景

  • 常见产品:

    • MySQL(开源,互联网应用广泛)
    • PostgreSQL(开源,功能最强大的开源关系型数据库)
    • Oracle Database(商业,大型企业级应用)
    • Microsoft SQL Server(商业,Windows生态为主)
    • MariaDB(MySQL的分支,开源)
    • IBM Db2(商业,大型机/金融行业)

2. 非关系型数据库(NoSQL,Not Only SQL)

NoSQL数据库是为了应对关系型数据库在高并发、海量数据、灵活数据结构等场景下的局限性而发展起来的。它不强制使用SQL,且通常不要求固定的表结构

(1)键值型数据库(Key-Value Store)

数据以键值对(Key-Value Pair) 的形式存储,通过Key快速访问对应的Value。Value可以是任意类型的数据(字符串、JSON、二进制文件等)。

  • 结构简单,读写性能极高(通常基于内存)

  • 水平扩展能力强

  • 不支持复杂的查询条件,通常只能通过Key进行查询

  • 适用场景: 缓存、会话管理(Session)、配置存储、分布式锁

  • 常见产品: Redis、Memcached、Amazon DynamoDB(键值模式)、Etcd

(2)文档型数据库(Document Store)

文档(Document) 为基本存储单元,通常使用JSON、BSON、XML等格式存储半结构化数据。每个文档可以拥有独立的字段结构,不需要预先定义Schema。

  • Schema灵活,字段可动态增减

  • 文档结构更接近面向对象的数据模型,与应用程序代码亲和度高

  • 支持文档内部的嵌套查询,但多文档关联查询能力较弱

  • 适用场景: 内容管理系统(CMS)、博客平台、用户画像、物联网数据采集、日志存储

  • 常见产品: MongoDB、CouchDB、Amazon DocumentDB

(3)列族型数据库(Column-Family Store / Wide-Column Store)

数据以列族(Column Family) 为单位进行组织,每一行可以有不同数量的列,且列是动态的。它并非将一张大表完整存储,而是按列族分别存储,适合读写少数列的场景。

  • 适合海量数据的随机读写和批量分析

  • 压缩率高,I/O效率好

  • 支持横向扩展到上千节点

  • 适用场景: 大数据分析、日志处理、时序数据、推荐系统

  • 常见产品: Apache Cassandra、HBase(基于Hadoop)、Google Bigtable

(4)图数据库(Graph Database)

节点(Node)边(Edge) 为核心数据结构来存储实体及其之间的关系。关系在图中是一等公民,可以被直接查询和遍历。

  • 关系查询效率极高,尤其适合多跳关联查询

  • 数据模型直观,符合人类对关系的认知

  • 支持图论算法(最短路径、社区发现、PageRank等)

  • 适用场景: 社交网络关系分析、知识图谱、推荐引擎(如"好友的好友")、反欺诈(资金链路追踪)

  • 常见产品: Neo4j、Amazon Neptune、JanusGraph、ArangoDB

3. NewSQL 数据库

NewSQL是一类兼具关系型数据库的ACID事务能力与NoSQL的横向扩展能力的新型数据库。它在保留SQL接口和关系模型的同时,解决了传统关系型数据库在分布式环境下的扩展瓶颈。

  • 支持完整的SQL语法和ACID事务

  • 具备分布式架构,可以水平扩展

  • 通常采用分布式一致性协议(如Raft、Paxos)保证高可用

  • 适用场景: 对事务一致性和高并发写入同时有严格要求的互联网核心业务(如金融交易、电商库存扣减)

  • 常见产品: TiDB(开源)、Google Spanner、CockroachDB、OceanBase(蚂蚁集团)

二、按部署架构分类

1. 单机数据库

数据库运行在单台服务器上,所有数据存储和查询处理都在本地完成。结构简单,成本低,但存在单点故障风险,性能和容量受限于单机硬件。

2. 分布式数据库

数据库由多个节点组成一个逻辑上的整体,数据分布在多台服务器上。具备高可用性、高扩展性和容错能力。上述NewSQL和绝大多数NoSQL都属于分布式数据库。

3. 云原生数据库

基于云基础设施构建,充分利用云计算的弹性伸缩、按需付费、托管服务等特性。用户无需关心底层硬件和运维,只需关注数据本身。

  • 常见产品: Amazon RDS、Amazon Aurora、Google Cloud SQL、Azure SQL Database、阿里云 PolarDB

三、按应用场景分类(补充视角)

类型说明典型产品
OLTP(联机事务处理)面向日常交易,高并发、低延迟、强一致性MySQL、PostgreSQL、Oracle
OLAP(联机分析处理)面向数据分析与决策支持,海量数据复杂查询ClickHouse、Apache Druid、Greenplum
HTAP(混合事务分析处理)同时支持事务处理和实时分析TiDB、OceanBase
时序数据库针对时间序列数据优化(监控指标、传感器数据)InfluxDB、TimescaleDB、Prometheus
内存数据库数据常驻内存,追求极致读写速度Redis、Memcached、SAP HANA
搜索引擎数据库面向全文检索和倒排索引Elasticsearch、Solr

四、关系型数据库 vs NoSQL 对比总结

对比维度关系型数据库(RDBMS)NoSQL
数据模型二维表,固定Schema灵活,文档/键值/列族/图等多种模型
SQL支持完整支持部分支持或不支持
ACID事务完整支持多数弱支持或最终一致性
扩展性纵向扩展为主横向扩展为主
关联查询能力强(JOIN)
适用数据量GB ~ TB 级别TB ~ PB 级别
典型场景金融、ERP、电商交易缓存、日志、社交图谱、大数据分析

五、选型建议(一句话总结)

没有最好的数据库,只有最适合场景的数据库。

  • 需要强一致性和复杂关系查询 → 选关系型数据库
  • 需要高并发缓存或灵活数据模型 → 选NoSQL
  • 需要同时兼顾事务和扩展性 → 选NewSQL
  • 追求免运维、弹性伸缩 → 选云原生数据库

DDL:
创建表格
create table 表名(列名 类型, 列名 类型)

删除表
drop table 表名

修改表_表名
alter table 旧表名 rename 新表名

修改表_列名

alter table 表名 change column 旧列名 新列名 类型

修改表_列类型

alter table 表名 modify 列名 新类型

修改表_添加新列

alter table 表名 add column 列名 类型

修改表_删除列

alter table 表名 drop column 列名

约束


添加主键

alter table 表名 add primary key()

添加自增长

alter table 表名 modify 主键 类型 auto_increment

删除主键

alter table 表名 drop primary key

删除自增长

alter table 表名 modify 主键 类型

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行