二、NoSQL经典应用

阿里巴巴是怎么做的

  1. 商品基本信息
    1. 名称,价格,出厂日期等
    2. 关系型数据库:mysql/oracle目前淘宝在去O化(也即拿掉Oracle),
  • 注意,淘宝内部用的Mysql是里面的大牛自己改造过的
  • 为什么去IOE
    其本意是,在阿里巴巴的IT架构中,去掉<u>IBM的小型机</u>、<u>Oracle数据库</u>、<u>EMC存储设备</u>,代之以自己在开源软件基础上开发的系统
  1. 商品描述
    1. 多文字信息描述类,IO读写性能变差
    2. 文档数据库MongDB中
  1. 商品图片
    1. 商品图片展现类
    2. 分布式的文件系统中
      1. 淘宝自己的<u>TFS</u>
      2. Google的<u>GFS</u>
      3. Hadoop的<u>HDFS</u>
  • <u>TFS</u>(Team Foundation Server)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化了文件的访问流程,一定程度上为TFS提供了良好的读写性能。
  • <u>GFS</u>是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。
  • <u>Hadoop</u>分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的
  1. 商品关键字
    1. 搜索引擎,淘宝内用
    2. ISearch

ISearch

  • 应用介绍  
    iSearch一款基于android平台具有多重搜索功能的软件,它目前支持的中文引擎有:谷歌中国、百度、雅虎易搜、新浪爱问、微软必应、京东商城、淘宝网、卓越亚马逊、维基百科、中关村在线、17173、爱卡汽车等。
  • 应用特点
  1. 允许用户同时搜索国内外数百个站点(搜索引擎、音乐站点、BBS、新闻组等、mp3)。
  2. 自动剔除重复的搜索结果。
  3. 自动校验搜索结果的有效性。
  4. 加密保护存储的结果文件。
  5. 支持自由编辑模式。
  6. 允许注册用户搜索无限多结果。
  7. 允许自由编辑搜索模板,设定使用的引擎。
  8. 提供无限引擎包升级。
  9. 允许6种线路类型,满足不同用户的需求。
  10. 允许搜索局域网的共享资源。
  11. 允许操纵目标对象对非注册用户则限制返回的搜索结果数量,每次搜索最多返回不超过100条结果。
  1. 商品波段性的热点高频信息
    1. 内存数据库
    2. tair、Redis、Memcache
  1. 商品的交易、价格计算、积分计算
    1. 外部系统,外部第3方支付接口
    2. 支付宝

大型互联网应用的解决方案

难点

  • 数据类型多样性
  • 数据源多样性和变化重构
  • 数据源改造而数据服务平台不需要大面积重构

解决办法

  • 给学生画图介绍EAI和统一数据平台服务层

阿里、淘宝干了什么?UDSL

UDSL(Ultrahigh bit-rate Digital Subscriber Loop,超高速数字用户环路)也是DSL技术的一种,与ADSL、VDSL类似。但它可在一条电话线路使上行和下行的总速率达到200Mbps。很显然它的主要优势就是传输速率高。
这一技术目前主要的开发商就是TI(德州仪器),TI公司开发的UDSL设备可支持现行的ADSL、VDSL,用户既可以单独选择UDSL技术,也可以与ADSL、VDSL等技术混合使用。因为UDSL技术兼容了ADSL和VDSL的标准,所以提供了介于二者之间的解决方案。比如,在传输距离超出1km时,UDSL的传输速率可以与ADSL相媲美,在短距离通信时,其传输速率又可达到或超出VDSL技术的水平。但目前这一技术只处于开发阶段,并没有进行实质应用,要实现真正的高速传输,目前证实最长传输距离只有几十米。


13055171-bddd62ae533e2ea9.png
  1. 映射
  2. API
  3. 热点缓存
  4. ......

NoSQL数据模型简介

例:

1. 如一个电商客户,订单,订购,地址等信息

  • sql的设计
    1. 1:1
    2. 1:N
    3. N:N
    13055171-a908d681ae081421.png
  • NoSql的设计
    1. 什么是BSON
      * BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象

    2. 例如模型

{
    "customer": {
        "id": 1136,
        "name": "Z3",
          "billingAddress": [{
            "city": "beijing"
        }],
          "orders": [{
            "id": 17,
                 "customerId": 1136,
                 "orderItems": [{
                "productId": 27,
                "price": 77.5,
                "productName": "thinking in java"
            }],
                 "shippingAddress": [{
                "city": "beijing"
            }],
                 "orderPayment": [{
                "ccinfo": "111333",
                "txnid": "asdfadcd334",
                "billingAddress": {
                    "city": "beijing"
                }
            }]
        }]
    }
}

两者对比

  1. 为什么上述的情况可以用聚合模型来处理
    • 高并发的操作是不太建议有关联查询的,互联网公司用冗余数据来避免关联查询
    • 分布式事务是支持不了太多的并发的

聚合模型

  1. KV键值

  2. bson

  3. 列族

    • 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。


      13055171-36dc377048b72100.png
  4. 图形


    13055171-9459b18ccf5f21de.png