数据库学习笔记1——数据类型与数据库类型

📅 2026/7/5 13:24:38
数据库学习笔记1——数据类型与数据库类型
1. 两种分类维度在学习数据库时容易混淆两组概念结构化、半结构化、非结构化数据关系型数据库、非关系型数据库这两组概念不是同一个维度。结构化 / 半结构化 / 非结构化描述的是数据本身的组织形式。关系型 / 非关系型数据库描述的是数据库存储和管理数据的方式。简单来说数据是否结构化看的是“数据长什么样”数据库是否关系型看的是“数据库怎么组织和查询数据”。2. 按数据结构分类2.1 结构化数据结构化数据是指格式固定、字段明确的数据通常可以用二维表来表示。例如学生信息表学号姓名年龄专业001张三22软件工程002李四23计算机科学这类数据的特点是每条数据都有固定字段字段类型通常比较明确适合用表格存储适合使用 SQL 进行查询和统计。常见例子用户信息商品信息订单数据成绩数据银行流水库存数据例如SELECT * FROM students WHERE age 20;这种查询适合结构化数据。2.2 半结构化数据半结构化数据有一定的结构但不像二维表那样严格。它通常有字段名但不同记录之间字段可以不完全相同。典型代表是 JSON、XML、HTML、日志数据等。例如 JSON 数据{ name: 张三, age: 22, skills: [Java, Python, LLM] }另一条数据可能是{ name: 李四, school: 西安交通大学, interests: [AI, Database] }可以看到两条记录都有一定结构但字段不完全一致。半结构化数据的特点是有字段名结构比表格灵活不同记录可以有不同字段适合存储变化较快、结构不固定的数据。常见例子JSON 数据XML 文件日志文件网页 HTMLMongoDB 文档2.3 非结构化数据非结构化数据是指没有固定表格结构的数据。常见例子图片视频音频PDFWord 文档聊天记录论文全文网页文章例如一张图片、一段视频、一个 PDF 文件本身并不能直接像数据库表一样查询。如果想查询非结构化数据中的内容通常需要先进行处理例如对图片进行图像识别对 PDF 进行文本抽取对音频进行语音识别对文本进行分词、向量化或语义理解对文档生成 embedding 后放入向量数据库。例如在 RAG 系统中PDF、Word、网页文本通常属于非结构化数据需要经过解析、分块、向量化后才能用于语义检索。3. 按数据库模型分类3.1 关系型数据库关系型数据库使用表来组织数据。表由行和列组成表与表之间可以通过主键、外键建立关系。典型代表MySQLPostgreSQLOracleSQL ServerSQLite例如一个电商系统中可能有用户表和订单表。用户表user_idname1张三2李四订单表order_iduser_idamount10011299100218810032500其中订单表中的user_id可以关联到用户表中的user_id。可以通过 SQL 查询用户和订单之间的关系SELECT user.name, orders.amount FROM user JOIN orders ON user.user_id orders.user_id;关系型数据库的核心特点使用二维表存储数据表结构比较固定支持 SQL 查询支持主键、外键支持事务数据一致性较强适合复杂查询和强一致性业务。适合场景银行系统订单系统成绩管理系统库存系统企业管理系统财务系统3.2 非关系型数据库非关系型数据库也叫 NoSQL。它不以传统的二维表、主键、外键、SQL Join 作为核心组织方式。需要注意的是非关系型数据库不是说数据之间没有关系而是不以关系型数据库那种“表与表通过主外键关联”的方式作为核心。非关系型数据库可以用多种方式组织数据例如文档键值对图结构列族向量常见类型如下类型代表适合存什么文档数据库MongoDBJSON 类数据、配置数据、内容数据键值数据库Redis缓存、登录 token、计数器、排行榜图数据库Neo4j社交关系、知识图谱、路径关系向量数据库Milvus、Pinecone、FAISSembedding、语义检索、RAG 检索列族数据库HBase、Cassandra海量日志、宽表数据、大规模分布式数据4. 常见非关系型数据库类型4.1 文档数据库MongoDB文档数据库通常用类似 JSON 的结构存储数据。例如{ user_id: 1, name: 张三, age: 22, skills: [Java, Python], orders: [ { order_id: 1001, amount: 299 }, { order_id: 1002, amount: 88 } ] }在关系型数据库中用户和订单通常会被拆成用户表和订单表而在 MongoDB 中可以把相关信息放在同一个文档中。适合场景用户画像内容管理系统商品详情配置信息JSON 类数据存储4.2 键值数据库RedisRedis 是典型的键值数据库。它通过 key-value 的形式存储数据。例如user:1:name - 张三 user:1:token - abc123 article:1001:views - 999Redis 的特点是速度快常用于缓存。适合场景缓存热点数据登录 token分布式锁计数器排行榜验证码会话信息例如网站中经常访问的商品详情可以先放入 Redis减少对 MySQL 的访问压力。4.3 图数据库Neo4j图数据库用节点和边来表示数据之间的关系。例如张三 --认识-- 李四 张三 --购买-- 商品A 商品A --属于-- 手机类目图数据库适合处理关系复杂的数据。适合场景社交网络知识图谱推荐系统风控关系分析路径查询例如在知识图谱中周杰伦 --出生于-- 台湾 周杰伦 --创作-- 七里香 七里香 --属于-- 音乐作品这种数据用图数据库表示会比较自然。4.4 向量数据库Milvus、Pinecone、FAISS向量数据库主要用于存储和检索 embedding 向量。在大模型和 RAG 系统中经常会把文本、图片、音频等数据转换成向量然后存入向量数据库。例如文本片段1 - [0.12, 0.35, -0.22, ...] 文本片段2 - [0.08, 0.41, -0.19, ...]当用户提出问题时系统会把问题也转换成向量然后在向量数据库中查找最相似的内容。适合场景RAG 知识库语义搜索图片相似度检索推荐系统多模态检索例如用户问什么是非关系型数据库系统可以把这个问题转成向量然后在知识库中找到和它语义最接近的文档片段。5. 两种分类之间的关系这两种分类方式可以组合起来理解。数据类型常见存储方式举例结构化数据关系型数据库MySQL 存用户表、订单表半结构化数据文档数据库、搜索引擎MongoDB 存 JSONElasticsearch 存日志非结构化数据对象存储 向量数据库PDF、图片、视频先存文件再提取文本或向量向量数据向量数据库Milvus、FAISS、Pinecone 存 embedding例如一个 RAG 系统中可能会同时用到多种数据库原始 PDF 文件存到对象存储PDF 解析后的文本存到数据库文本切分后的 chunk 存到 MySQL 或 MongoDB每个 chunk 的 embedding 存到向量数据库用户信息、权限信息存到 MySQL热门查询结果缓存到 Redis。所以实际系统中并不是只用一种数据库而是根据不同数据类型和业务需求组合使用。6. 常见误区误区一非关系型数据库就是不能表示关系错误。非关系型数据库也可以表示关系只是表示方式不同。例如 MongoDB 中可以保存user_id来表示某个订单属于某个用户Neo4j 更是专门用来表示复杂关系的数据库。准确说法是非关系型数据库不以传统二维表、主键外键和 SQL Join 作为核心模型。误区二结构化数据只能存在关系型数据库中错误。结构化数据也可以存到 Redis、MongoDB、HBase 等非关系型数据库中。例如一个计数器article:1001:views - 10000它是结构化的但可以存到 Redis 中。误区三非结构化数据可以直接被数据库理解不完全对。图片、视频、PDF 等非结构化数据可以被存储但数据库本身通常不能直接理解里面的内容。如果要进行搜索和分析通常需要先经过OCR文本抽取图像识别语音识别embedding 向量化元数据标注然后才能进一步检索和分析。7. 总结可以用一句话总结结构化、半结构化、非结构化描述的是数据本身的格式关系型、非关系型数据库描述的是数据库组织和管理数据的方式。进一步总结结构化数据像表格字段固定例如用户表、订单表。半结构化数据有字段但不严格固定例如 JSON、XML、日志。非结构化数据没有固定结构例如图片、视频、PDF、音频。关系型数据库以表为核心通过主键、外键、SQL 维护关系例如 MySQL。非关系型数据库不以传统二维表和 SQL Join 为核心例如 MongoDB、Redis、Neo4j、Milvus。NoSQL 不等于没有关系而是不使用传统关系模型作为核心。实际项目中经常会组合使用多种数据库例如 MySQL Redis MongoDB Milvus。8. 总结结构化、半结构化、非结构化主要描述的是数据本身的组织形式。结构化数据像二维表字段固定比如用户、订单、成绩半结构化数据有一定结构但不严格比如 JSON、XML、日志非结构化数据没有固定表格结构比如图片、视频、PDF、音频和自然语言文本。关系型和非关系型数据库描述的是数据库的数据模型。关系型数据库以表为核心通过主键、外键维护表之间的关系典型代表是 MySQL、PostgreSQL适合强一致性、事务和复杂 SQL 查询。非关系型数据库也叫 NoSQL不以传统二维表和 SQL Join 为核心包括文档数据库、键值数据库、图数据库、向量数据库等适合高并发、灵活结构、大规模数据或者语义检索等场景。所以这两组概念不是同一层面的分类。结构化数据常用关系型数据库存但非关系型数据库也可以存结构化数据非结构化数据通常需要结合对象存储、搜索引擎、向量数据库等方式管理。