1.(译)NoSQL与SQL数据库对比
Posted PacosonSWJTU
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.(译)NoSQL与SQL数据库对比相关的知识,希望对你有一定的参考价值。
【README】
1.本文翻译自: NoSQL Vs SQL Databases | MongoDB
2.NoSQL指的是不止sql(not only sql);NoSQL数据库是2000年代末开发的,重点是扩展,快速查询,允许频繁变更,让编程更简单;
3.关系型数据库是1970年代开发的,重点的是减少数据重复,因为存储成本高于开发者时间。SQL数据库往往具有严格,复杂的表格模式,通常要求高成本的垂直扩展。(如迁移到一台性能更好的服务器)
【1】SQL与NoSQL区别
SQL 与 NOSQL 间的区别 | ||
区别条目 | SQL数据库 | NoSQL数据库 |
数据存储模型 | 固定行列的表格 | document:json文档; key-value:键值对; wide-column:带有行与动态列的表格; 图:节点与边 |
发展历史 | 1970年代开始开发,关注的是减少数据重复 | 2000年代末开始开发,关注的是扩展,允许快速变更 |
例子 | oracle,mysql | document:MongoDB 和 CouchDB; key-value:redis 和 DynamoDB; wide-column:Cassandra 和 HBase; graph:Neo4j 和 Amazon Neptune |
主要用途 | 通用 | document:通用; key-value:大量数据的简单查询; wide-column:大量数据的预定义查询; graph:分析和遍历连接数据的关系; |
模式 | 严格 | 灵活的 |
扩展性 | 垂直扩展(使用大型服务器向上扩展)(难度大,成本高) | 横向扩展(跨商品服务器横向扩展) (难度小,成本低) |
ACID事务支持 | 支持 | 大多数都不支持多记录的ACID事务。 然而MongoDB可以支持ACID事务; |
连表 | 通常需要 | 通常不需要 |
数据到对象的映射 | 要求对象关系映射-ORM | 许多NoSQL数据库不需要对象关系映射; MongoDB文档直接映射到大多数流行编程语言的数据结构。 |
【2】NOSQL数据库的优点
相比于关系型数据库,nosql数据库提供了很多优点。NoSQL数据库
- 拥有灵活的数据模型;
- 支持横向扩展;
- 非常快速的查询性能;易于开发者上手;
1)优点1:灵活的数据模型
NoSQL允许你按需把改变应用到数据库。你可以快速迭代和持续聚合新的特性,更快为用户提供数据服务;
2)优点2:横向扩展
当超出服务器性能时,大多数SQL数据库都要求你纵向扩展(迁移到更大的数据库,迁移成本非常昂贵)。
相反,大多数NoSQL数据库允许你横向扩展,意味着你可以随时按需增加偏移的商用服务器;
3)优点3:快速查询
NoSQL数据库中的查询能够比SQL数据库要快,为什么?
3.1)SQL数据库:因为SQL数据库的数据是规范化的,因此单个对象或整体的查询需要你连接多个表的数据。随着表的增长,连表的成本非常高昂;
3.2)NoSQL数据库:然而,NoSQL数据库中的数据通常以一种查询优化的方式进行存储。
- 使用MongoDB的经验法则,把需要一起访问的数据存储在一起。
- 查询通常不需要连表,因此查询更加快速;
4)优点4-开发人员易于上手
一些NoSQL数据库如MongoDB会把他们的数据结构映射到那些流行的编程语言;
- 这种映射允许开发者以他们在代码中使用的相同方式存储数据;
- 这种映射允许开发者写更少的代码,使得更加快速开发和更少缺陷;
【3】NoSQL数据库的缺点
1)缺点1:NoSQL不支持事务:
- NoSQL操作多个文档时不支持ACID 事务特性(原子性,一致性,隔离性,持久性);
- 使用合适的模型设计,单条记录的原子性是可以满足大多数应用的;
- 为了解决不支持ACID事务特性的问题:mondoDB 在4.0版本开始支持多文档的ACID事务,并在4.2版本扩展到支持跨分片集群;
2)缺点2:NoSQL的存储空间比SQL数据库要大。
- 因为NoSQL数据库的数据模型通常是根据查询而优化过的,并没有减少数据重复。
- 因此存储相同业务数据,NoSQL数据库比SQL数据库占用的存储空间要大;存储介质非常便宜以至于这是一个很小的缺点;
- 此外NoSQL数据库支持数据压缩以减少存储空间。
补充: 存储空间包括 磁盘空间,内存空间;
以上是关于1.(译)NoSQL与SQL数据库对比的主要内容,如果未能解决你的问题,请参考以下文章