標籤:經濟 ESS ssi 精度 預設 資料庫系統 海量 div mon
一、nosql簡介
RDBMS(關係型資料庫)提供的結構化編程,讓資料建模以及應用程式編程變得非常簡單,帶來了非常高的經濟效益,並且學習成本也比較低。但在當今資料大爆炸時代,每時每刻都會海量的資料產生,對於資料的讀寫要求也越來越高,RDBMS已經不能滿足人們的需求了,nosql則應運而生。
nosql(not only sql)意為:不再僅僅是結構化查詢,它完全區別於RDBMS的資料存放區結構,只需保證資料最終一致性而不是遵循ACID原則,讀寫效能遠遠超過RDBMS資料庫。在大資料存放區當中是必不可少的。
常見的nosql如:
1)redis
2)mongodb
3)memcached
二、mongo簡介
mongo也是nosql,但是它和redis不同,它介於nosql和rdbms之間。採用C++編寫的,是一個分布式檔案儲存體的開來源資料庫系統,具備高效能、高可用、易擴充等特性。基本的資料結構是:key-value的結構,可以類比json資料結構來理解mongo的資料結構。
我們先看四個關鍵概念:
1)資料庫(database)
與所有資料庫系統一樣,mongo也可以建立多個獨立的database,database用來儲存資料。
2)集合(collection)
我們可以類比RDBMS的“表”的概念來理解collection,collection儲存在database當中。
3)文檔(document)
我們可以類比RDBMS的“行”的概念來理解document,document存在於collection當中。
4)域(field)
我們可以類比RDBMS的“列”的概念來理解field,field存在於document中。
如:
三、資料類型
資料類型 |
描述 |
String |
字串 |
Integer |
整型 |
Boolean |
布爾型 |
Double |
雙精確度 |
Min/Max keys |
將一個值和bson的最低值和最高值對比 |
Array |
數組或者列表 |
Timestamp |
時間戳記 |
Object |
用於內嵌文檔 |
Null |
建立空值 |
Sympol |
符號,一般與String相同 |
Date |
日期時間 |
Object ID |
對象ID |
Binary Data |
二進位 |
Code |
js指令碼代碼 |
Regular expression |
Regex |
以上的資料類型中特別提及一下Object ID,它類似於一個唯一主鍵可以進行快速的產生和排序,包含12byte:
0-3個位元組是格林尼治時間的時間戳記(晚北京8個小時)
4-6是機器標識碼
7-8是進程ID
9-11是隨機數
mongo中儲存的文檔必須有一個_id鍵。這個鍵的值可以是任何類型的,但是預設是Object ID。
由於ObjectId預設儲存了建立的時間戳記,所以你無需為你的document儲存建立時間戳記欄位,你可以通過getTimestamp來擷取該時間戳記。如:
> var newObject = ObjectId()> newObject.getTimestamp()ISODate("2017-11-25T07:21:10Z")
四、總結
mongo採用C++編寫,是分布式檔案儲存體的開來源資料庫,高效能、高可用、易擴充,資料結構類似於json的結構,支援豐富的資料類型。
mongodb(1)簡介