题目
NoSQL数据库基础概念与类型
信息
- 类型:问答
- 难度:⭐
考点
NoSQL定义,NoSQL数据库类型,适用场景
快速回答
NoSQL数据库是用于管理非关系型数据的系统,主要特点包括:
- 非结构化数据存储:不强制使用固定表结构
- 高扩展性:支持水平扩展
- 灵活数据模型:适应快速变化的业务需求
- 主要类型:文档型(如MongoDB)、键值型(如Redis)、列存储(如Cassandra)、图数据库(如Neo4j)
1. NoSQL核心原理
NoSQL(Not Only SQL)是为解决关系型数据库在高并发、大数据量场景下的局限性而设计的数据库系统:
- CAP定理:分布式系统中最多同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)中的两项
- BASE原则:基本可用(Basically Available)、软状态(Soft-state)、最终一致性(Eventually Consistent)
- 无模式(Schema-less):数据结构可动态变化
2. 主要类型与代码示例
(1) 文档型数据库(如MongoDB)
存储类似JSON的文档结构,适合内容管理系统:
// MongoDB插入文档示例
db.users.insertOne({
name: "张三",
age: 30,
address: { city: "北京", zip: "100001" }
})(2) 键值型数据库(如Redis)
通过Key快速访问Value,适合缓存场景:
# Redis命令示例
SET user:1001 "{\"name\":\"李四\",\"points\":500}"
GET user:1001(3) 列存储数据库(如Cassandra)
按列族存储数据,适合分析型应用:
-- Cassandra创建表
CREATE TABLE users (
user_id UUID PRIMARY KEY,
name text,
last_login timestamp
);(4) 图数据库(如Neo4j)
存储实体关系和属性,适合社交网络:
// Neo4j创建关系
CREATE (a:Person {name: '王五'})-[:FRIEND]->(b:Person {name: '赵六'})3. 最佳实践
- 选型依据:根据数据结构和访问模式选择类型(JSON数据用文档型,缓存用键值型)
- 数据建模:围绕查询需求设计结构,避免过度嵌套
- 一致性处理:关键业务需添加额外校验逻辑补偿最终一致性
4. 常见错误
- 错误地将关系型数据模型强加于NoSQL
- 忽略事务限制(如MongoDB单文档事务)
- 过度使用嵌套导致查询性能下降
5. 扩展知识
- 与SQL主要区别:
特性 SQL NoSQL 数据结构 固定表结构 动态模式 扩展方式 垂直扩展 水平扩展 事务支持 ACID强一致性 BASE最终一致性 - 混合架构:现代系统常同时使用SQL和NoSQL(如用Redis缓存MySQL数据)