Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

NoSQL-MongoDB

441 views

Published on

艾鍗教你從實作中認識物聯網!

http://bit.ly/2jZRwt2

課程使用Raspberry Pi結合ARM mbed Cloud來實現一個物聯網解決方案。你會了解M2M(Machine-to-Machine)網路協定,包含CoAP、MQTT、LWM2M等協定,並藉由Raspberry Pi連接 Cloud。 Raspberry Pi的部份教你連接一些感測器,包含GPIO、數位界面I2C的溫溼度感測器、類比感測器如光感應器等,並將這些感測器成為定義為不同的Resource Path並註冊在mbed cloud中。
本課程將採用Node.js撰寫WebAPP,使用HTTP/RESTful API存取Resource。在實作WebAPP中,除了後端Node.js,你也將會看到後端如何與前端瀏覽器之間要如何溝通的方式,如AJAX或WebSocket

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

NoSQL-MongoDB

  1. 1. MongoDB 艾鍗學院
  2. 2. 資料庫 資料操作四大行為: CRUD • 新增(Create)、讀取(Read)、更新(Update)、刪除 (Delete) • RDBMS: Relational Database Management System • 須熟悉SQL (Structural Query Language)語法來進行DB 操作 • 須先建立Schemas (表格欄位的資料型態表與資料表間 的關聯),且插入每筆皆進行嚴格的資料型態檢查 • Primary Key, Foreign key • MySQL、MariaDB、SQLite、MS SQL Server、MS Access • 以往資料讀遠多於寫,而現在寫入速度需求大增, NoSQL資料庫興起 • BigData is 3Vs : volume, variety and velocity • NoSQL(Not only SQL)
  3. 3. 資料庫 資料操作四大行為: CRUD • 新增(Create)、讀取(Read)、更新(Update)、刪除 (Delete) • RDBMS: Relational Database Management System • 須熟悉SQL (Structural Query Language)語法來進行DB 操作 • 須先建立Schemas (表格欄位的資料型態表與資料表間 的關聯),且插入每筆皆進行嚴格的資料型態檢查 • Primary Key, Foreign key • MySQL、MariaDB、SQLite、MS SQL Server、MS Access • 以往資料讀遠多於寫,而現在寫入速度需求大增, NoSQL資料庫興起 • BigData is 3Vs : volume, variety and velocity • NoSQL(Not only SQL)
  4. 4. RDBMS vs NoSQL database collection document field
  5. 5. 在Raspberry Pi安裝MongoDB Server 下載 mongoDB Binaries (pre-compiled version) 1) Get mongod.tar.gz 2) tar zxvf mongod.tar.gz 3) cd mongoDB 啓動mongoDB 伺服器 1) mkdir –p /data/db/ 2) ./mongod --port 27017 --bind_ip 0.0.0.0 & • 預設只能本機存取(127.0.0.1),0.0.0.0表示允許任何IP連入 • 執行netstat –atn 確認Port 27017 在Listen • 異常結束時, 要刪除lock檔, 才能重新啓動.. • rm –rf /data/db/mongod.lock
  6. 6. 使用mongo shell 操作MongoDB Server ./mongo
  7. 7. MongoDB MongoDB每一筆資料(document) 是以JSON 格式來進行儲存
  8. 8. Robomongo (Robo 3T) www.robomongo.org
  9. 9. 查詢結果 Snapshot
  10. 10. mongoose module http://mongoosejs.com/ 用來存取MongoDB的node.js module require('mongoose');
  11. 11. Example var mongoose = require('mongoose'); // 連線到localhost上的MongoDB,使用test資料庫 mongoose.connect('mongodb://localhost/ test'); var collectionName = 'dog'; var catSchema = mongoose.Schema( { name: String, age: Number, sex: Boolean, date: { type: Date, default: Date.now } //default date }); var Cat = mongoose.model('Cat',catSchema,collectionName);
  12. 12. var people = new Cat(); people.name = name; people.age = 50; people.sex = true; //存入該資料到MongoDB people.save(function (err) { if (err) { // 存入失敗 console.log('Something's wrong'); return; } // 存入成功 console.log('Add successfully! '); process.exit(); });
  13. 13. Defining your schema var mongoose = require('mongoose'); var Schema = mongoose.Schema; var blogSchema = new Schema({ title: String, author: String, body: String, comments: [{ body: String, date: Date }], date: { type: Date, default: Date.now }, hidden: Boolean, meta: { votes: Number, favs: Number } }) SchemaTypes: • String • Number • Date • Buffer • Boolean • Mixed • ObjectId • Array
  14. 14. 實驗: MongoDB 資料操作CRUD 程式路徑: Node.js/MongoDB/MongoDB_01_cmd npm install Test Case: • node app.js add joseph • node app.js find • node app.js remove joseph • node app.js update joseph age 150 • node app.js update joseph sex true
  15. 15. 實驗: MongoDB+WebSocket+Express 程式路徑: Node.js/MongoDB/appendTable npm install; node app.js

×