二、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