SQL數據庫驅動
Qt SQL模塊使用驅動插件(driver plugins)與數據庫API進行通信。
由於Qt的SQL模塊API是與數據庫無關的,所以所有特定的數據庫代碼都包含在驅動程序中。Qt提供了一些驅動,你也可以自己添加驅動。
下表是Qt包含的驅動:
Driver name | DBMS |
---|---|
QDB2 | IBM DB2(v7.1 and above) |
QIBASE | Borland InterBase |
QMYSQL | MySQL |
QOCI | Oracle Call Interface Driver |
QOBC | Open Database Connectivity (ODBC) - Microsoft SQL Server and other ODBC-compliant databases |
QPSQL | PostgreSQL (versions 7.3 and above) |
QSQLITE2 | SQLite version 2 |
QSQLITE | SQLite version 3 |
QTDS | Sybase Adaptive Server (Note: obsolete from Qt 4.7) |
上面包含的數據中,SQLite是在所有平臺具有最佳測試覆蓋率和支持的進程內數據庫系統。Oracle通過OCI,PostgreSQL和MySQL通過ODBC/本地驅動在Windows和Linux上也進行了良好的測試。至於對其他系統支持的完整性取決於客戶端庫的可用性和質量。
Note1:想構建一個驅動程序,你得有一個合適的DBMS(database management system)客戶端。它提供了對DBMS的API訪問,通常它們也綁定在一起。大部分安裝程序也會讓你安裝"開發庫(development libraries)",而你也需要它。這些庫負責與DBMS的底層(low-level)通訊。
Note2:當你在開源項目中使用Qt,但數據庫是商業數據庫時,你需要驗證客戶端庫與LGPL的兼容性。
SQLite
因爲使用需求問題,經綜合評定,我使用的是QSQLITE,即SQLite數據庫。有關該數據庫的詳情可以看下面網站,
https://www.sqlite.org/version3.html
這邊簡要摘取幾點我所關注的並且符合事實的它的特點,
特點
- 免費
The code for SQLite is in the public domain and is thus free for use for any purpose, commercial or private. - 成熟,應用廣
SQLite is the most widely deployed database in the world. - 輕量級&快速
Faster than direct file I/O,打包不到6MB。 - 部署簡單
- 跨平臺
- Max DB size: 140 terabytes
定位&應用場景
SQLite is not directly comparable to client/server SQL database engines such as MySQL, Oracle, PostgreSQL, or SQL Server since SQLite is trying to solve a different problem.
SQLite的比較對象是fopen(),而不是C/S數據庫引擎。它不太適合高併發、超大數據量的情況。下面會有一些具體的例子給你衡量什麼時候用它。
When to use sqlite?
- 嵌入式設備和物聯網
SQLite數據庫不需要管理,所以它必須在沒有專業技術員支持的情況下運行的設備中工作得非常好。所以它非常適合手機、機頂盒、電視、遊戲機、照相機、手錶、廚房電器、和往期、汽車、機牀、飛機、遠程傳感器、無人機、醫療設備和機器人:“物聯網”。 - APP的文件存儲
SQLite通常用作桌面APP(版本控制器、財務分析工具、媒體編目、CAD包、記錄保存程序等)的磁盤文件格式。 - 網站
SQLite用作大多數低到中等流量的網站,也非常適合。一般來說,一天點擊率低於10萬的網站都可以使用SQLite(這是保守故居,不是上限,經測試,SQLite可以處理十倍於此的流量)。拿SQLite網站距離,它每天處理40萬-50萬的HTTP請求,其中約15-20%是觸及數據庫動態頁面。動態內容每個頁面大概使用200條SQL語句。該VM(virtual machine)與其他23個服務器共享一個屋裏服務器,但大多數情況下平均負載仍低於0.1。 - 數據分析
瞭解SQL的人可以用sqlite3命令行(或者第三方的SQLite訪問軟件)來分析大型數據集。原始數據可以從CSV導入,然後對數據切分,以生成大量的摘要報告。更復雜的分析可以用Tcl或Python寫腳本(這兩種腳本都內置了SQLite),或者R語言等其他語言。事實上,許多信息研究員都以這種方式使用SQLite。
當然,企業級C/S數據庫也可以做到這點,不過,SQLite容易安裝和使用。生成的數據庫是單個文件,可以寫入USB或者通過電子郵件發給同事。 - 還有很多,省略了