2014年5月22日 星期四

Asterisk Internal Database

Asterisk 內部使用的資料庫稱為 AstDB,在 reload 或 restart 時用來保留一些資料,或者使用者也可以用來儲存資料。在 dialplan 有提供 dialplan functions DB、DB_* 等及應用程式 DBdeltree。CLI 也有 database 指令查看。

AMI (內建) 有 DBGet、DBPut、DBDel、DBDelTree

AstDB 的資料以 family 為群組,在 family 中每筆資料 (value) 有唯一的 key。例如 SIP 註冊資訊的 family 是 SIP/Registry,key 為分機名稱,value 為 <addr>:<port>:<expire>:<username>:sip:<contact>:<port>。

一直到 Asterisk 1.8,Asterisk 內部資料庫都是使用 Berkeley DB。Asterisk 10 開始改用 SQLite3。Asterisk 原本就有模組使用 SQLite (SQLite 2) 來儲存 CDR,這裡提到 SQLite2 用字串儲存所有資料,而 SQLite3 用原生的格式儲存數字及 BLOBS,縮小檔案庫大小。

存取 AstDB 的 C 函數
ast_db_put(family, key, value)
ast_db_get(family, key, value, sizeof(value))
ast_db_del(family, key)

參考來源:
  1. https://wiki.asterisk.org/wiki/display/AST/Asterisk+Internal+Database
  2. Using the Asterisk Database (AstDB)
  3. http://www.voip-info.org/wiki/view/Asterisk+database 

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...