NoSQL简介

Posted 天剑含光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NoSQL简介相关的知识,希望对你有一定的参考价值。

  • NoSQL,全名为Not Only SQL,指的是非关系型的数据库
  • 过去,关系型数据库(SQL Server、Oracle、mysql)是数据持久化的唯一选择,但随着发展,关系型数据库存在以下问题。

  • 问题1:不能满足高性能查询需求

      我们使用:Java、.Net等语言编写程序,是面向对象的。但用数据库都是关系型数据库。存储结构是面向对象的,但是数据库却是关系的,所以在每次存储或者查询数据时,我们都需要做转换。类似Hibernate、Mybatis这样的ORM框架确实可以简化这个过程,但是在对高性能查询需求时,这些ORM框架就捉襟见肘了。

  • 问题2:应用程序规模的变大

      网络应用程序的规模变大,需要储存更多的数据、服务更多的用户以及需求更多的计算能力。为了应对这种情形,我们需要不停的扩展。

      扩展分为两类:一种是纵向扩展,即购买更好的机器,更多的磁盘、更多的内存等等。另一种是横向扩展,即购买更多的机器组成集群。在巨大的规模下,纵向扩展发挥的作用并不是很大。首先单机器性能提升需要巨额的开销并且有着性能的上限,在Google和Facebook这种规模下,永远不可能使用一台机器支撑所有的负载。鉴于这种情况,我们需要新的数据库,因为关系数据库并不能很好的运行在集群上。

  • 随着访问量的上升,网站的数据库性能出现了问题,于是nosql被设计出来
  • 优点/缺点

    • 优点:
      • 高可扩展性
      • 分布式计算
      • 低成本
      • 架构的灵活性,半结构化数据
      • 没有复杂的关系
    • 缺点:
      • 没有标准化
      • 有限的查询功能(到目前为止)
      • 最终一致是不直观的程序
  • 分类
    • 列存储(Hbase,Cassandra,Hypertable):顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
    • 文档存储(MongoDB,CouchDB):文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。
    • key-value存储(Tokyo Cabinet / Tyrant,Berkeley DB,MemcacheDB,Redis):可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
    • 图存储(Neo4J,FlockDB):图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
    • 对象存储(db4o,Versant):通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
    • xml数据库(Berkeley DB XML,BaseX):高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。

 

以上是关于NoSQL简介的主要内容,如果未能解决你的问题,请参考以下文章

NoSQl简介(转)

Nosql简介 Redis,Memchche,MongoDb的区别

NoSQL 简介

NoSQL简介

NoSQL之简介

NoSQL简介