什么是数据库?
数据库是按照特定结构组织、存储和管理数据的仓库。想象一个巨大的电子表格系统,但它能存储数十亿条记录,支持多人同时访问,并能在毫秒内找到你需要的数据。
你每天使用的应用背后都有数据库:微信的聊天记录、淘宝的商品信息、银行的账户余额,都存储在数据库中。
📊 数据的爆炸
全球每天产生2.5万亿字节的数据。一个大型电商平台可能要管理数十亿条商品信息、数百亿条交易记录。没有数据库,现代互联网根本无法运作。
关系型数据库
关系型数据库是最传统也是最常用的数据库类型。它用"表"来组织数据,表与表之间可以建立"关系"。使用SQL(结构化查询语言)来操作数据。
核心概念
- 表(Table):存储数据的基本单位,像Excel表格
- 行(Row):一条记录,如一个用户的信息
- 列(Column):一个字段,如用户名、年龄
- 主键(Primary Key):唯一标识一条记录的字段
- 外键(Foreign Key):建立表与表之间的关系
主流关系型数据库
🐬 MySQL
最流行的开源数据库,被Facebook、Twitter等大公司使用
🐘 PostgreSQL
功能最强大的开源数据库,以严谨和可靠著称
🔷 SQL Server
微软的企业级数据库,与Windows生态深度整合
🔴 Oracle
商业数据库的标杆,大型企业和银行的首选
NoSQL数据库
Not Only SQL——不仅仅是SQL。为了应对大数据和高并发场景,NoSQL数据库应运而生。它们放弃了关系型数据库的某些特性,换来了更高的性能和更灵活的数据模型。
NoSQL的类型
- 文档数据库:存储JSON/BSON文档(MongoDB)
- 键值数据库:简单的key-value存储(Redis)
- 列式数据库:按列存储,适合分析场景(Cassandra)
- 图数据库:存储节点和关系,适合社交网络(Neo4j)
SQL:与数据库对话
SQL(Structured Query Language)是操作关系型数据库的标准语言。学会基本的SQL,你就能查询、添加、修改和删除数据。
-- 查询所有用户
SELECT * FROM users;
-- 查询特定条件的数据
SELECT name, email FROM users WHERE age > 18;
-- 插入新数据
INSERT INTO users (name, email, age) VALUES ('张三', 'zhangsan@example.com', 25);
-- 更新数据
UPDATE users SET age = 26 WHERE name = '张三';
-- 删除数据
DELETE FROM users WHERE name = '张三';
数据库的ACID特性
关系型数据库保证数据的一致性和可靠性,通过ACID特性:
- 原子性(Atomicity):事务要么全部成功,要么全部失败
- 一致性(Consistency):数据始终保持有效状态
- 隔离性(Isolation):并发事务互不干扰
- 持久性(Durability):一旦提交,数据永久保存
💰 银行转账的例子
从A账户转100元到B账户,需要两步操作:A减100、B加100。如果中间出错,两个操作都要撤销,否则钱就"凭空消失"了。这就是原子性的作用。
数据库索引
索引就像书的目录,帮助数据库快速找到数据,而不需要扫描整个表。没有索引,查询一亿条记录可能需要几分钟;有了索引,可能只需要几毫秒。
但索引也有代价:占用存储空间,且在插入、更新时需要维护。所以要根据查询需求合理创建索引。
数据库的未来
- 云数据库:无需运维,按需付费(AWS RDS、阿里云RDS)
- NewSQL:兼具SQL的易用性和NoSQL的扩展性
- 分布式数据库:数据分布在多个节点,提高性能和可用性
- AI增强:自动优化查询、自动运维