访问数据库
现代数据存储与数据库技术入门
当我们开发一个应用时,程序运行产生的数据会临时存在内存里——但一旦程序退出、设备重启,这些信息就会“灰飞烟灭”。想要真正“留住”数据,就得用到数据持久化技术,而数据库是其中最通用、功能最强的方案。
1. 从简单到专业:数据持久化的演变
先从入门级的文件存储说起,逐步理解为什么我们最终会选择数据库。
1.1 文本文件:人人都能写的基础方案
最简单的持久化方式,就是把数据写成纯文本保存。其中最常用的是CSV(逗号分隔值)格式:
优点
- ✅ 完全人类可读,用记事本就能打开编辑
- ✅ 格式简单,几乎所有编程语言有原生或第三方库支持
- ✅ 导出导入门槛极低,Excel也能直接打开
缺点
- ❌ 没有统一标准:比如有的用分号、有的用制表符做分隔,不同编码会乱码
- ❌ 查询效率差:要统计“80分以上的人数”,得遍历整个文件
- ❌ 不支持复杂数据:嵌套、关联的数据根本没法存
1.2 JSON文件:结构化但非专业级的选择
JSON是Web开发的“通用语言”,也能用来存结构化数据:
优点
- ✅ 支持嵌套、键值对这类更灵活的结构
- ✅ Web前端/后端无缝对接
- ✅ 文档清晰
缺点
- ❌ 存储冗余大:每一条数据都要重复写键名
- ❌ 大数据集慢:没有索引,查询还是要全量遍历
- ❌ 修改风险高:不小心删了个逗号,整个文件就废了
1.3 二进制格式:高效但“黑盒”的现代工具
如果只关心存储效率、不关心人类可读性,二进制格式是更好的选择:
- Protocol Buffers(Protobuf):Google开发,体积小、解析快,跨语言支持好
- MessagePack:类似JSON但压缩率更高、速度更快
- Avro:Apache出品,支持动态数据类型,适合大数据场景
2. 数据库系统的核心与发展
当数据量变大、需要频繁查询或保证“数据不能错漏”时,文件存储的局限性会完全暴露——这时候数据库系统就登场了。
2.1 数据库发展简史(极简版)
- 1950s-1960s:文件系统(只能按顺序读写)
- 1960s-1970s:层次/网状数据库(IBM主导,结构太固定)
- 1970s:关系数据库诞生(基于Edgar F. Codd的关系模型,彻底改变格局)
- 2000s:NoSQL运动兴起(应对Web2.0时代的非结构化、高并发数据)
- 2010s至今:NewSQL、云原生数据库爆发(结合SQL和NoSQL的优点)
2.2 关系数据库:最经典的数据库类型
关系数据库的核心是“表”,表和表之间可以通过“键”关联——就像Excel的不同工作表,但功能强大得多。
举个简单的学校管理系统例子:
如果想查“一年级所有班级”,只需要写一条SQL(结构化查询语言)就行:
3. 现代数据库怎么选?
现在的数据库品类繁多,我们可以按“模型”分为三大类:
3.1 关系型数据库(SQL):事务安全的首选
主流选择
3.2 NoSQL数据库:非结构化/高并发的救星
NoSQL不是“否定SQL”,而是“Not Only SQL”——它不要求表结构固定,能轻松处理非结构化数据。
主流NoSQL类型
3.3 NewSQL数据库:鱼和熊掌可以兼得?
NewSQL结合了SQL的事务安全、复杂查询和NoSQL的横向扩展、高并发能力,适合云原生、分布式场景:
- TiDB:国内PingCAP出品,完全兼容MySQL
- CockroachDB:国外流行的分布式SQL,支持跨区域部署
- YugabyteDB:兼容PostgreSQL,开源免费
4. Python怎么连接数据库?
Python是数据分析、Web开发的常用语言,连接数据库也非常简单——这里给大家列几个主流库和ORM推荐。
4.1 原生数据库驱动
如果追求效率、或者需要写复杂SQL,可以用原生驱动:
4.2 ORM(对象关系映射):写代码更优雅
ORM可以让我们用Python类和对象操作数据库,不用手写太多SQL:
- SQLAlchemy:功能最全面的Python SQL工具包,支持多数据库
- Django ORM:Django框架内置,适合快速开发Web应用
- Peewee:轻量级ORM,代码简洁,适合小型项目
- MongoEngine:MongoDB的ODM(对象文档映射)
5. 最后给新手的学习建议
扎实的基础永远是最重要的:
- 入门阶段:先学SQL和关系数据库(推荐用SQLite或MySQL练手),掌握建表、增删改查、基础关联
- 进阶阶段:学数据库设计(范式、索引)、事务和并发控制
- 按需扩展:根据项目需求学NoSQL、云原生数据库
💡 提示:AI驱动的向量数据库、物联网用的时序数据库是2023年以后的热门方向,但建议先把基础打牢再碰~

