• 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。
  • 相关阅读:
    libevent网络编程汇总
    LibEvent代码阅读--多缓冲区和零拷贝技术
    几个第三方库发图片
    Libevent使用例子,从简单到复杂
    CImage得到位图的大小
    从位图数据取得位图句柄
    BMP格式详解
    如何将内存中的位图数据绘制在DC上
    C++加载位图跟SOCKET通信的编写
    11235
  • 原文地址:https://www.cnblogs.com/whu-2017/p/9218874.html
Copyright © 2020-2023  润新知