MySQL

Node.js 即時處理 (2)

教學目標

透過 sails 套件自動產生搭配資料庫基本操作的即時處理 API 。

前置作業

  1. 完成 Node.js 套件安裝與設置。
  2. 完成 MongoDB 和 MySQL 兩種資料庫安裝與設置。
  3. 在資料庫中建立 user 資料表,其中包括數值型態 id 欄位和字串型態 name 欄位。

套件安裝

1
2
3
$ npm install sails --save
$ npm install sails-mongo --save
$ npm install sails-mysql --save

使用教學

建立專案

1
$ sails new appProject

建立使用者的 RESTful API。

1
2
$ cd appProject
$ sails generate model user

設定資料庫 - MongoDB

Adapter

1
2
$ cd appProject/config
$ vi adapters.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
module.exports.adapters = {
mongo: {
module : 'sails-mongo',
host : '伺服器位址',
port : 27017,
user : '使用者名稱',
password : '使用者密碼',
database : '資料庫名稱'
},
disk: {
module: 'sails-disk'
},
'default': 'disk',
}

Model

1
2
$ cd api/models
$ vi User.js
1
2
3
4
5
6
7
8
9
10
11
module.exports = {
adapter: 'mongo',
attributes: {
id: {
type: 'integer'
},
name: {
type: 'string'
}
}
};

設定資料庫 - MySQL

Adapter

1
2
$ cd appProject/config
$ vi adapters.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
module.exports.adapters = {
mysql: {
module : 'sails-mysql',
host : '伺服器位址',
port : 3306,
user : '使用者名稱',
password : '使用者密碼',
database : '資料庫名稱'
},
disk: {
module: 'sails-disk'
},
'default': 'disk'
}

Model

1
2
$ cd api/models
$ vi User.js
1
2
3
4
5
6
7
8
9
10
11
module.exports = {
adapter: 'mysql',
attributes: {
id: {
type: 'integer'
},
name: {
type: 'string'
}
}
};

啟動專案

1
2
$ cd appProject
$ sails lift

在瀏覽器網址列輸入 http://localhost:1337/user ,就能開始使用所建立好的使用者 RESTful API 同步存取資料庫中的資訊。

相關資源

Node.js 資料庫處理 (1)

基本介紹

教學目標

透過 Node.js 進行 MySQL 資料庫的基本操作。

前置作業

  1. 完成 Node.js 套件安裝與設置。
  2. 完成 MySQL 資料庫安裝與設置。

套件安裝

1
$ npm install mysql --save

使用教學

程式碼一開始必須建立資料庫連線,待資料處理完成之後,更要記得關閉資料庫。

建立連線

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var mysql = require('mysql');

var host = '伺服器位址';
var user = '使用者名稱';
var password = '使用者密碼';
var database = '預設資料庫';

var connection = mysql.createConnection({
host: host,
user: user,
password: password,
database: database
});
connection.connect();

資料庫基本操作有建立 (Create) 、 讀取 (Read) 、 更新 (Update) 、 刪除 (Delete) 等四項,簡稱 CRUD。

建立資料

1
2
3
4
5
6
7
8
9
10
11
var table = '預設資料表';
var data = {
id: 1,
name: 'leo yeh'
};
connection.query('INSERT INTO `' + table + '` SET ?', data, function(err, results) {
if (err) {
throw err;
}
console.log(results);
});

讀取資料

1
2
3
4
5
6
7
var table = '預設資料表';
connection.query('SELECT * FROM `' + table + '`', function(err, results, fields) {
if (err) {
throw err;
}
console.log(results);
});

更新資料

1
2
3
4
5
6
7
8
9
10
11
var table = '預設資料表';
var data = {
id: 1,
name: 'Leo Yeh'
};
connection.query('UPDATE `' + table + '` SET ? WHERE id = :id', data, function(err, results) {
if (err) {
throw err;
}
console.log(results);
});

刪除資料

1
2
3
4
5
6
7
8
9
10
11
var table = '預設資料表';
var data = {
id: 1,
name: 'Leo Yeh'
};
connection.query('DELETE `' + table + '` WHERE id = :id', data, function(err, results) {
if (err) {
throw err;
}
console.log(results);
});

關閉連線

1
connection.end();

相關資源

2014Q2 工作心得 (1)

目前只要談到巨量資料分析,幾乎都會想到 Hadoop 的完整的生態環境,可是對於新創公司的我們資料量的確還未到達立即需要使用 Hadoop 分散式處理的程度,因為透過 Google Analytics 中的事件定義就能滿足我們當時對於資料的營運需求。

此外 Google BigQuery 雲端服務剛剛推出沒多久,並且有提供新創公司的試用方案,更重要的是 Hadoop 主要是基於 Google 在 2004 年所提出的 MapReduce 軟體架構進行分析,然而 Google BigQuery 主要是基於 Google 在 2010 年所提出的 Dremel 分散式資料分析系統,根據 Google 官方的研究報告,我們可以很清楚的了解 Dremel 的確比 MapReduce 擁有更快的處理效能。

所以我們就決定投入時間將 Amazon RDS 中 2014 年第二季資料匯入至 Google BigQuery 之中,接著透過 SQL 查詢指令將原本需要花費數三十分鐘以上才能完成的工作縮短至不到五分鐘皆能完成,最後再搭配 Google Spreedsheet 試算表中的 Script 腳本指令,就能夠透過資料以圖表呈現的方式讓行銷人員進行參考。