国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

SQLite數(shù)據(jù)庫(kù)掃盲

發(fā)布時(shí)間:2009-10-9 09:11    發(fā)布者:linux_Ultra
關(guān)鍵詞: SQLite , 掃盲 , 數(shù)據(jù)庫(kù)
今天注意到SQLite 3.6.11(上個(gè)月發(fā)布的)增加了一個(gè)我期待已久的online backup接口,激動(dòng)之余就順便和大伙兒聊一下SQLite數(shù)據(jù)庫(kù)。本帖權(quán)當(dāng)是SQLite掃盲,如果你對(duì)SQLite已經(jīng)很熟悉,本文就不必再看了。

  ★技術(shù)上的優(yōu)點(diǎn)和特性
  SQLite是一個(gè)輕量級(jí)、跨平臺(tái)的關(guān)系型數(shù)據(jù)庫(kù)。既然號(hào)稱(chēng)關(guān)系型數(shù)據(jù)庫(kù),支持SQL92標(biāo)準(zhǔn)中常用的玩意兒(比如視圖、事務(wù)、觸發(fā)器等)就是理所當(dāng)然的了,咱今天就不細(xì)說(shuō)了。今天主要聊聊一些有點(diǎn)特色的玩意兒。

  ◇輕量級(jí)
  先說(shuō)它的第一個(gè)特色:輕量級(jí)。想必SQLite的作者很看重這個(gè)特性,連它的Logo都是用的“羽毛”,來(lái)顯擺它的輕飄飄。
  SQLite和C/S模式的數(shù)據(jù)庫(kù)軟件不同,它是進(jìn)程內(nèi)的數(shù)據(jù)庫(kù)引擎,因此不存在數(shù)據(jù)庫(kù)的客戶端和服務(wù)器。使用SQLite一般只需要帶上它的一個(gè)動(dòng)態(tài)庫(kù),就可以享受它的全部功能。而且那個(gè)動(dòng)態(tài)庫(kù)的尺寸也挺小,以版本3.6.11為例,Windows下487KB、Linux下347KB。

  ◇綠色軟件
  SQLite的另外一個(gè)特點(diǎn)是綠色:它的核心引擎本身不依賴(lài)第三方的軟件,使用它也不需要“安裝”。所以在部署的時(shí)候能夠省去不少麻煩。

  ◇單一文件
  所謂的“單一文件”,就是數(shù)據(jù)庫(kù)中所有的信息(比如表、視圖、觸發(fā)器、等)都包含在一個(gè)文件內(nèi)。這個(gè)文件可以copy到其它目錄或其它機(jī)器上,也照用不誤。

  ◇跨平臺(tái)/可移植性
  如果光支持主流操作系統(tǒng),那就沒(méi)啥好吹噓的了。除了主流操作系統(tǒng),SQLite還支持了很多冷門(mén)的操作系統(tǒng)。我個(gè)人比較感興趣的是它對(duì)很多嵌入式系統(tǒng)(比如Android、Windows Mobile、Symbin、Palm、VxWorks等)的支持。

  ◇內(nèi)存數(shù)據(jù)庫(kù)(in-memory database)
  這年頭,內(nèi)存越來(lái)越便宜,很多普通PC都開(kāi)始以GB為單位來(lái)衡量?jī)?nèi)存(服務(wù)器就更甭提了)。這時(shí)候,SQLite的內(nèi)存數(shù)據(jù)庫(kù)特性就越發(fā)顯得好用。
  SQLite的API不區(qū)分當(dāng)前操作的數(shù)據(jù)庫(kù)是在內(nèi)存還是在文件(對(duì)于存儲(chǔ)介質(zhì)是透明的)。所以如果你覺(jué)得磁盤(pán)I/O有可能成為瓶頸的話,可以考慮切換為內(nèi)存方式。切換的時(shí)候,操作SQLite的代碼基本不用大改,只要在開(kāi)始時(shí)把文件Load到內(nèi)存,結(jié)束時(shí)把內(nèi)存的數(shù)據(jù)庫(kù)Dump回文件就OK了。在這種情況下,前面提到的“online backup API”就派上用場(chǎng)了,聰明的同學(xué)應(yīng)該明白我為啥這么期待backup功能了吧?

  ★技術(shù)上的缺點(diǎn)和不足
  前面光聊了特性和優(yōu)點(diǎn),為了避免槍手寫(xiě)軟文的嫌疑,再來(lái)說(shuō)說(shuō)SQLite的一些缺點(diǎn)。列位看官將來(lái)如果想用它,這些缺點(diǎn)要權(quán)衡一下。

  ◇并發(fā)訪問(wèn)的鎖機(jī)制
  SQLite在并發(fā)(包括多進(jìn)程和多線程)讀寫(xiě)方面的性能一直不太理想。數(shù)據(jù)庫(kù)可能會(huì)被寫(xiě)操作獨(dú)占,從而導(dǎo)致其它讀寫(xiě)操作阻塞或出錯(cuò)。

  ◇SQL標(biāo)準(zhǔn)支持不全
  在它的官方網(wǎng)站上,具體列舉了不支持哪些SQL92標(biāo)準(zhǔn)。我個(gè)人感覺(jué)比較不爽的是不支持外鍵約束。

  ◇網(wǎng)絡(luò)文件系統(tǒng)(以下簡(jiǎn)稱(chēng)NFS)
  有時(shí)候需要訪問(wèn)其它機(jī)器上的SQLite數(shù)據(jù)庫(kù)文件,就會(huì)把數(shù)據(jù)庫(kù)文件放置到網(wǎng)絡(luò)共享目錄上。這時(shí)候你就要小心了。當(dāng)SQLite文件放置于NFS時(shí),在并發(fā)讀寫(xiě)的情況下可能會(huì)出問(wèn)題(比如數(shù)據(jù)損壞)。原因據(jù)說(shuō)是由于某些NFS的文件鎖實(shí)現(xiàn)上有Bug。

  ★編程語(yǔ)言接口
  SQLite支持很多種語(yǔ)言的編程接口。這對(duì)于我這種喜歡混用多種編程語(yǔ)言的人來(lái)說(shuō),是很爽的。下面我大概介紹一下。

  ◇C/C++
  由于SQLite本身是C寫(xiě)的,它自帶的API也是C接口的。所以C/C++用起來(lái)最直接了。假如你不喜歡面向過(guò)程的C API風(fēng)格,可以另外找個(gè)C++的包裝庫(kù)。想重新發(fā)明輪子的同學(xué),也可以自己包裝一個(gè)。
  ◇Java
  如果要用Java訪問(wèn)SQLite,可以通過(guò)SQLite的JDBC驅(qū)動(dòng),或者通過(guò)專(zhuān)門(mén)的SQLite包裝庫(kù)。我個(gè)人建議走JDBC方式,萬(wàn)一將來(lái)要換數(shù)據(jù)庫(kù),代碼就不用大改。
  ◇Python
  pysqlite是Python操作SQLite的首選。從Python 2.5開(kāi)始,它已經(jīng)被整合到Python的標(biāo)準(zhǔn)庫(kù)中。看來(lái)Python社區(qū)還是蠻喜歡SQLite嘛。
  ◇dotNet
  對(duì)于喜歡dotNet的同學(xué),可以通過(guò)SQLite的ADO.NET驅(qū)動(dòng)來(lái)訪問(wèn)。
  ◇Ruby
  Ruby可以通過(guò)SQLite-Ruby操作SQLite數(shù)據(jù)庫(kù),不過(guò)我沒(méi)用過(guò)。
  ◇Perl
  在CPAN上有DBD::SQLite,不過(guò)我也沒(méi)用過(guò)。

  ★一些非技術(shù)的參考因素
  前面講的都是技術(shù)層面的話題,如果你考慮在公司的商業(yè)軟件項(xiàng)目中使用SQLite。還需要根據(jù)“如何選擇開(kāi)源項(xiàng)目”里面提到的幾個(gè)參考因素,再評(píng)估一下。
  ◇授權(quán)協(xié)議(License)
  SQLite使用的是Public Domain協(xié)議,這是最爽一種,可以放心大膽地用。
  ◇用戶的普及程度
  最近這幾年,使用SQLite的人越來(lái)越多(從Google Trends可以反應(yīng)出來(lái))。包括一些大公司也開(kāi)始把它整合到產(chǎn)品中(比如Google的Gears、Apple的Safari、Adobe的AIR)。這說(shuō)明它的健壯性、穩(wěn)定性等方面不會(huì)有太大問(wèn)題。
  ◇開(kāi)發(fā)的活躍程度
  如果到SQLite的Change Log上大致了解一下,可以看出最近5年基本上每1-2個(gè)月都會(huì)有更新。說(shuō)明開(kāi)發(fā)的活躍度還是非常高的。
  從上述幾個(gè)非技術(shù)因素來(lái)看,SQLite用于商業(yè)公司的軟件項(xiàng)目還是非常靠譜的。

轉(zhuǎn)載必須包含本聲明、保持本文完整。并以超鏈接形式注明作者編程隨想和本文原始地址:
http://program-think.blogspot.com/2009/03/opensource-review-sqlite-database.html
本文地址:http://www.qingdxww.cn/thread-4594-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
alpha321 發(fā)表于 2009-11-16 09:15:03
占個(gè)沙發(fā)
好文章,學(xué)習(xí)
sw9518 發(fā)表于 2011-4-26 11:49:41
lhxzui 發(fā)表于 2014-8-30 10:52:10
謝謝分享。有機(jī)會(huì)多了解
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專(zhuān)區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點(diǎn)宏來(lái)節(jié)省時(shí)間和空間
  • Dev Tool Bits——使用DVRT協(xié)議查看項(xiàng)目中的數(shù)據(jù)
  • Dev Tool Bits——使用MPLAB® Data Visualizer進(jìn)行功率監(jiān)視
  • 貿(mào)澤電子(Mouser)專(zhuān)區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色婷婷九月 | 亚洲一级毛片免费看 | 国产欧美日韩在线观看精品 | 99爱视频精品免视看 | 91免费国产在线观看 | 日韩亚洲欧美一区噜噜噜 | 国产精品麻豆99久久 | 日本岛国片在线观看 | 亚洲视频在线观看一区 | 99精品热女视频专线 | 99久久精品免费看国产交换 | 国产真实女人一级毛片 | 99这里有精品视频 | 久久www免费人成高清 | 欧美日韩91 | 在线亚洲+欧美+日本专区 | 羞羞网站在线播放 | 国产magnet | 国产精品日韩欧美亚洲另类 | 四虎在线观看 | 99成人国产精品视频 | 色综合久久久久久 | 狠狠操社区 | 国产欧美日韩精品一区二区三区 | www.色日本 | 99成人在线观看 | 亚洲成人在线网 | 日本黄在线观看免费播放 | 日韩美aaa特级毛片 日韩每日更新 | 欧美笫一页 | 久热这里只有精品12 | 日韩欧美一区二区三区免费观看 | 在线天堂网 | 欧美一级日韩一级亚洲一级 | 国产精品午夜久久久久久99热 | eeuss第一页| 亚洲第一页乱 | 爱草人| 亚洲免费观看网站 | 色播久久 | 国产激情自拍视频 |