MONGODB
NoSql特性
Hermes Chiang
Mongodb background
 主要開發團隊10gen 創辦人Dwight
Merriman, 他早前是Doubleclick公司創辦人
Doubleclick己賣給GOOGLE.
優點
 Schema-less
不用先定義好 schema , 在API寫入資料時隨
時加入對映的Key-Value
 Ease of Scale-out
 可以隨時擴充,當採用sharding 可將資料分割到
多台Server中
 Memory
 INDEX資料都放在記憶體中,讀取速度快.
與RDBMS 不同之處
 不支援Transactions
原先設計就屬於弱一致性
 Less flexibility with more complex query
不支援JOIN, 無法將2個表作 JOIN
 因採用 Key:Value 的儲存架構,所以相同的
KEY值無法存在同一份 Document ,但在加入
的每一份Document中會新增一個 唯一的_id
作辦識
Mongodb store data Struct
RDBMS Mongodb 解說
Database Database 相當於 ORACLE 的
TABLESPACE
Table collection 一個collection 相
當於一個 TABLE 中
的內
Record document Key:Value
Collection &Document
 同一份 Collection 可以包含多個 Documents
 在同一個 Collection中,各個不同的
Document ,key 可以一樣
 同一個Document Key不能重複
Mongodb limits
項目 Limits
BSON Document MAX 16M (在同一個
Collection ,一份Document
Record 最大是16M,但可以有
多份 Documents)
Namespace Length
database and collection
nam
MAX 123 Bytes
Replica Sets
voting member
Max 12 members
7members in same time
Mogodb 特性
 Sharding mode 可以將資料水平切割
 schema free 用於資料不明確來源數量
 高度相容於JAVA script 的查詢語言,以
JSON 格式儲存資料
JSON
 JSON格式是1999年《JavaScript Programming Language, Standard ECMA-262 3rd Edition》的子集合,
所以可以在JavaScript以eval()函式(javascript通過eval()調用解釋器)讀入。不過這並不代表JSON無法使用
於其他語言,事實上幾乎所有與網頁開發相關的語言都有JSON函式庫。
 JSON用於描述資料結構,有以下形式存在。
 物件 (object):一個物件以「{」開始,並以「}」結束。一個物件包含一系列非排序的名稱/值對,每個名稱
/值對之間使用「,」分割。
 名稱/值(collection):名稱和值之間使用「:」隔開,一般的形式是:
 {name:value}
 一個名稱是一個字串; 一個值可以是一個字串,一個數值,一個物件,一個布爾值,一個有序列表,或者一個
null值。
 值的有序列表(Array):一個或者多個值用「,」分割後,使用「[」,「]」括起來就形成了這樣的列表,形如:
 [collection, collection]
 字串:以""括起來的一串字元。
 數值:一系列0-9的數字組合,可以為負數或者小數。還可以用「e」或者「E」表示為指數形式。
 布林值:表示為 true 或者 false。
 在很多語言中它被為和解釋為陣列。
 JSON的格式描述可以參考RFC 4627。
replicaSet
Replicate sets
 將資料在多台作保存,但並不是將資料作切分
Sharding and replicate
Replicate
set or simple
directory .
Sharding and replicate
 Sharding 及Replicate set
Replicate 可以再加上一層Sharding 切片將資
料放至另一個Replicate sets ,
 可以將Replicate set 改成 Sharding cluster
也可以將Sharding convert 成 replicate
(不建議作,因為會有Data loss 風險)
Sharding
 將資料分散儲存在多台機器的機制
 Cluster sharding 需大量的記憶體 及1台
config serve 存放 META DATA
在作Sharding 時會將資料都放在RAM 中,以
求減尐page out 的機率
run a query that requires MongoDB to scan every document in
a collection, the working set includes every active document in
memory.
Sharding 3 roles
 Config Server:用於儲存Metadata
 Mangos : 用於作DB 路徑轉導至存放實際資料
的位置
 Mangodb: 存放資料的真實路徑
Sharding limits
 在執行 Migration Data process , 資料在搬時
會使 Cluster Balancer 暫時失效,直至資料完
全BALANCE
Sharding Cluster Architecture
 Production Cluster Architecture
Sharding Cluster Architecture
 在Produdction 環境中,Mangodb 要求是3
個config server 對映1~數組的Mongodb
而且要求 config server 必需為分別的
Mongodb 上,意思就是說至少3台組成一個
cluster (只是將資料切片至不同台,不是data
protect)
Sharding config
 Config server 在 mango
Mongodb 商業優勢
 已是商業化,提供原廠資源
 已有線上教育及認證體系
參考文件
 Is MongoDB a good alternative to RDBMs
databases (like Oracle and Mysql)
Concepts
 1.sharding just cute date to slice and save
to different machines. Also sharding is
auto do
 2.replicates is keep data have same copy
 3.security option default is close, mean
everyone can login to MongoDB.
參考客戶案例
美國:foursquare, Cisco, McAfee, MTV
Networks
法國:Orange Digital(法國電信業者)
德國:Bavarian State Chancellery (巴伐利亞州
總理府 政府單位)
歐盟:CERN CMS
台灣:趨勢防毒,Whoscall(己被LINE 母公司買
下), XBRL創新之龍(台灣證交所舉辦的XBRL 軟
體設計勝出團隊,有可能商轉 )
Mangodb Security
 Trusted Environment : 在建置時,他會先假
設Mangodb 所有的服務是處在 可信任的環
境,意思說Mangodb 只提供很基本的防護
 Audit requirement : Data Encrypt
Basic Security
 ACL 機制
 Sharded cluster Security
設定驗證方式
 步驟 一:在未設定 auth 時,先在mongodb
中,建立資料庫及對映的使用者,及對應的
role
 步驟 二:進入/etc/mongodb.conf
加入 Auth = true
這一步在KeyFile = sslfile 時也會自動打開
 步驟 三 : 將mongodb 重啟
Mongodb 角色(role)權限介紹
Read 唯讀
readWrite 可以對DB 作寫入建collection
dbAdmin 可作 index , 但不能對使用者作
權限管理
userAdmin 唯有給此角色,方可對使用者作
管理
clusterAdmin
網路安全
 預設提供對外連線的PORT: 27017
 基本過濾連線是利用 IPTABLES .. Firewall軟體
定義
Basic Operation
 DBcollectionsDocument
Basic operation
Basic Operation
 在LINUX 下執行 mongo
#mogno - - host IP address
會先進入 操作界面
API basic operation
Mongodb API 開發

Mongo db 特性

  • 1.
  • 2.
    Mongodb background  主要開發團隊10gen創辦人Dwight Merriman, 他早前是Doubleclick公司創辦人 Doubleclick己賣給GOOGLE.
  • 3.
    優點  Schema-less 不用先定義好 schema, 在API寫入資料時隨 時加入對映的Key-Value  Ease of Scale-out  可以隨時擴充,當採用sharding 可將資料分割到 多台Server中  Memory  INDEX資料都放在記憶體中,讀取速度快.
  • 4.
    與RDBMS 不同之處  不支援Transactions 原先設計就屬於弱一致性 Less flexibility with more complex query 不支援JOIN, 無法將2個表作 JOIN  因採用 Key:Value 的儲存架構,所以相同的 KEY值無法存在同一份 Document ,但在加入 的每一份Document中會新增一個 唯一的_id 作辦識
  • 5.
    Mongodb store dataStruct RDBMS Mongodb 解說 Database Database 相當於 ORACLE 的 TABLESPACE Table collection 一個collection 相 當於一個 TABLE 中 的內 Record document Key:Value
  • 6.
    Collection &Document  同一份Collection 可以包含多個 Documents  在同一個 Collection中,各個不同的 Document ,key 可以一樣  同一個Document Key不能重複
  • 7.
    Mongodb limits 項目 Limits BSONDocument MAX 16M (在同一個 Collection ,一份Document Record 最大是16M,但可以有 多份 Documents) Namespace Length database and collection nam MAX 123 Bytes Replica Sets voting member Max 12 members 7members in same time
  • 8.
    Mogodb 特性  Shardingmode 可以將資料水平切割  schema free 用於資料不明確來源數量  高度相容於JAVA script 的查詢語言,以 JSON 格式儲存資料
  • 9.
    JSON  JSON格式是1999年《JavaScript ProgrammingLanguage, Standard ECMA-262 3rd Edition》的子集合, 所以可以在JavaScript以eval()函式(javascript通過eval()調用解釋器)讀入。不過這並不代表JSON無法使用 於其他語言,事實上幾乎所有與網頁開發相關的語言都有JSON函式庫。  JSON用於描述資料結構,有以下形式存在。  物件 (object):一個物件以「{」開始,並以「}」結束。一個物件包含一系列非排序的名稱/值對,每個名稱 /值對之間使用「,」分割。  名稱/值(collection):名稱和值之間使用「:」隔開,一般的形式是:  {name:value}  一個名稱是一個字串; 一個值可以是一個字串,一個數值,一個物件,一個布爾值,一個有序列表,或者一個 null值。  值的有序列表(Array):一個或者多個值用「,」分割後,使用「[」,「]」括起來就形成了這樣的列表,形如:  [collection, collection]  字串:以""括起來的一串字元。  數值:一系列0-9的數字組合,可以為負數或者小數。還可以用「e」或者「E」表示為指數形式。  布林值:表示為 true 或者 false。  在很多語言中它被為和解釋為陣列。  JSON的格式描述可以參考RFC 4627。
  • 10.
  • 11.
  • 12.
  • 13.
    Sharding and replicate Sharding 及Replicate set Replicate 可以再加上一層Sharding 切片將資 料放至另一個Replicate sets ,  可以將Replicate set 改成 Sharding cluster 也可以將Sharding convert 成 replicate (不建議作,因為會有Data loss 風險)
  • 14.
    Sharding  將資料分散儲存在多台機器的機制  Clustersharding 需大量的記憶體 及1台 config serve 存放 META DATA 在作Sharding 時會將資料都放在RAM 中,以 求減尐page out 的機率 run a query that requires MongoDB to scan every document in a collection, the working set includes every active document in memory.
  • 15.
    Sharding 3 roles Config Server:用於儲存Metadata  Mangos : 用於作DB 路徑轉導至存放實際資料 的位置  Mangodb: 存放資料的真實路徑
  • 16.
    Sharding limits  在執行Migration Data process , 資料在搬時 會使 Cluster Balancer 暫時失效,直至資料完 全BALANCE
  • 17.
    Sharding Cluster Architecture Production Cluster Architecture
  • 18.
    Sharding Cluster Architecture 在Produdction 環境中,Mangodb 要求是3 個config server 對映1~數組的Mongodb 而且要求 config server 必需為分別的 Mongodb 上,意思就是說至少3台組成一個 cluster (只是將資料切片至不同台,不是data protect)
  • 19.
  • 20.
  • 21.
    參考文件  Is MongoDBa good alternative to RDBMs databases (like Oracle and Mysql)
  • 22.
    Concepts  1.sharding justcute date to slice and save to different machines. Also sharding is auto do  2.replicates is keep data have same copy  3.security option default is close, mean everyone can login to MongoDB.
  • 23.
    參考客戶案例 美國:foursquare, Cisco, McAfee,MTV Networks 法國:Orange Digital(法國電信業者) 德國:Bavarian State Chancellery (巴伐利亞州 總理府 政府單位) 歐盟:CERN CMS 台灣:趨勢防毒,Whoscall(己被LINE 母公司買 下), XBRL創新之龍(台灣證交所舉辦的XBRL 軟 體設計勝出團隊,有可能商轉 )
  • 24.
    Mangodb Security  TrustedEnvironment : 在建置時,他會先假 設Mangodb 所有的服務是處在 可信任的環 境,意思說Mangodb 只提供很基本的防護  Audit requirement : Data Encrypt
  • 25.
    Basic Security  ACL機制  Sharded cluster Security
  • 26.
    設定驗證方式  步驟 一:在未設定auth 時,先在mongodb 中,建立資料庫及對映的使用者,及對應的 role  步驟 二:進入/etc/mongodb.conf 加入 Auth = true 這一步在KeyFile = sslfile 時也會自動打開  步驟 三 : 將mongodb 重啟
  • 27.
    Mongodb 角色(role)權限介紹 Read 唯讀 readWrite可以對DB 作寫入建collection dbAdmin 可作 index , 但不能對使用者作 權限管理 userAdmin 唯有給此角色,方可對使用者作 管理 clusterAdmin
  • 28.
    網路安全  預設提供對外連線的PORT: 27017 基本過濾連線是利用 IPTABLES .. Firewall軟體 定義
  • 29.
  • 30.
  • 31.
    Basic Operation  在LINUX下執行 mongo #mogno - - host IP address 會先進入 操作界面
  • 32.
  • 33.