简单来说 SQL 数据库和 NoSQL 数据库有着共同的目标:存储数据,但存储的方式不同
一. 表
- SQL中的表结构具有严格的数据模式约束: 存储数据很难出错。
- NoSQL存储数据更加灵活自由:可能导致数据不一致性问题的发生。
SQL
每个表规定了固定的字段,各个字段有固定的类型
NoSQL
而 NoSQL 使用类 Json 的键值对存储数据(还有使用阵列、图形的),
一个记录或者说一个文档可以是这样的格式
KEY 1: { id: 123456, name:"howie", age: 20 }
也可以是这样的格式
KEY 2: { ISBN: 9780992461225, title: "JavaScript: Novice to Ninja", author: "Darren Jones", price: 29.00, review: [ { name: "A Reader", text: "The best JavaScript book I've ever read." }, { name: "JS Expert", text: "Recommended to novice and expert developers alike." } ] }
所有的记录组成一个集合,例如 redis
二. 数据库的模式
SQL 模式
关系型数据库中,在把数据存储进去前,你需要做很多工作,如设置数据库字符集,定义主键,设置各个字段的类型,设置索引等等,这些就是关系型数据库的模式,这些模式的限制,让表结构有着严格的约束。
NoSQL 无模式
而非关系型数据库的数据可以随时写入,不需要去事先定好各种条条框框,也正因为如此,NoSQL 数据库更适合于那些不能够确定数据需求的的工程项目。
三. 数据库的规范化
SQL 规范化
例如我们拥有两表
用户表:
原文链接