2018年2月28日 星期三

CAP 定理 與 NoSQL




NoSQL是對不同於傳統的關聯式資料庫資料庫管理系統的統稱。

兩者存在許多顯著的不同點,其中最重要的是


  1. NoSQL不使用SQL作為查詢語言
  2. 資料存儲可以不需要固定的表格模式 (Schema)
  3. 經常會避免使用SQL的JOIN操作,一般有水平可延伸性的特徵。

不同於RDMBS 的ACID特點,NoSQL的結構通常提供弱一致性的保證 ,如最終一致性,或交易僅限於單個的資料項。




CAP 定理 與 NoSQL 套件對照表

CAP 定理 可參考下述文件:
CAP theorem (CAP定理), 下述摘錄自此兩篇:
在 理論計算機科學中, CAP定理(CAP theorem), 又被稱作 布魯爾定理(Brewer's theorem), 它指出對於一個 分布式計算系統 來說,不可能同時滿足以下三點:
  • Consistency: 一致性 (所有節點在同一時間具有相同的數據) (all nodes see the same data at the same time)
  • Availability: 可用性 (保證每個請求不管成功或者失敗都有響應) (a guarantee that every request receives a response about whether it was successful or failed)
  • Partition tolerance: 分隔容忍 (系統中任意信息的丟失或失敗不會影響系統的繼續運作) (the system continues to operate despite arbitrary message loss or failure of part of the system)
根據定理,分佈式系統只能滿足三項中的兩項而不可能滿足全部三項。
因為 CAP 三者無法同時達成, 所以 NoSQL 套件目前都是符合其中兩項, 另外一項支援度就會差一點, 下述文章有整理目前 NoSQL 的資料庫, 對應 CAP 定理 的整理.
BASE理論
BASE理論是CAP理論結合實際的產物。 BASE(Basically Available, Soft-state,Eventually consistent) BASE恰好和ACID是相對的,BASE要求犧牲高一致性,獲得可用性或可靠性
References:
https://blog.longwin.com.tw/2013/03/nosql-db-choose-cap-theorem-2013/


https://goo.gl/EcCcj7


https://goo.gl/dcdPPA


2018年2月22日 星期四

SIGFOX 連線&傳送教學





Serial (UART) Parameters:9600 baud, no parity, 8 data bit and 1 stop bit
依序輸入指令,建議使用putty連線
AT // will return OK if not, check Arduino UART, board communition or change Terminal app
AT$GI? //will return X,Y, If X=0 or Y<3
AT$RC
AT$SF= xxxxxxxxxxxx //it's what you want to send

This procedure will force the module to send the frame within the macro channel listened by SIGFOX network.

2017年12月30日 星期六

Gnuplot-3D


splot "data.txt" using 1:2:3 with lines






#data.txt 每一條線隔2行空白, 線可分開繪製, 若是只隔一行空白則會連起來




#data.txt
# X   Y    Z
16    16   0
16   32   1
16   64   15
16    128  4
16    256  9


32    16   10
32   32   21
32    64   31
32    128  34
32    256  49


64    16   0
64   32   12
64   64   19
64    128  41
64    256  93


128   16   30
128   32   31
128   64   15
128   128  14
128   256  93


256   16   30
256   32   31
256   64   80
256   128  14
256   256  5

https://goo.gl/EcCcj7

https://goo.gl/uMDpM1

2017年12月7日 星期四

GPU vs CPU




如果你要跑CNN或是RNN , 由於Training Accuracy 要降, 沒有執行一定次數的參數update是無法做到的, 所以資料量大又要不斷運算, 藉由GPU來執行,會快上超多!

經實測結果以下面兩種平台法測試, 速度真得差了很多...



平台1: 沒有GPU的平台
CPU: model name   : Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz
# of Thread    : 12
RAM: 10G
OS: Ubuntu 16.04



平台2 : 具有GPU的平台
CPU model name    : Intel Core i7-7700K CPU @ 4.5GHz
# of Thread     : 6
GPU: GeForce GTX 1080
RAM:  32G
OS: Ubuntu 16.04


DeviceQuery Example



https://goo.gl/uMDpM1


2017年11月22日 星期三

.py 和 ipython notebook (.ipynb) 互轉?


1) 如何將 xxx .py 轉成 xxx.ipynb ?

在jupyter 上的, 執行

%load relu.py

就可以將relu.py 程式碼讀入, 然後再存檔, 就會自動存成了 relu.ipynb 了!









2) 如何將 xxx .ipynb 轉成 xxx.py ?

在juypter 的一個cell下, 執行下列命令!

!jupyter nbconvert --to script hw3.ipynb







https://goo.gl/EcCcj7