標籤:標準 輸入 主題 位元組 eal 定製 mysql資料庫 選擇 管理系
簡單來說,SQLITE功能簡約。小型化,追求最大磁碟效率;MYSQL功能全面,綜合化。追求最大並發效率。假設僅僅是單機上用的,資料量不是非常大。須要方便移植或者須要頻繁讀/寫磁碟檔案的話。就用SQLite比較合適;假設是要滿足多使用者同一時候訪問。或者是網站訪問量比較大是使用MYSQL比較合適。
以下具體介紹兩者的差別和應用:
SQLite
SQLite是非凡的資料庫,他能夠進程在使用它的應用中。作為一個自包括、基於檔案的資料庫,SQLite提供了出色的工具集,能夠處理全部類型的資料,沒有什麼限制,並且比起server執行的進程型server使用起來輕鬆很多。
一個應用使用SQLite時。它的功能直接被整合在當中。應用會直接訪問包括資料的檔案(即SQLite資料庫),而不是通過一些連接埠(port, socket)來互動。感謝這樣的底層技術,這使SQLite變得很高速和高效,而且十分強大。
SQLite支援的資料類型
NULL:
NULL值。
INTEGER:
有符號整數。依照設定用1、2、3、4、6或8位元組儲存。
REAL:
浮點數。使用8位元組IEEE浮點數方式儲存。
TEXT:
文本字串,使用資料庫編碼儲存(UTF-8, UTF-16BE 或 UTF-16LE)。
BLOB:
二進位大對象,怎麼輸入就怎麼儲存。
注: 想瞭解很多其它有關SQLite資料類型的資訊。能夠查看這一主題的 官方文檔 。
SQLite 的長處
基於檔案:
整個資料庫都包括在磁碟上的一個檔案裡,因此它有非常好的遷移性。
標準化:
雖然它看起來像個“簡化版”的資料庫,SQLite 確實支援 SQL。
它略去了一些功能(RIGHT OUTER JOIN 和 FOR EACH STATEMENT),可是,又同一時候添加了一些其它功能。
對開發乃至測試都非常棒:
在絕大多數應用的開發階段中,大部分人都很須要解決方式能有並發的靈活性。
SQLite 含有豐富功能基礎,所能提供的超乎開發所需,而且簡潔到僅僅需一個檔案和一個 C 連結庫。
SQLite的缺點
沒實使用者管理:
進階資料庫都能支援使用者系統。比如,能管理資料庫串連對資料庫和表的訪問許可權。
但因為 SQLite 產生的目的和本身性質(沒有多使用者並發的高層設計)。它沒有這個功能。
缺乏額外最佳化效能的靈活性:
仍然是從設計之初,SQLite 就不支援使用各種技巧來進行額外的效能最佳化。這個庫easy配置,easy使用。既然它並不複雜,理論上就無法讓它比方今更快,事實上如今它已經非常快了。
何時使用 SQLite ?
嵌入式應用:
全部須要遷移性,不須要擴充的應用,比如。單使用者的本地應用,行動裝置 App和遊戲。
取代磁碟訪問:
在非常多情況下。須要頻繁直接讀/寫磁碟檔案的應用,都非常適合轉為使用 SQLite ,能夠得益於 SQLite 使用 SQL 帶來的功能性和簡潔性。
測試:
它能秒殺大部分專門針相應用商務邏輯(也就是應用的主要目的:能完畢功能)的測試。
何時不用 SQLite ?
多使用者應用:
假設你在開發的應用須要被多使用者訪問,並且這些使用者都用同一個資料庫,那麼相比 SQLite 不妨選擇一個功能完整的關係型資料庫(比如 MySQL)。
須要大面積寫入資料的應用:
SQLite 的缺陷之中的一個是它的寫入操作。這個資料庫同一時間僅僅同意一個寫操作。因此輸送量有限。
MySQL
MySQL 在全部大型資料庫server中最流行的一個. 它的特性豐富。產品的開源性質使得其驅動了線上大量的網站和應用程式. 要入手 MySQL 相對簡單,開發人員能夠在互連網上面訪問到大量有關這個資料庫的資訊.
注意: 因為這個產品的普及性,大量的第三方應用、工具和整合庫對於操作這個RDBCMS的方方面面大有協助.
Mysql沒有嘗試去實現SQL標準的所有,而是為使用者提供了非常多實用的功能. 作為一個獨立的資料庫server,應用程式同Mysql守護進程的互動,告訴它去訪問資料庫自身 -- 這一點不像 SQLite.
MySQL支援的資料類型
TINYINT:
一個很小的整數.
SMALLINT:
一個小整數.
MEDIUMINT:
一個中間大小的整數.
INT or INTEGER:
一個正常大小的整數.
BIGINT:
一個大的整數.
FLOAT:
一個小的 (單精確度) 浮點數。不能是無符號的那種.
DOUBLE, DOUBLE PRECISION, REAL:
一個正常大小 (雙精確度) 的浮點數,不能使無符號的那種.
DECIMAL, NUMERIC:
沒有被封裝的浮點數。不能使無符號的那種.
DATE:
一個日期.
DATETIME:
一個日期和時間的組合.
TIMESTAMP:
一個時間戳記.
TIME:
一個時間.
YEAR:
一個用兩位或者4位元字格式表示的年份(預設是4位).
CHAR:
一個固定長度的字串。儲存時總是在其固定長度的空間裡靠右對齊.
VARCHAR:
一個可變長度的字串.
TINYBLOB, TINYTEXT:
一個BLOB或者TEXT列。最大長度255 (2^8 - 1)個字元.
BLOB, TEXT:
一個BLOB或者TEXT列,最大長度 65535 (2^16 - 1)個字元.
MEDIUMBLOB, MEDIUMTEXT:
一個BLOB或者TEXT列,最大長度 16777215 (2^24 - 1)個字元.
LONGBLOB, LONGTEXT:
一個BLOB或者TEXT列。最大長度4294967295 (2^32 - 1) 個字元.
ENUM:
一個枚舉類型.
SET:
一個集合.
MySQL的長處
easy使用:
安裝MySQL很easy。第三方庫,包含可視化(也就是有GUI)的庫讓上手使用資料庫很簡單。
功能豐富:
MySQL 支援大部分關係型資料庫應該有的 SQL 功能——有些直接支援。有些間接支援。
安全:
MYSQL 有非常多安全特性,當中有些相當進階。
靈活而強大:
MySQL 能處理非常多資料,此外如有須要,它還能“適應”各種規模的資料。
高速:
放棄支援某些標準。讓 MySQL 效率更高並能使用捷徑,因此帶來速度的提升。
MySQL的缺點
已知的局限:
從設計之初。MySQL 就沒打算做到全知全能,因此它有一些功能局限。無法滿足某些頂尖水平應用的需求。
可靠性問題:
MySQL 對於某些功能的實現方式(比如,引用。事務。資料審核等) 使得它比其它一些關係型資料庫略少了一些可靠性。
開發停滯:
雖然 MySQL 理論上仍是開源產品。也有人抱怨它誕生之後更新緩慢。然而。應該注意到有一些基於 MySQL 並完整整合的資料庫(如 MariaDB)。在標準的 MySQL 基礎上帶來了額外價值。
何時使用 MySQL?
分布式操作:
當SQLite所提供的不能滿足你的須要時,能夠把MySQL包含進你的部署棧。就像不論什麼一個獨立的資料庫server,它會帶來大量的操作自由性和一些先進的功能。
高安全性:
MySQL的安全功能,用一種簡單的方式為資料訪問(和使用)提供了可靠的保護。
Web網站 和 Web應用:
絕大多數的網站(和Web應用程式)能夠忽視約束性地簡單工作在MySQL上。
這樣的靈活的和可擴充的工具是便於使用和易於管理的——這被證明很有助於長期執行。
定製解決方式:
假設你工作在一個高度量身定製的解決方式上,MySQL可以非常easy地跟隨和運行你的規則,這要感謝其豐富的配置設定和操作模式。
何時不用 MySQL?
SQL 服從性:
由於 MySQL 沒有[想要]實現 SQL 的所有標準。所以這個工具不全然符合SQL。
假設你須要對這種關聯式資料庫管理系統進行整合,從MySQL進行切換是不easy的。
並發:
即使MySQL和一些儲存引擎可以真地非常好運行讀取操作,但並發讀寫還是有問題的。
缺乏特色:
再次提及,依據資料庫引擎的選擇標準,MySQL會缺乏一定的特性,如全文檢索搜尋。
SQLite和MySQL資料庫的差別與應用