NoSQL?
Not Only SQL,泛指非关系型的数据库,主要针对的是键值、文档以及图形类型数据存储,并且,NoSQL数据库天生支持分布式,数据冗余和数据分片等特性,旨在提供高扩展的高可用高性能数据存储解决方案
NoSQL数据库可以存储关系型数据,它们与关系型数据库的存储方式不同
NoSQL数据库有哪些?
HBase、Cassandra、MongoDB、Redis
SQL 和 NoSQL有什么区别?
| SQL数据库 | NoSQL数据库 | |
|---|---|---|
| 数据存储模型 | 结构化存储,具有固定行和列的表格 | 非结构化存储。文档:JSON文档,键值:键值对,宽列:包含行和动态列的表,图:节点和边 |
| 例子 | Oracle、MySQL、Microsoft SQL Server、PostgreSQL | 文档:MongoDB、CouchDB,键值:Redis、DynamoDB,列宽:HBase,图表:Neo4j、Amazon Neptune、Giraph |
| ACID属性 | 提供原子性、一致性、隔离性和持久性 | 通常不支持ACID事务,为了可扩展、高性能进行了权衡,少部分支持,比如MongoDB,不过MongoDB对ACID事务的支持和MySQL还是有所区别的 |
| 性能 | 性能通常取决于磁盘子系统,要获得最佳性能,通常需要优化查询、索引和表结构 | 性能通常由底层硬件集群大小、网络延迟以及调用应用程序来决定 |
| 扩展 | 垂直(使用性能更强大的服务器进行扩展)、读写分离、分库分表 | 横向(增加服务器的数量来横向扩展,基于分片机制) |
| 用途 | 普通企业级的项目的数据存储 | 用途广泛,比如图数据库支持分析和遍历连接数据之间的关系,键值数据库可以处理大量数据扩展和极高的状态变化 |
| 查询语法 | 结构化查询语言(SQL) | 数据访问语法因数据库而异 |