SQL 和 NoSQL
来源:互联网 发布:anywhere远程桌面软件 编辑:程序博客网 时间:2024/06/07 01:16
SQL和NoSQL区别
SQL(Structured Query Language)数据库,指关系型数据库。主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)。NoSQL(Not Only SQL)泛指非关系型数据库。主要代表:MongoDB,Redis,CouchDB。存储方式SQL数据存在特定结构的表中;而NoSQL则更加灵活和可扩展,存储方式可以省是JSON文档、哈希表或者其他方式。SQL通常以数据库表形式存储数据。而NoSQL存储方式比较灵活,比如使用类JSON文件存储数据。表/数据集合的关系在SQL中,必须定义好表和字段结构后才能添加数据,例如定义表的主键(primary key),索引(index),触发器(trigger),存储过程(stored procedure)等。表结构可以在被定义之后更新,但是如果有比较大的结构变更的话就会变得比较复杂。在NoSQL中,数据可以在任何时候任何地方添加,不需要先定义表。NoSQL也可以在数据集中建立索引。以MongoDB为例,会自动在数据集合创建后创建唯一值_id字段,这样的话就可以在数据集创建后增加索引。
从这点来看,NoSQL可能更加适合初始化数据还不明确或者未定的项目中。外部数据存储SQL中如何需要增加外部关联数据的话,规范化做法是在原表中增加一个外键,关联外部数据表。而在NoSQL中除了这种规范化的外部数据表做法以外,我们还能用如下的非规范化方式把外部数据直接放到原数据集中,以提高查询效率。缺点也比较明显,更新审核人数据的时候将会比较麻烦。SQL中的JOIN查询SQL中可以使用JOIN表链接方式将多个关系数据表中的数据用一条简单的查询语句查询出来。NoSQL暂未提供类似JOIN的查询方式对多个数据集中的数据做查询。所以大部分NoSQL使用非规范化的数据存储方式存储数据。数据耦合性SQL中不允许删除已经被使用的外部数据,以保证数据完整性。而NoSQL中则没有这种强耦合的概念,可以随时删除任何数据。事务SQL中如果多张表数据需要同批次被更新,即如果其中一张表更新失败的话其他表也不能更新成功。这种场景可以通过事务来控制,可以在所有命令完成后再统一提交事务。而NoSQL中没有事务这个概念,每一个数据集的操作都是原子级的。查询性能在相同水平的系统设计的前提下,因为NoSQL中省略了JOIN查询的消耗,故理论上性能上是优于SQL的。目前许多大型互联网项目都会选用MySQL(或任何关系型数据库)+NoSQL的组合方案。
关系型数据库适合存储结构化数据,如用户的帐号、地址
NoSQL适合存储非结构化数据,如文章、评论
阅读全文
1 0
- SQL 和 NoSQL
- SQL和NoSQL的认知
- SQL 和 NoSQL 的区别
- redis学习进程--nosql和sql区别
- 理性选择SQL和NoSQL解决方案
- MongoDB 1: NoSQL 和 SQL的区别
- SQL和NoSQL数据库的技术差别
- SQL和NoSQL数据库的差别
- SQL和NOSQL有区别吗?
- 关于nosql和sql的区别
- SQL与NoSQL关系和区别
- 关于NoSQL和SQL的区别
- 关于nosql和sql的区别
- SQL - NoSQL
- SQL----NoSQL
- 从CAP理论出发理下sql和nosql
- 排名前十的SQL和NoSQL数据库
- 全面梳理SQL和NoSQL数据库的技术差别
- 还原eclipse默认界面风格
- JavaScript-表单验证
- ubuntu安装Nginx
- 请你谈谈Cookie的弊端
- Java:Object
- SQL 和 NoSQL
- 安装Robo 3T(Robomongo)MongoDB可视化工具
- linux (ubuntu) Qt 5.9.1 发布程序 转载+个人错误记录
- Hibernate与 MyBatis的比较
- 弹出层随鼠标滑轮上下移动,页面遮罩层不动
- best-time-to-buy-and-sell-stock-iii
- centos7 安装和设置mariadb
- hdu(HDU5945)单调队列优化DP
- fseek函数(转)