1. 程式人生 > >MongoDB-資料庫即服務/springboot+mongo

MongoDB-資料庫即服務/springboot+mongo

基本概念

MongoDB 是一個基於分散式檔案儲存的資料庫 c++編寫

sql與nosql

關係型資料庫 1 . 事務處理—保持資料的一致性; 2. 由於以標準化為前提,資料更新的開銷很小(相同的欄位基本上只有一處); 3. 可以進行Join等複雜查詢。

1 . 擴充套件困難:由於存在類似Join這樣多表查詢機制,使得資料庫在擴充套件方面很艱難; 2. 讀寫慢:這種情況主要發生在資料量達到一定規模時由於關係型資料庫的系統邏輯非常複雜,使得其非常容易發生死鎖等的併發問題,所以導致其讀寫速度下滑非常嚴重; 3. 成本高:企業級資料庫的License價格很驚人,並且隨著系統的規模,而不斷上升; 4. 有限的支撐容量:現有關係型解決方案還無法支撐Google這樣海量的資料儲存;有限的支撐容量:現有關係型解決方案還無法支撐Google這樣海量的資料儲存;

Nosql 1.簡單的擴充套件:典型例子是Cassandra,由於其架構是類似於經典的P2P,所以能通過輕鬆地新增新的節點來擴充套件這個叢集; 2.快速的讀寫:主要例子有Redis,由於其邏輯簡單,而且純記憶體操作,使得其效能非常出色,單節點每秒可以處理超過10萬次讀寫操作; 3.低廉的成本:這是大多數分散式資料庫共有的特點,因為主要都是開源軟體,沒有昂貴的License成本; 1 . 不提供對SQL的支援:如果不支援SQL這樣的工業標準,將會對使用者產生一定的學習和應用遷移成本; 2. 支援的特性不夠豐富:現有產品所提供的功能都比較有限,大多數NoSQL資料庫都不支援事務,也不像MS SQL Server和Oracle那樣能提供各種附加功能,比如BI和報表等; 3. 現有產品的不夠成熟:大多數產品都還處於初創期,和關係型資料庫幾十年的完善不可同日而語;

為什麼選擇MongoDB

1.沒有表結構限制 2.完全的索引支援 redis是key-value HBASE是單索引,二級索引需要自己構建 3.複製集保證安全,分片擴充套件資料規模 4.支援鬆散的bson格式 5.可以做叢集,分散式

win下安裝的困難

在這裡插入圖片描述 cmd不能切換目錄 安裝流程 mongod --config "f:\mongoDB\mongodb.conf"

mongoDB常用命令

  • collection 集(表)
  • bson
  • 不支援sql查詢
  • _id主鍵
  • 支援GEO索引

顯示資料庫show databases; admin是用於管理的資料庫 新建database=================use demodb

顯示當前資料庫===============db 建立collection=================db.createCollection("devices") 顯示collection=================show collections 向collection中插入=======db.devices.insert()/db.devices.insertOne()/db.devices.insertMany()

//預設會新增_id主鍵
db.devices.insert({"divceId":90001,"deiveStatus":0})

查詢所有db.devices.find() 條件查詢db.devices.find({"status":0})

修改資料db.devices.update({"deviceId":90001},{$set:{"deviceStatus":9}})

刪除資料db.devices.deleteOne({"deviceId":90001})/db.devices.deleteMany()

springboot+mongodb