33
MONGODB NoSql 特特 Hermes Chiang

Mongo db 特性

Embed Size (px)

DESCRIPTION

MongoDB Background and specifics , also I provide how to use Mongod Security . and Basic MongoDB operation by pymongo 我這份文件有介紹MONGODB的特性及限制,Sharding 及 Replicate 的觀悠,Security怎麼作,怎麼用

Citation preview

Page 1: Mongo db 特性

MONGODB NoSql 特性

Hermes Chiang

Page 2: Mongo db 特性

Mongodb background

主要開發團隊 10gen 創辦人 Dwight Merriman, 他早前是 Doubleclick 公司創辦人Doubleclick 己賣給 GOOGLE.

Page 3: Mongo db 特性

優點 Schema-less

不用先定義好 schema , 在 API 寫入資料時隨時加入對映的 Key-Value

Ease of Scale-out 可以隨時擴充 , 當採用 sharding 可將資料分割

到多台 Server 中 Memory

INDEX 資料都放在記憶體中,讀取速度快 .

Page 4: Mongo db 特性

與 RDBMS 不同之處 不支援 Transactions

原先設計就屬於弱一致性 Less flexibility with more complex

query不支援 JOIN, 無法將 2 個表作 JOIN

因採用 Key:Value 的儲存架構,所以相同的KEY 值無法存在同一份 Document ,但在加入的每一份 Document 中會新增一個 唯一的_id 作辦識

Page 5: Mongo db 特性

Mongodb store data Struct

RDBMS Mongodb 解說Database Database 相當於 ORACLE 的

TABLESPACE

Table collection 一個 collection 相當於一個 TABLE 中的內

Record document Key : Value

Page 6: Mongo db 特性

Collection & Document 同一份 Collection 可以包含多個

Documents

在同一個 Collection 中,各個不同的Document ,key 可以一樣

同一個 Document Key 不能重複

Page 7: Mongo db 特性

Mongodb limits 項目 Limits

BSON Document MAX 16M ( 在同一個Collection ,一份 Document Record 最大是 16M ,但可以有多份 Documents )

Namespace Lengthdatabase and collection nam

MAX 123 Bytes

Replica Setsvoting member

Max 12 members 7members in same time

Page 8: Mongo db 特性

Mogodb 特性 Sharding mode 可以將資料水平切割 schema free 用於資料不明確來源數量 高度相容於 JAVA script 的查詢語言,以

JSON 格式儲存資料

Page 9: Mongo db 特性

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。

Page 10: Mongo db 特性

replicaSet

Page 11: Mongo db 特性

Replicate sets 將資料在多台作保存,但並不是將資料作切分

Page 12: Mongo db 特性

Sharding and replicate

Replicate set or simple directory .

Page 13: Mongo db 特性

Sharding and replicate Sharding 及 Replicate set

Replicate 可以再加上一層 Sharding 切片將資料放至另一個 Replicate sets ,

可以將 Replicate set 改成 Sharding cluster 也可以將 Sharding convert 成 replicate ( 不建議作,因為會有 Data loss 風險)

Page 14: Mongo db 特性

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.

Page 15: Mongo db 特性

Sharding 3 roles Config Server: 用於儲存 Metadata Mangos : 用於作 DB 路徑轉導至存放實際資

料的位置 Mangodb: 存放資料的真實路徑

Page 16: Mongo db 特性

Sharding limits 在執行 Migration Data process , 資料在搬

時會使 Cluster Balancer 暫時失效,直至資料完全 BALANCE

Page 17: Mongo db 特性

Sharding Cluster Architecture Production Cluster Architecture

Page 18: Mongo db 特性

Sharding Cluster Architecture 在 Produdction 環境中, Mangodb 要求是

3 個 config server 對映 1~ 數組的Mongodb 而且要求 config server 必需為分別的Mongodb 上,意思就是說至少 3 台組成一個cluster (只是將資料切片至不同台,不是data protect)

Page 19: Mongo db 特性

Sharding config Config server 在 mango

Page 20: Mongo db 特性

Mongodb 商業優勢已是商業化,提供原廠資源已有線上教育及認證體系

Page 22: Mongo db 特性

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.

Page 23: Mongo db 特性

參考客戶案例美國 :foursquare, Cisco, McAfee, MTV Networks法國 :Orange Digital( 法國電信業者 )德國 :Bavarian State Chancellery (巴伐利亞州總理府 政府單位 )歐盟 :CERN CMS 台灣 :趨勢防毒 ,Whoscall (己被 LINE 母公司買下) , XBRL創新之龍 ( 台灣證交所舉辦的XBRL 軟體設計勝出團隊,有可能商轉 )

Page 24: Mongo db 特性

Mangodb Security Trusted Environment : 在建置時,他會先假設 Mangodb 所有的服務是處在 可信任的環境,意思說Mangodb 只提供很基本的防護

Audit requirement : Data Encrypt

Page 25: Mongo db 特性

Basic Security ACL 機制 Sharded cluster Security

Page 26: Mongo db 特性

設定驗證方式步驟 一:在未設定 auth 時,先在 mongodb

中,建立資料庫及對映的使用者,及對應的role

步驟 二:進入 /etc/mongodb.conf 加入 Auth = true這一步在 KeyFile = sslfile 時也會自動打開

步驟 三 : 將 mongodb 重啟

Page 27: Mongo db 特性

Mongodb 角色 (role)權限介紹

Read 唯讀readWrite 可以對 DB 作寫入建

collection

dbAdmin 可作 index , 但不能對使用者作權限管理

userAdmin 唯有給此角色,方可對使用者作管理

clusterAdmin

Page 28: Mongo db 特性

網路安全預設提供對外連線的 PORT : 27017基本過濾連線是利用 IPTABLES .. Firewall軟體定義

Page 29: Mongo db 特性

Basic Operation DBcollectionsDocument

Page 30: Mongo db 特性

Basic operation

Page 31: Mongo db 特性

Basic Operation 在 LINUX 下執行 mongo

#mogno - - host IP address 會先進入 操作界面

Page 32: Mongo db 特性

API basic operation

Page 33: Mongo db 特性

Mongodb API 開發