什么是关系数据库 SQL
关系数据库以结构化和表的方式存储数据。也就是说,它将信息存储在表中,可以将其视为数据的存储容器。
关系数据库具有严格的、静态的预定义逻辑架构(schema)。
特点
- 是表格格式
- 非常有条理,并且数据以某种结构存储
- 具有严格、预定义的架构
- 使用 SQL 执行数据库查询和操作数据
ACID 属性
ACID 是原子性(Atomicity)、一致性(Consistency)、事务隔离(Isolation)、持久性(Durability)
原子性意味着事务是原子的并且采取 “all or nothing” 的方法。也就是,要么整个操作成功,从头到尾完成,要么不成功,整个操作“回滚”。所有操作都保证以成功或失败结束,不存在部分成功。
一致性是确保数据库结构从事务开始到结束保持不变。一致性确保进入数据库的任何数据都遵循已设置的规则和约束。它可以保护和维护关系数据库中数据的完整性。
事务隔离意味着尽管在任何时候都发生了许多事务,但每个事务都被视为一个原子的、独立的单元,并且事务似乎是按顺序发生的。
持久性意味着事务的任何结果和更改都已提交,因此是永久性的,并且将持续存在,即使出现系统故障也是如此。
ACID 模型可确保数据库可靠且安全。
什么是非关系数据库 NoSQL
非关系型数据库也称为 NoSQL 数据库。
无论哪种方式,非关系数据库都是指不使用关系数据模型的数据库。
一些最流行的非关系数据库:
MongoDB
Redis
Apache Cassandra
Google Cloud Bigtable
Amazon DynamoDB
非关系数据库不以表格式存储和组织数据。不同数据点之间没有表、行、列或关系。
SQL 和 NoSQL 数据库之间进行选择
何时使用 SQL 数据库
- 需要分布在多个表中的高度结构化的数据,需要数据遵守严格的、可预测的、预定义的和已经计划好的模式。
- 数据将保持相对不变。如果不打算频繁更改数据库的结构并且不需要定期更新项目,SQL 数据库会很方便。请记住,它们提供的灵活性很小。
- 需要一致的数据。
- 数据完整性和安全性是重中之重。
- 需要复杂查询的准确结果。
SQL 数据库的一个缺点是它们是垂直扩展的。当存储变多时,需要增加当前机器上的硬件和提高计算能力。这可能代价高昂。需要增加处理能力和内存存储来处理增加的负载以提高性能。
何时使用 NoSQL 数据库
- 在一个快速的开发环境中工作,需要经常调整需求并不断更改数据库结构。
- 正在处理大量性质不同但不需要大量结构或准确性的数据。
- 正在处理需要频繁更新的数据。NoSQL 数据库提供了一个松散、灵活和动态的模式,允许对数据进行定期更改。
- 需要快速的查询结果和系统的持续可用性。
- 不想对数据库进行任何前期规划、准备或设计,而是想立即开始构建。
NoSQL 数据库的一大优势是它们可以水平扩展。