閱讀499 返回首頁    go 技術社區[雲棲]


MongoDb

1.-----------------What is NoSQL ?
2.----------------What is MongoDB?
3.----------------MongoDB CRUD Operations
4.---------------MongDB Index Research
5.---------------MongoDB Sharding Research

What is NoSQL?
NoSQL (NoSQL = Not Only SQL), meaning "not just SQL".

Why use NoSQL?
         In the modern computing system on the network every day will have a huge amount of data. A large part of these data is handled by the relational database management system (RDMBSs) like Oracle,Mysql SqlServer and so on. Through the application practice proved that the relationship model is very suitable for customer server programming, far beyond the expected benefits, today it is the dominant technology in structured data storage ,network and business applications .
        Today we can easily access and crawl mass data through third-party platforms (eg Google, Facebook, etc.). User's personal information, social networks, geography, user-generated data, and user-operated logs have multiplied. If we want to dig these user data, that SQL database is not suitable for these applications, while the NoSQL database is able to deal with these large data.

MongoDB[1] 是一個基於分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。類似於json的bson組成---二進製形式的json,MongoDB 文檔類似於 JSON 對象 。因此可以存儲比較複雜的數據類型。字段值可以包含其他文檔,數組及文檔數組。

在mongodb中基本的概念是文檔、集合、數據庫,下麵我們挨個介紹
我們可以對比sql和mongodb來了解一下,在關係型數據庫中數據庫下的基本單位是table,而在mongodb中是用collection,一行數據對應的是mongodv中的一個文檔,這就是為司馬我們稱mongodb為麵向文檔的數據庫,我們注意到mongodb中不存在表連接的情況,關係型數據庫的典型特征是表之間存在關聯關係,mongodb不存在這種表連接語句,那麼文檔之間的一對一地以對多,多對多的情況mongodb可以通過在字段中嵌套一個或多個文檔來實現這種關係,我認為這是一種以空間換時間的做法,比如有兩張表用戶表和商品表,一個用戶對應多個商品,假設想要查詢一個用戶下的所有商品信息,在關係型數據庫的查詢中需要鏈表查詢join,我們知道join必然會帶來很多磁盤隨機度的操作,隨機讀無法像順序讀那樣的局部性好,緩存效果不好,反觀Mongodb這種Nosql係統中,可以將一個用戶的對應的所有商品信息嵌套存入該用戶對應的文檔的字段裏麵去,也就是說這些信息都cunxz也就是說這些信息都存在一個文檔中,局部性很好,這樣的雖然磁盤冗餘了大量的數據,但卻大大加快了查詢的速度,從當前計算機的發展來看,空間hua空間換時間是很正常的,而計算機最關鍵的技術高速緩存cache技術就是用空間huansh技術就是用空間換時間的典範。
想到這裏其實也給了我一些提示,比如很多人在使用Mysql的過程中查詢記錄過多,比如2000W條數據的時候,數據庫性能就開始下降,Nosql給我們的提示就是可以通過寬表冗餘一些數據來實現join,這就是一種空間換時間的做法。

最後更新:2017-08-13 22:22:58

  上一篇:go  SQL防火牆
  下一篇:go  激活引入非線性,池化預防過擬合(深度學習入門係列之十二)