什么是NoSQL?
什么是NoSQL?
NoSQL = Not Only SQL(不仅仅是SQL)
基本概念
SQL vs NoSQL
特性 | SQL | NoSQL |
---|---|---|
数据结构 | 表格(行和列) | 灵活(文档、键值、图等) |
数据关系 | 强关系 | 弱关系或无关系 |
扩展性 | 垂直扩展 | 水平扩展 |
一致性 | 强一致性 | 最终一致性 |
生活中的例子
SQL = 图书馆
- 每本书都有固定位置
- 按分类整齐排列
- 借书需要登记表格
- 结构严格,不能随意放书
NoSQL = 家里的杂物箱
- 东西随便放
- 不需要固定格式
- 找东西靠记忆
- 灵活,想放什么放什么
主要类型
1. 键值存储(Redis)
// 像字典一样
name -> "张三"
age -> 25
2. 文档存储(MongoDB)
// 像JSON文件
{"name": "张三","age": 25,"hobbies": ["读书", "游泳"]
}
3. 列族存储(HBase)
// 像Excel表格,但列可以动态增加
姓名 | 年龄 | 爱好1 | 爱好2
张三 | 25 | 读书 | 游泳
4. 图数据库(Neo4j)
// 像社交网络
张三 -> 认识 -> 李四
李四 -> 认识 -> 王五
使用场景
SQL适合:
- 银行系统(需要强一致性)
- 电商订单(需要事务)
- 财务报表(需要精确计算)
NoSQL适合:
- 社交网络(用户关系复杂)
- 内容管理(文章、评论)
- 实时数据(日志、监控)
总结
方面 | SQL | NoSQL |
---|---|---|
学习难度 | 中等 | 简单 |
开发速度 | 慢 | 快 |
数据安全 | 高 | 中等 |
扩展成本 | 高 | 低 |
选择原则:
- 需要强一致性 → SQL
- 需要快速开发 → NoSQL
- 数据关系复杂 → SQL
- 数据量大 → NoSQL