1. 程式人生 > >MongoDB基本知識(補充)

MongoDB基本知識(補充)

列表切片 最大 產品 collect back inf 事務 fig 數據節點

NoSQL: Not only SQL
    非關系型數據庫,不是一種特定的技術,分類多種
    而關系型數據庫,就是一種特定的技術

    大數據問題:BigData
        並行數據庫系統:關系型數據庫,采用SQL,水平切分
        NoSQL 數據庫管理系統:非關系型,分布式,不支持ACID數據設計範式
            簡單數據模型
            元數據和數據分離的模式
            弱一致性 
            高吞吐量
            高水平擴展能力,低端硬件集群

        NewSQL數據庫管理系統:
            代表:Clustrix, GenieDB, ScaleBase,MinbusDB,Drizzle

        雲數據管理
    大數據的分析處理:
        MapReduce

    CAP:分布式滿足兩者就很不錯了
        C:一致性(強)
            因果一致性
            讀自寫一致性
            會話一致性
        A: 可用性(隨時都可以返回)
        P:分區容錯性

    ACID:強一致性,隔離性,采用悲觀保守方法,難以變化
    BASE:弱一致性,可用性優先,采用樂觀的方法,適應變化,更加單,更快

數據存儲模型:
    列式存儲模型:看到跟關系型數據庫樣子一樣,但是無法按行查(一般用於查某些字段有用)
    文檔存儲:MongoDB
    鍵值數據模型
    圖式數據模型(不是圖片的意思)


        列式模型:
            應用場景:在分布式文件系統之上提供支持隨機讀寫的分布式數據存儲
            典型產品:HBase、Hypertable、Cassandra
            數據模型:以“列”為中心進行存儲,將同一列數據存儲在一起
            優點:快速查詢、高可擴展性、易於實現分布式擴展

        文檔模型:
            應用場景:非強事務需求的web應用
            典型產品:MongoDB、ElasticSearch、CouchDB、CouchBase Server
            數據模型:鍵值模型,存儲為文檔
            優點:數據模型無須事先定義

        鍵值模型:
            應用場景:內容緩存,用於大量並行數據訪問高負載場景
            典型產品:DynamoDB、Riak、Redis
            數據模型:基於哈希表實現的key
-value 優點:查詢迅速 圖式模型: 應用場景:社交網絡、推薦系統、關系圖譜 典型產品:Neo4j、Infinite Graph 數據模型:圖式結構 優點:適應於圖式計算場景 Mongod的常用選項: fork={true|false}: mongod是否運行在後臺 bind_ip=IP:指定監聽的地址 port=PORT: 指定監聽的端口 maxConns=: 並發最大連接數 MongoDB的復制功能: 兩種類型: master
/slave replica set: 復制集、副本集 服務於同一數據集的多個mongodb實例 主節點將數據修改操作保存至oplog中 arbiter: 仲裁者 工作特性:至少三個,且應該為奇數個節點;可以使用arbiter來參與選舉; heartbeat(2s), 自動失效轉移(通過選舉方式實現) 復制集的中特殊類型的節點: 0優先級的節點:冷備節點,不會被選舉成為主節點,但可以參與選舉; 被隱藏的從節點:首先是一個0優先級的從節點,且對客戶端不可見; 延遲復制的從節點:首先是一個0優先級的從節點,且復制時間落後於主節點一個固定時長; arbiter: MongoDB的復制架構: oplog:安裝數據庫後默認的數據量local 中存放 heartbeat oplog: 大小固定的文件,存儲在local數據庫,冪等性,運行多少次,都是同一個結果 主節點才會寫 oplog,同步給從節點,且是一個空間大小固定,所在文件系統的5
% 一個從節點加入後需要: 初始同步(initial sync) 回滾後追趕(post-rollback catch-up) 切分塊遷移(sharding chunk migrations) local 數據庫: 放了副本集的所有元數據和oplog; 用於存儲oplog的是一個名為oplog.rs的collection; oplog.rs的大小依賴於OS及文件系統,自動生成; 但可以自定義其大小oplogSize, Mongo的數據同步類型: 初始同步: 節點沒有任何數據時 節點丟失副本復制歷史 復制 初始同步的步驟: 1、克隆所有數據庫 2、應用數據集的所有改變:復制oplog並應用於本地 3、為所有collection構建索引 副本集的重新選舉的影響條件: 心跳信息 優先級 optime 網絡連接 網絡分區 選舉機制: 觸發選舉的事件: 新副本集初始化時 從節點聯系不到主節點時 主節點“下臺”時 主節點收到stepDown()命令時 某從節點有更高的優先級且已經滿足成主節點其它所有條件 主節點無法聯系到副本集的“多數方” 技術分享圖片 MongoDB的分片: CPU Memory IO MySQL分片需要借助: Gizzard, HiveDB, MySQL Proxy + HSACLE, Hibernate Shard, Pyshards MongoDB:默認就支持分片 分片架構中的三種角色: mongos: Router 將用戶的強求路由到響應的分片上請求,可以認為是MongoDB的代理 config server: 元數據服務器,哪個結點,存放了那些數據,類似分布式 也需要多個,但是並不是副本集,所以需要第三方zookeper shard: 數據節點,也稱mongod實例(每個結點都要有副本集,以防掛了) 基於範圍切片 range 基於列表切片 list 基於hash切片 hash 寫離散,讀集中

MongoDB基本知識(補充)