SQL
SQL结构化查询语言是一种数据库操作的非过程式编程语言,用于存取数据以及查询、更新和管理关系型数据库系统,一般脚本文件后缀为.sql。
经过ANSI和ISO标准化组织结构进行标准化,但是各个数据库管理系统都对标准SQL规范进行了编改和扩充,扩展部分各个数据库不通用,标准部分通用。
SQL的特点:
- 统合统一、高度非过程化;
- 面向集合的操作方式;
- 以同一种语法结构提供两种使用方法,命令行方式交互和嵌入主语言;
- 语法简单,其中只有94个英文单词,核心功能只有6个单词【insert update delete select】。
NoSQL
NoSQL泛指非关系型数据库,主要用于针对超大规模和高并发的社交SNS类型网站的解决方案
常见的NoSQL数据库有4种类型:
- key-value数据库,使用hash表存储数据。例如Redis;
- 列存储数据库,主要针对分布式的海量数据,例如HBase;
- 文档型数据库,主要存储版本化的文档信息,例如MongoDB;
- 图形化数据库,主要用于计算数据之间的关系,例如Neo4j。
NoSQL适用场景
- 数据模型比较简单;
- 需要灵活性很强的IT系统中;
- 对数据库性能要求较高;
- 不需要高度数据一致性。
SQL 和 NoSQL
- 复杂查询SQL数据库比较擅长;
- SQL数据库不适合分层次的数据存储,NoSQL可以很好的实现数据的分层次存储,更适合大数据;
- 对于要求数据严格一致性的应用中SQL非常使用,而且稳定,能够保证数据操作的原子性和一致
性;而NoSQL对事务的处理能力有限,一般保证最终一致性; - SQL厂商支持,而NoSQL是社区支持;
- 性能对比中,NoSQL明显优于SQL数据库,一般NoSQL都充分的利用系统的内存资源;
- NoSQL数据库开发方便,不用考虑数据关系和格式。
MySQL
MySQL使用的是SQL语句,体积小、速度快、免费开源的关系型数据库。
MySQL是由SQL接口、解析器、优化器、缓存、存储引擎。
- 客户端向MySQL服务器发送一个SQL语句;
- 服务器首先检查缓存,如果命中则立刻返回存储在缓存中的结果,否则下一步;
- 服务器首先进行SQL语句解析、预处理,再由优化器生成对应的执行计划;
- MySQL服务器根据执行计划,调用存储引擎的API执行查询;
- 最后将查询结果返回客户端,同时缓存查询结果。