• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

              很有用的開源跨平臺數據庫,可以作為客戶端的小型內存數據庫使用,據說它有N多用戶(Nokia's Symbian,Mozilla,Abobe,Google,阿里旺旺,飛信,Chrome,FireFox),記錄下。
              下文轉自:
                http://www.cnblogs.com/stephen-liu74/archive/2012/03/09/2328757.html

               http://www.yongfa365.com/Item/SQLite.html

                在實際的應用中,SQLite作為目前最為流行的開源嵌入式關系型數據庫,在系統的架構設計中正在扮演著越來越為重要的角色。和很多其它嵌入式NoSQL數據庫不同的是,SQLite支持很多關系型數據庫的基本特征,這在數據移植、程序演示等應用中有著不可替代的優勢。從官方文檔中我們可以獲悉到,SQLite支持的數據量和運行效率都是非常驕人的,因此在海量數據的解決方案中,SQLite可以作為數據預計算的橋頭堡,從而顯著減少存儲在關系型數據庫服務器中的數據數量,最終提高系統的查詢效率和運行期效率,同時也可以顯著的降低數據備份的磁盤開銷。這里提供了該系列博文的目錄,以方便網友和我個人的學習與參閱。
                  Finally, if you are interseting in my series blogs, please pay more attention on my following ones, such as Redis, MongoDB, Lua and PostgreSQL. Thank you for your reading and comments, that will give me more effective encouragement and stimulate me to move ahead with stable and continuous. 

             

            SQLite學習手冊(開篇)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/09/2317603.html
            一、簡介
            二、SQLite的主要優點
            三、和RDBMS相比SQLite的一些劣勢
            四、個性化特征

            SQLite學習手冊(C/C++接口簡介)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/13/2321386.html
            一、概述
            二、核心對象和接口
            三、參數綁定

            SQLite學習手冊(數據表和視圖)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/13/2321668.html
            一、創建數據表
            二、表的修改
            三、表的刪除
            四、創建視圖
            五、刪除視圖

            SQLite學習手冊(內置函數)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/13/2322027.html
            一、聚合函數
            二、核心函數
            三、日期和時間函數

            SQLite學習手冊(索引和數據分析/清理)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/14/2322335.html
            一、創建索引
            二、刪除索引
            三、重建索引
            四、數據分析
            五、數據清理

            SQLite學習手冊(數據庫和事物)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/14/2322575.html
            一、Attach數據庫
            二、Detach數據庫
            三、事物

            SQLite學習手冊(表達式)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/16/2323907.html
            一、常用表達式
            二、條件表達式
            三、轉換表達式

            SQLite學習手冊(數據類型)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/18/2325258.html
            一、存儲種類和數據類型
            二、類型親緣性
            三、比較表達式
            四、操作符

            SQLite學習手冊(命令行工具)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/18/2325981.html

            SQLite學習手冊(在線備份)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/19/2326309.html
            一、常用備份
            二、在線備份APIs簡介
            三、高級應用技巧

            SQLite學習手冊(內存數據庫)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/20/2328348.html
            一、內存數據庫
            二、臨時數據庫

            SQLite學習手冊(臨時文件)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/21/2328483.html
            一、簡介
            二、具體說明
            三、相關的編譯時參數和指令
            四、其它優化策略

            SQLite學習手冊(鎖和并發控制)
            http://www.cnblogs.com/stephen-liu74/archive/2012/01/22/2328753.html
            一、概述
            二、文件鎖
            三、回滾日志
            四、數據寫入
            五、SQL級別的事物控制

            SQLite學習手冊(實例代碼<一>)
            http://www.cnblogs.com/stephen-liu74/archive/2012/02/07/2340780.html
            一、獲取表的Schema信息
            二、常規數據插入

            SQLite學習手冊(實例代碼<二>)
            http://www.cnblogs.com/stephen-liu74/archive/2012/02/07/2341480.html
            三、高效的批量數據插入
            四、數據查詢


            哪些人,哪些公司或軟件在用SQLite:

            Nokia's Symbian,Mozilla,Abobe,Google,阿里旺旺,飛信,Chrome,FireFox
            可見SQLite的穩定性及性能是不會有什么問題的,詳細列表請參見:http://www.sqlite.org/famous.html

            網上關于SQLite的介紹一抓一大把,總結起來,他有如下特點:

            SQLite優點及適應場合:

            輕量級
            綠色組件
            單一文件
            跨平臺
            查詢效率極高
            使用事務插入速度極快
            支持limit分頁
            適合查詢速度要求較高,內存占用較少的場合,尤其是嵌入式操作系統,如各種手機操作系統,低并發web(99.9%網站是低并發),php環境里原生支持SQLite,asp.net/.net winform里可以很方便的使用System.Data.SQLite

            缺點與不適應場合:

            不適合并發性高的場合 如大量insert,update訪問,SQL標準支持不全

            SQLite vs Access

            SQLite官方網站沒有與Access對比的說明,我覺得應該是:SQLite是開源的,單文件,不僅可以運行在Windows上,也可以運行在各種Linux系統上,而他的很多場合跟Access是不同的,他的優勢足以站在一個比Access更高的位置,所以沒有可比性,但我們普通人拿Access跟SQLite比,是因為他們交集的地方,關系到我們取舍。

            交集處有:windows系統里web/winform,

            在我的測試中
            一次插入5行及以上,每行有20來個字符,SQLite使用事務速度遠快于access
            一次插入多行,每行有8000以上字符,SQLite使用事務速度 快于 access 一倍左右
            SQLite查詢速度極快,甚至快過SQL Server 2008 r2 10倍(因為MSSQL索引列不能超過900個字符,所以varchar(max)不能建索引)
            單條數據插入速度比Access略慢,事務插入大量數據,在每行數據量不大時,遠快于Access
            Access經常出現數據庫壞的情況,SQLite聽說沒有這個問題。
             

            SQLite極速Select測試

            同樣的數據,同樣的SQL語句:
            SELECT * FROM dbo.Articles WHERE txtContent LIKE '%柳永法%'
            在SQLite及MSSQL上執行效率讓人震撼,SQLite竟然快MSSQL 10倍,
            并且SQLite沒有進程只看到程序進程內存沒有任何升高,而MSSQL的進程則從1G多升到了3G多

            數據庫條數查詢用時
            SQLite11884860s
            MSSQL118848540s
               
            SQLite74286s
            MSSQL742860s

             

            關于SQLite多線程及ASP.net并發測試

            1. //Winform 1000個線程同時操作,僅cpu占用很高外,數據正常插入,沒有使用Lock  
            2. ThreadPool.SetMinThreads(1000, 1000);  
            3. ThreadPool.SetMaxThreads(1000, 1000);  
            4. for (int i = 0; i < 1000; i++)  
            5. {  
            6.     ThreadPool.QueueUserWorkItem((obj) =>  
            7.     {  
            8.         SQLiteParameter[] parms ={  
            9.         new SQLiteParameter("@txtTitle""標題"+obj),  
            10.         new SQLiteParameter("@txtContent""內容可以大于8000"+obj+new string('=',8000+1000)),  
            11.         new SQLiteParameter("@Adder""添加人"+obj),  
            12.         new SQLiteParameter("@AddTime", DateTime.Now),  
            13.         new SQLiteParameter("@DeptId", 1),  
            14.         };  
            15.           
            16.         SQLiteHelper.ExecuteNonQuery(SQLiteConnectionString, CommandType.Text, @"  
            17.         insert into Articles(txtTitle,txtContent,Adder,AddTime,DeptId) values (@txtTitle,@txtContent,@Adder,@AddTime,@DeptId)  
            18.         ", parms);  
            19.       
            20.     }, i);  
            21. }  

            ASP.net使用Microsoft Web Application Stress Tool進行1000個線程的壓力測試1分鐘,使用Elmah.dll記錄錯誤,測試后沒發現程序報錯,也只是很占CPU而已

            通過本人測試,SQLite也應該算是比較適合高并發,及多線程,但官方說不適合,不知道是不是我測試方法不對

            SQLite資源地址:

            SQLite的官方主頁:
            http://www.sqlite.org/

            SQLite中文站:
            http://www.sqlite.com.cn/

            System.Data.SQLite:
            http://sqlite.phxsoftware.com/

            sql學習筆記之 嵌入式數據庫(sqlite,firebird)
            http://www.cnblogs.com/ljzforever/archive/2010/03/09/1681453.html

            SQLite GUI圖形管理工具:

            SQLite Expert(可選數據庫編碼,支持原生配置各種參數,軟件更新速度極快,一天一個或多個版本,經試用,發現還有很多不完善的地方):
            http://www.sqliteexpert.com/download.html

            Navicat for SQLite(導入,導出功能強大,功能實用,操作直觀,有些小缺陷,更新速度還行):
            http://www.navicat.com/en/download/download.html

            SQLite Administrator(古老,但還是有很多人覺得不錯,編碼支持不強,可能亂碼):
            http://sqliteadmin.orbmu2k.de/

            FireFox管理SQLite的插件 SQLite Manager(沒多使用。看起來不錯):
            https://addons.mozilla.org/en-US/firefox/addon/5817/

             

            SQLite參考資料:

            開源有感系列 之開源數據庫有感[新內容添加版本]:
            http://www.cnblogs.com/unruledboy/archive/2005/02/04/98604.html

            到底SQLite有多強?在我的2臺機器上的壓力測試:
            http://www.cnblogs.com/unruledboy/archive/2005/03/26/sqliteperformance.html

            Access和Firebird及SQLite的性能比較
            http://www.cnblogs.com/kevin-moon/archive/2008/12/01/1344658.html
            http://www.cnblogs.com/Kevin-moon/archive/2008/11/14/1333285.html

            淺談SQLite——實現與應用:
            http://www.cnblogs.com/hustcat/archive/2010/01/27/1657821.html

            SQLite數據庫是中小站點CMS的最佳選擇:
            http://www.dbanotes.net/database/sqlite_cms.html

            SQLite的局限性:
            http://dev.firnow.com/course/7_databases/sql/sqlServer/200838/103309.html

            sqlite常見問題:
            http://dev.firnow.com/course/7_databases/sql/sqlServer/200838/103310.html

            MySQL大戰SQLite(PostgreSQL強勢亂入):
            http://obmem.com/?p=493


            ★SQLite技術上的優點和特性

              SQLite是一個輕量級、跨平臺的關系型數據庫。既然號稱關系型數據庫,支持SQL92標準中常用的玩意兒(比如視圖、事務、觸發器等)就是理所當然的了,咱今天就不細說了。今天主要聊聊一些有點特色的玩意兒。

              ◇輕量級
              先說它的第一個特色:輕量級。想必SQLite的作者很看重這個特性,連它的Logo都是用的“羽毛”,來顯擺它的輕飄飄。
            SQLite和C/S模式的數據庫軟件不同,它是進程內的數據庫引擎,因此不存在數據庫的客戶端和服務器。使用SQLite一般只需要帶上它的一個動態庫,就可以享受它的全部功能。而且那個動態庫的尺寸也挺小,3.6.27版本也就幾百K

              ◇綠色軟件
            SQLite的另外一個特點是綠色:它的核心引擎本身不依賴第三方的軟件,使用它也不需要“安裝環境”(如:Oledb等)。所以在部署的時候能夠省去不少麻煩。

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

              ◇跨平臺/可移植性
              如果光支持主流操作系統(Windows,Linux),那就沒啥好吹噓的了。除了主流操作系統,SQLite還支持了很多小型嵌入式系統,比如Android、Windows Mobile、Symbin、Palm、VxWorks等,也就是說iPhone,Android等手機上都可以用。

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

            ★技術上的缺點和不足

              前面光聊了特性和優點,為了避免槍手寫軟文的嫌疑,再來說說SQLite的一些缺點。列位看官將來如果想用它,這些缺點要權衡一下。

              ◇并發訪問的鎖機制
            SQLite在并發(包括多進程和多線程)讀寫方面的性能一直不太理想。數據庫可能會被寫操作獨占,從而導致其它讀寫操作阻塞或出錯。

              ◇SQL標準支持不全
            在它的官方網站上,具體列舉了不支持哪些SQL92標準。我個人感覺比較不爽的是不支持外鍵約束。

              ◇網絡文件系統(以下簡稱NFS)
              有時候需要訪問其它機器上的SQLite數據庫文件,就會把數據庫文件放置到網絡共享目錄上。這時候你就要小心了。當SQLite文件放置于NFS時,在并發讀寫的情況下可能會出問題(比如數據損壞)。原因據說是由于某些NFS的文件鎖實現上有Bug。

            ★編程語言接口

              SQLite支持很多種語言的編程接口。這對于我這種喜歡混用多種編程語言的人來說,是很爽的。下面我大概介紹一下。

              ◇C/C++
              由于SQLite本身是C寫的,它自帶的API也是C接口的。所以C/C++用起來最直接了。假如你不喜歡面向過程的C API風格,可以另外找個C++的包裝庫。想重新發明輪子的同學,也可以自己包裝一個。
            ◇Java
            如果要用Java訪問SQLite,可以通過SQLite的JDBC驅動,或者通過專門的SQLite包裝庫。我個人建議走JDBC方式,萬一將來要換數據庫,代碼就不用大改。
            ◇Python
            pysqlite是Python操作SQLite的首選。從Python 2.5開始,它已經被整合到Python的標準庫中。看來Python社區還是蠻喜歡SQLite嘛。
            ◇.net
            對于喜歡.net的同學,可以通過System.Data.SQLite來訪問。
            ◇Ruby
            Ruby可以通過SQLite-Ruby操作SQLite數據庫,不過我沒用過。
            ◇Perl
            在CPAN上有DBD::SQLite,不過我也沒用過。

            ★一些非技術的參考因素

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


             

            posted on 2012-10-16 10:12 Richard Wei 閱讀(5207) 評論(0)  編輯 收藏 引用 所屬分類: 開源
            天天爽天天爽天天片a久久网| 久久电影网| 99麻豆久久久国产精品免费| 91精品国产91久久| 伊人伊成久久人综合网777| 久久无码人妻一区二区三区 | 久久久国产精品| 精品伊人久久大线蕉色首页| 狠狠色丁香婷婷久久综合不卡| 久久久艹| 国产精品久久久99| 国内精品伊人久久久久av一坑| 久久精品亚洲精品国产欧美| 久久精品国产亚洲AV麻豆网站| 无码国内精品久久人妻麻豆按摩| 97r久久精品国产99国产精| 久久只有这精品99| 久久综合久久鬼色| 久久伊人精品青青草原高清| 无码AV波多野结衣久久| 思思久久好好热精品国产| 国产精品一久久香蕉产线看| 久久人人爽人人人人片av| 久久精品国产只有精品66| 久久91精品国产91久久户| 久久精品无码午夜福利理论片| 欧美精品九九99久久在观看| 久久久精品国产Sm最大网站| 99热热久久这里只有精品68| 成人久久精品一区二区三区| 久久久久久久亚洲Av无码| 少妇久久久久久久久久| 亚洲国产精品无码久久久不卡 | 亚洲欧美国产精品专区久久| 久久亚洲国产精品五月天婷| 久久精品国产福利国产琪琪| 久久精品成人欧美大片| 亚洲国产成人乱码精品女人久久久不卡| 国产精品免费久久久久久久久| 国产精品99久久精品爆乳| 国产精品无码久久综合网|