免費數據庫(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)

SQLite數據庫是中小站點CMS的最佳選擇

SQLite 是一個相似Access的輕量級數據庫系統,可是更小、更快、容量更大,併發更高。爲何說 SQLite 最適合作 CMS (內容管理系統)呢?並非說其餘數據庫很差, Oracle、MySQL、SQLServer 也都是很是優秀的 DBS,只不過他們設計目標不一樣,特性不一樣,因此只有更適用某個應用場景,沒有絕對的好壞之分。php

我概括的中小型站點的CMS的特色以下:html

  • 一、數據量不超過10萬
  • 二、日頁面訪問量不超過10萬
  • 三、 一部分網站所有生成靜態頁面,一部分網站實時查詢數據庫動態訪問
  • 四、 站長不懂技術,不懂得複雜的數據庫維護,只會用 FTP 管理網站
  • 5 、我的站點基本上是一我的管理,通常狀況下只有一我的在訪問後臺,沒有併發
  • 六、 對數據庫來講是讀多寫少,只有在站長訪問後臺的時候纔會寫入
  • 七、 多運行於虛擬主機,大部分PHP主機均同時支持MySQL,小部分PHP主機須要單獨購買MySQL,PHP+MySQL的主機價格較PHP主機價格高。 (以萬網爲例:最便宜的PHP空間780元,最便宜的PHP+MySQL的PHP空間1150元)
  • 八、 多數中小站點的HTTP服務與MySQL部署在同一服務器上

SQLite 的優勢在中小網站CMS應用場景下表現突出:前端

  • 一、與MySQL相比,它更完全的免費,而且沒有任何使用上的限制
  • 二、很是小巧,PHP5以上版本中無需任何配置便可支持SQLite
  • 三、無需單獨購買數據庫服務,無服務器進程,配置成本爲零
  • 四、整個數據庫存儲在一個單個的文件中,數據導入導出備份恢復都是複製文件,維護難度爲零
  • 五、讀速度快,在數據量不是很大的狀況下速度較快,更重要的是:省掉了一次數據庫遠程連接沒有複雜的權限驗證, 打開就能操做

SQLite的缺點在中小網站 CMS 應用場景下被規避:mysql

  • 一、併發低 動態訪問時當訪問量不超過10萬PV的時候,SQLite 超過 Access 的併發能力已經綽綽有餘;生成靜態頁後更無需考慮數據庫的併發問題
  • 二、在大數據量的狀況下表現較差 可是中小站點通常狀況下數據量不超過10萬,而SQlite 在 100 萬數據量之下表現還不錯,由於省掉了對數據庫服務器的遠程鏈接甚至會更快
  • 三、寫入較慢 默認配置下的 SQlite 的寫入速度比MySQL慢了不少,可是 CMS 應用場景的寫入操做較少。在插入新文章的時候基本感覺不到慢。集中的寫數據庫操做只有在安裝的時候會出現,不過只出現一次,能夠忽略
  • 四、爲已有的表加索引較慢 可是在中小站點CMS中不會有這樣的需求,能夠忽略
  • 五、沒法將 MySQL 部署到與前端機不一樣的服務器上,可是中小站點也沒 有分開部署的需求

綜上所述:在中小站點 CMS 的應用場景下 SQLite 能最大限度的下降建站成本,下降維護難度,又很好得規避了自身的缺點。因此我認爲將來支持 SQLite 的 CMS 系統必定會大行其道。git

 

 

嵌入式數據庫系統Berkeley DB
一般,咱們在設計UNIX/LINUX平臺下的應用軟件時,若是數據種類繁多,數據與數據之間關係比較複雜,就會選用一些大型的企業級數據庫系統,如 DB2,ORACLE、SYBASE等,若是軟件規模不大,就傾向選用如MYSQL、POSTGRESQL等中小型數據庫。例如使用PHP/PERL + MYSQL/POSTGRESQL設計網站基本上是一個很常規的作法。可是,當應用軟件管理的數據類型較少(特別注意:這並非說須要管理的數據量小), 數據管理自己不復雜,且對數據操做要求高效率,則由大名鼎鼎的Berkeley(美國加州大學伯克利分校)開發的 Berkeley DB多是一個很明智的選擇。

DB 是一個具備工業強度的嵌入式數據庫系統,數據處理的效率很高。DB功能的穩定性歷經時間的考驗,在大量應用程序中使用即是明證。能夠想見,在同等代碼質量 的條件下,軟件的BUG數和代碼的長度是成正比的,相對幾十兆、幾百兆大型數據庫軟件,DB的只有不到500K的大小!

從實現功能上看,DB是輕量級數據庫系統,或可稱爲"極" 輕量級數據庫系統。可是,我認爲不能所以而心存輕視之意,所謂"尺有所短,寸有所長",以絕對角度比較工具之間的好壞是沒有什麼意義的,關鍵在於對工具的 選擇和運用(彷佛能夠參考一下極限編程的思想)。也許,正確的"表達範式"應該是:在當前應用背景下,選擇這種工具是最合適的。

像MySQL這類基於C/S結構的關係型數據庫系統雖然表明着目前數據庫應用的主流,但卻並不能知足全部應用場合的須要。有時咱們須要的可能只是一個簡單 的基於磁盤文件的數據庫系統。這樣不只能夠避免安裝龐大的數據庫服務器,並且還能夠簡化數據庫應用程序的設計。Berkeley DB正是基於這樣的思想提出來的。
 

 

Berkeley DB簡介 

Berkeley DB是一個開放源代碼的內嵌式數據庫管理系統,可以爲應用程序提供高性能的數據管理服務。應用它程序員只須要調用一些簡單的API就能夠完成對數據的訪問 和管理。與經常使用的數據庫管理系統(如MySQL和Oracle等)有所不一樣,在Berkeley DB中並無數據庫服務器的概念。應用程序不須要事先同數據庫服務創建起網絡鏈接,而是經過內嵌在程序中的Berkeley DB函數庫來完成對數據的保存、查詢、修改和刪除等操做。 

Berkeley DB爲許多編程語言提供了實用的API接口,包括C、C++、Java、Perl、Tcl、Python和PHP等。全部同數據庫相關的操做都由 Berkeley DB函數庫負責統一完成。這樣不管是系統中的多個進程,或者是相同進程中的多個線程,均可以在同一時間調用訪問數據庫的函數。而底層的數據加鎖、事務日誌 和存儲管理等都在Berkeley DB函數庫中實現。它們對應用程序來說是徹底透明的。俗話說:「麻雀雖小五臟俱全。」Berkeley DB函數庫自己雖然只有300KB左右,但卻可以用來管理多達256TB的數據,而且在許多方面的性能還可以同商業級的數據庫系統相抗衡。就拿對數據的並 發操做來講,Berkeley DB可以很輕鬆地應付幾千個用戶同時訪問同一個數據庫的狀況。此外,若是想在資源受限的嵌入式系統上進行數據庫管理,Berkeley DB可能就是唯一正確的選擇了。 

Berkeley DB做爲一種嵌入式數據庫系統在許多方面有着獨特的優點。首先,因爲其應用程序和數據庫管理系統運行在相同的進程空間當中,進行數據操做時能夠避免繁瑣的 進程間通訊,所以耗費在通訊上的開銷天然也就下降到了極低程度。其次,Berkeley DB使用簡單的函數調用接口來完成全部的數據庫操做,而不是在數據庫系統中常常用到的SQL語言。這樣就避免了對結構化查詢語言進行解析和處理所需的開銷。

 

 

主流開源數據庫的技術特色點評

    隨着開放源代碼軟件的使用愈來愈普遍,像Linux操做系統同樣,開放源代碼數據庫的出現也有其必然性。在當Oracle、IBM、Microsoft、 Sybase 等幾大數據庫廠商在數據庫領域處於壟斷地位的時候,出現了以MySQL、PostgreSQL爲表明的開放源代碼的數據庫系統,推進了開源軟件事業的發 展。開源數據庫系統並非一個新事物,如Postgres(PostgreSQL的前身)已經有20年的發展歷史了,而著名的MySQL今年4月剛剛度過 了其10週年記念活動。程序員

一、MYSQLweb

    MysQL是瑞典的T.c.X公司負責開發和維護的,它是一個真正的多用戶、多線程SQL數據庫服務器。MysQL是以一個客戶機/服務器結構實現其功能 的,它由一個服務器守護程序mysqld和不少不一樣的客戶程序和庫組成。SQL是一種標準化的語言,它使得存儲、更新和存取信息更容易。MySQL主要特 點是快速、健壯和易用。MySQL的官方發音是「My Ess Que Ell」(不是MY-SEQUEL)。目前MySQL的最新版本是5.0,MySQL的網址是:http://www.mysql.com,MySQL的 標誌是一個小海豚。見圖-1。sql

 

圖-1 Mysql 標誌數據庫

MySQL的技術特色:編程

1. 它使用的核心線程是徹底多線程,支持多處理器。

2. 有多種列類型:一、二、三、四、和8字節長度自有符號/無符號整數、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、 DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM類型。

3. 它經過一個高度優化的類庫實現SQL函數庫並像他們能達到的同樣快速,一般在查詢初始化後不應有任何內存分配。沒有內存漏洞。

4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你能夠在同 一查詢中混來自不一樣數據庫的表。

5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。

6. 全部列都有缺省值。你能夠用INSERT插入一個表列的子集,那些沒用明確給定值的列設置爲他們的決省值。

7. MySQL能夠工做在不一樣的平臺上。支持C、C++、Java、Perl、PHP、Python和TCL API。

    MaxDB是2003年SAP公司和MySQL AB公司合做以後SAP DB新的名稱。MaxDB是一款重量級的、得到SAP R/3認證,適宜於聯機事務處理和聯機分析處理等多種業務類型的高可用性、高可靠性和極具伸縮性的數據庫,支持大容量的用戶和併發業務操做,採用多線程多 進程的服務器設計,支持多處理器的應用,並經過集羣和熱部署提供高可靠性,支持TB級的海量數據,支持企業級的數據同步和複製等複雜應用。

 

 

2. PostgreSQL

    PostgreSQL是一種運行在Unix和Linux操做系統(在NT平臺藉助Cygnus也能夠運行)平臺上的免費的開放源碼的關係數據庫。最先是由 美國加州大學伯克利分校開發的,開始只是做爲一個演示系統發表,可是隨着時間的推移,逐步分發,獲得不少實際的應用,才逐步流行起來。PostgreSQ 的網址是http://www.postgresql.org/,最新版本是2005年10月4日發佈的8.0.4。PostgreSQL的官方發音 是:Post-gres-Q-L。 PostgreSQ的標誌是一個大象,見圖-2。

 

 圖2 PostgreSQL 標誌

PostgreSQL的技術特色:

1. 支持SQL。做爲關係數據庫,它支持SQL89標準也支持部分SQL92大部分功能。

2. 有豐富的數據類型。許多數據類型是一些商業數據庫都沒有提供的。

3. 面向對象。它包含了一些面嚮對象的技術,如繼承和類。

4. 支持大數據庫,它不一樣於通常的桌面數據庫,可以支持幾乎不受限制大小的數據庫,並且性能穩定。

5. 方便集成web,提供一些接口方便 PHP,Perl等語言操做數據庫。

6. 事務處理。相對一些其餘免費數據庫如MySQL,他提供了事務處理,能夠知足一些商業領域的數據須要。

7. PostgreSQL運行速度明顯低於MySQL。由於MySQL使用了線程,而PostgreSQL使用的是進程。在不一樣線程之間的環境轉換和訪問公用 的存儲區域顯然要比在不一樣的進程之間要快得多。

 

 

3. Firebird

    2000年7月,Borland(即如今的Inprise)公司公佈了其數據庫產品Interbase的源代碼。Firebird數據庫就是從該數據庫中 派生出來的。當時,Interbase是與客戶/服務器版本的Delphi產品捆綁在一些銷售的。如今,Interbase已經變成了一隻開放源碼中的「 火鳥」。 Firebird 網址是http://firebird.sourceforge.net/ ,最新版本是2005年8月5日發佈的1.5.3。的標誌是一隻「火鳥」,見圖-3。

 圖-3 Firebird 標誌

Firebird的技術特色

    Firebird相對MySQL和PostgreSQL來講比較小,其RPM版本只有3.0MB。這也使其能夠稱得上是理想的「嵌入式數據庫」,可用於與 其它應用程序服務器和應用程序捆綁。Firebird具備大部分紅熟數據庫所具備的功能,好比支持存儲過程、SQL兼容等。若是用戶有使用DB2或 PostgreSQL的經驗,就會發現Firebird與它們的語法很是類似,數據類型和數據處理方式也很相似。 Firebird的設計思想是小型、快速和最小化的管理。這對於須要一個數據庫用於存儲數據,但又不想花太多時間來調整數據性能的開發人員很適用。實際上 在不少狀況下,咱們並不須要存儲程序或複雜的表之間的關聯。這時會發現Firebird在大小和功能之間找到了一個理想的平衡點。

    如今有兩個版本的Firebird服務器軟件可供下載,分別是Firebird Super Server和Firebird Classic Server。簡單來講,兩者的區別在於設計的方法不一樣。Super Server使用線程同時爲多個客戶鏈接提供服務,而Classic Server使用的則是Interbase的方法,採用爲每一個鏈接提供一個獨立服務器進程的方式。若是想對兩者的區別有更多的瞭解,可查看 http://www.ibphoenix.com/main.nfs?a=ibphoenix& page=ibp_ss_vs_classic。對於「嵌入式數據庫」的用戶,這兩個版本之間沒有太大的區別。從理論上講,若是應用程序的用戶不少,那麼 Super Server將是一個較好的選擇。

 

 

4. mSQL

    mSQL(mini SQL)是一個單用戶數據庫管理系統,我的使用免費,商業使用收費。因爲它的短小精悍,使其開發的應用系統特別受到互聯網用戶青睞。mSQL(mini SQL)是一種小型的關係數據庫,性能不是太好,對SQL語言的支持也不夠徹底,但在一些網絡數據庫應用中是足夠了。因爲mSQL較簡單,在運行簡單的 SQL語句時速度比MySQL略快,而MySQL在線程和索引上下了功夫,運行復雜的SQL語句時比mSQL,PostgreSQL等都要快一些。 MSQL的網址是:http://www.hughes.com.au ,最新版本是2005年5月8日發佈的3.7。MSQL的標誌是一個鹿。見圖-2。

圖4 mSQL 標誌

mSQL的技術特色:

    安全性方面,mSQL經過ACL文件設定各主機上各用戶的訪問權限,缺省是 所有可讀/寫。mSQL缺少 ANSI SQL 的大多數特徵,它僅僅實現了一個最最少的API,沒有事務和參考完整性。mSQL與Lite(一種相似C的腳本語言,與分發一塊兒發行)緊密結合,能夠獲得 一個稱爲 W3-mSQL的一個網站集成包,它是JDBC、ODBC、Perl和PHP API。

 

嵌入式數據庫

    嵌入式數據庫的名稱來自其獨特的運行模式。這種數據庫嵌入到了應用程序進程中,消除了與客戶機服務器配置相關的開銷。嵌入式數據庫其實是輕量級的,在運 行時,它們須要較少的內存。它們是使用精簡代碼編寫的,對於嵌入式設備,其速度更快,效果更理想。嵌入式運行模式容許嵌入式數據庫經過 SQL 來輕鬆管理應用程序數據,而不依靠原始的文本文件。嵌入式數據庫還提供零配置運行模式,這樣能夠啓用其中一個並運行一個快照。

5. Berkeley DB

    像MySQL這類基於C/S結構的關係型數據庫系統雖然表明着目前數據庫應用的主流,但卻並不能知足全部應用場合的須要。有時咱們須要的可能只是一個簡單 的基於磁盤文件的數據庫系統。這樣不只能夠避免安裝龐大的數據庫服務器,並且還能夠簡化數據庫應用程序的設計。Berkeley DB正是基於這樣的思想提出來的。官方網址是:http://www.sleepycat.com/ ,最新版本是2005年8月5日發佈的4.3。的標誌是一隻「貓」,見圖-4。

圖5 Berkeley DB 標誌

Berkeley DB的技術特色:

    Berkeley DB是一個開放源代碼的內嵌式數據庫管理系統,可以爲應用程序提供高性能的數據管理服務。應用它程序員只須要調用一些簡單的API就能夠完成對數據的訪問 和管理。與經常使用的數據庫管理系統(如MySQL和Oracle等)有所不一樣,在Berkeley DB中並無數據庫服務器的概念。應用程序不須要事先同數據庫服務創建起網絡鏈接,而是經過內嵌在程序中的Berkeley DB函數庫來完成對數據的保存、查詢、修改和刪除等操做。

    Berkeley DB爲許多編程語言提供了實用的API接口,包括C、C++、Java、Perl、Tcl、Python和PHP等。全部同數據庫相關的操做都由 Berkeley DB函數庫負責統一完成。這樣不管是系統中的多個進程,或者是相同進程中的多個線程,均可以在同一時間調用訪問數據庫的函數。而底層的數據加鎖、事務日誌 和存儲管理等都在Berkeley DB函數庫中實現。它們對應用程序來說是徹底透明的。俗話說:「麻雀雖小五臟俱全。」Berkeley DB函數庫自己雖然只有300KB左右,但卻可以用來管理多達256TB的數據,而且在許多方面的性能還可以同商業級的數據庫系統相抗衡。就拿對數據的並 發操做來講,Berkeley DB可以很輕鬆地應付幾千個用戶同時訪問同一個數據庫的狀況。此外,若是想在資源受限的嵌入式系統上進行數據庫管理,Berkeley DB可能就是唯一正確的選擇了。

    Berkeley DB做爲一種嵌入式數據庫系統在許多方面有着獨特的優點。首先,因爲其應用程序和數據庫管理系統運行在相同的進程空間當中,進行數據操做時能夠避免繁瑣的 進程間通訊,所以耗費在通訊上的開銷天然也就下降到了極低程度。其次,Berkeley DB使用簡單的函數調用接口來完成全部的數據庫操做,而不是在數據庫系統中常常用到的SQL語言。這樣就避免了對結構化查詢語言進行解析和處理所需的開 銷。

 

6. SQLite

    SQLite 是 D. Richard Hipp 用 C 語言編寫的開源嵌入式數據庫引擎。它是徹底獨立的,不具備外部依賴性。它是做爲 PHP V4.3 中的一個選項引入的,構建在 PHP V5 中。SQLite 支持多數 SQL92 標準,能夠在全部主要的操做系統上運行,而且支持大多數計算機語言。SQLite 還很是健壯。其建立者保守地估計 SQLite 能夠處理天天負擔多達 100,00 次點擊率的 Web 站點,而且 SQLite 有時候能夠處理 10 倍於上述數字的負載。SQLite 的網址是,最新版本是2005年9月24日發佈的3.2.7 。SQLite的標誌是一隻羽毛,見圖-5。

圖6 SQLite標誌

SQLite的技術特色:

    SQLite 對 SQL92 標準的支持包括索引、限制、觸發和查看。SQLite 不支持外鍵限制,但支持原子的、一致的、獨立和持久 (ACID) 的事務(後面會提供有關 ACID 的更多信息)。這意味着事務是原子的,由於它們要麼徹底執行,要麼根本不執行。事務也是一致的,由於在不一致的狀態中,該數據庫從未被保留。事務仍是獨立 的,因此,若是在同一時間在同一數據庫上有兩個執行操做的事務,那麼這兩個事務是互不干擾的。並且事務是持久性的,因此,該數據庫可以在崩潰和斷電時倖免 於難,不會丟失數據或損壞。SQLite 經過數據庫級上的獨佔性和共享鎖定來實現獨立事務處理。這意味着當多個進程和線程能夠在同一時間從同一數據庫讀取數據,但只有一個能夠寫入數據。在某個進 程或線程向數據庫執行寫入操做以前,必須得到獨佔鎖定。在發出獨佔鎖定後,其餘的讀或寫操做將不會再發生。

    總結:目前的開源數據庫還不能在功能和處理能力方面追上商業級產品,但價格的侵蝕力沒法迴避,開源數據庫迅速增加的市場份額甚至讓數據庫領域的三巨 頭,Oracle、IBM、微軟都感到忐忑不安。開源數據庫的用戶在增加,並正在被愈來愈多的用戶所採用。在嵌入式數據庫領域,開源數據庫優點更加明顯。 分析師稱開放源碼正在迅速被數據庫技術所採用。開放源碼「從2000年被懷疑到2005年已經發展成爲全球的主流技術」。低成本甚至免費的開源數據庫時代 即未來臨。

=============
將你的網站從MySQL改成PostgreSQL

原著:Nathan Matias 翻譯:到處 
    個人站點最初是採用PHP驅動,由MySQL數據庫支持的方案,這在當時是一個明智的方案。在2001年夏天,我將個人數據庫換成了 PostgreSQL(有時也簡稱爲Postgres)。 
    這個教程分爲兩部分,第一部分講述了我進行這種轉換的動機,並一步步地解釋瞭如何將已存在有MySQL的數據轉換到Postgres中。第二部分將會解釋 如何根據新的數據庫系統對PHP進行相應的調整。 
轉換的動機 
    我第一次瞭解Postgres是在PHPBuilder網站的一篇文章中。這篇文章將Postgres和MySQL進行了比較,當時我正在使用 MySQL。可是,當我閱讀了這篇文章後,我對Postgres着了迷 -- 可是當時我尚未想到對個人網站進行從新的設計。 
    我繼續使用MySQL,由於個人主機提供商只能提供MySQL的支持,這是我所沒法改變的。直到有一天,主機提供商的主機崩潰了。我當即換了一個主機提供 商,與原來的那個相比,新的主機提供商有不少不一樣,他們在安全性和穩定性方面對我做出了更多的承諾。新公司試圖說服我使用Postgres,由於 Postgres要比MySQL來得更穩定,可是我當時沒有接受這個建議,由於個人網站已經根據MySQL完成了所有的編碼工做。他們只好專門爲個人站點 安裝了MySQL。因而問題開始了。 
    個人第一個工做是將舊服務器上的MySQL的數據拷貝到新的主機上。首先,我將已有的數據dump到一個SQL文件中,而後在新的主機上導入這個SQL文 件。在處理這個數千行的文件時,MySQL迅速地崩潰了。重啓MySQL後,其中大概只有一半數據成功地導入了,並且MySQL只能間歇性地工做。最後, 他們不得不刪除了已經導入的信息讓我再試一次。MySQL再次崩潰。這種狀況重複了好幾回,直到最終我決定將個人SQL文件分割成幾塊。我不得不又試了幾 次,最後終於將絕大多數的數據都成功地導入到新的MySQL服務器中。一切都好了,我總算鬆了一口氣。 
    在下面的幾個月中,MySQL幾乎每兩週都要崩潰一次,其中最慘痛的一次是在2001年6月底。這一次,存儲在MySQL中的數據徹底被毀壞了。我有一個 SQL的備份文件,可是由於上次向MySQL中導入大量數據的痛苦的經歷,這一次我不再想經過這個備份恢復數據了。這時,公司再次建議我對個人網站進行 轉向,使用Postgres。因爲MySQL的失敗,最終我接受了這個建議。 
將數據從MySQL轉移到Postgres中 
    將數據從MySQL轉移到Postgres是一個不大的挑戰,由於Postgres比MySQL支持了更多的SQL的標準格式,在POstgres中直接 使用SQL的dump結果是不可能的。可是,SQL語法至關類似,所以對於我來講,這並無花費太多的時間。 

對MySQL的Dump結果進行轉換 
    首先,要求你的主機提供商爲你的賬號創建一個數據庫。和MySQL數據庫同樣,Postgres的數據庫也由一系列包含實際數據的數據表組成。而後,使用 mysqldump命令爲你的MySQL數據庫作一個dump文件。 
mysqldump -u username -p databasename > sqldump.txt 
    使用FTP將整個dump文件下載下來。如今在你的計算機上有了這個SQL文件,你能夠將其轉換成Postgres能夠導入的文件。 
    首先,從dump文件中剪切全部的MySQL的CREATE TABLE查詢,並將其粘貼到一個單獨的文本文件中。下一步是使用Postgres能夠理解的語言從新對數據表進行定義。 
    Postgres創建表的SQL和MySQL很是相似,但不徹底同樣。下面是一個例子: 
CREATE TABLE practicetable 

someID SERIAL, 
time TIMESTAMP DEFAULT now(), 
name VARCHAR(50), 
address VARCHAR(50), 
city VARCHAR(50), 
state VARCHAR(2), 
country VARCHAR(3) DEFAULT 'USA', 
postlcode VARCHAR(15), 
age smallint, 
lattitude real, 
longitude real, 
somebool boolean, 
message textitem 
}; 
    在一個Postgres的表定義中,字段名後面必須跟着字段類型。在上面的例子中咱們給出了一些最普通的字段類型,你還能夠在有關Postgres數據類 型的文檔中找到所有的字段類型的列表。對於不一樣的任務,Postgres在字段類型方面有多種選擇,並能夠存儲各類類型的數據,從Internet地址到 貨幣信息到幾何對象的定義。這兒簡要地介紹最經常使用的幾種數據類型。 
    SERIAL類型的字段和MySQL中的自增惟一ID等價。當你在你的數據表中定義了一個SERIAL類型的列後,SERIAL的自增功能會被自動添加到 數據庫。當自增功能不能適應實際需求時,咱們能夠自定義惟一ID的邏輯。從MySQL向Postgres轉輸數據時,默認的功能已經足夠了。 
    和字面上的意義同樣VARCHAR類型是一個可變長度的文本字段。字段的長度由括號中的數值定義。例如,VARCHAR(5)定義了一個最多可包含5個字 符的文本字段。 
    SMALLINT、INT和BIGINT用來定義整型字段。SMALLINT字段可存儲數值範圍爲-32768到+32767(實際的範圍可能會稍微受到 你的計算機類型的影響,上面的範圍適用於最普通的系統)。INT字段可存儲數值範圍爲-2147483648到+2147483647。而BIGIN字段 類型可存儲任何更大的整數,它沒有範圍的限制。 
    REAL字符類型是一個包含十進制小數的實數。它能夠精確到小數點後六位。DOUBLE PRECISION字段與此相相似,可是它能夠精確到小數點後15位。 
    BOOLEAN字段是真或假、1或0。這和MySQL中類似。 
    TIMESTAMP字段和MySQL中的狀況類型。每次記錄更新時,timestamp被更新爲當前的日期和時間。Postgres的時間字段還能夠包含 時區信息。有關Postgres時間數據的更復雜的應用,請參看PostgreSQL文檔的日期和時間。 

創建數據表 
    當你使用SQL文件在Postgres中創建數據表時,請檢查在每個CREATE TABLE查詢的最後是否是都以分號結束 - 這對於Postgres是不可省略的。使用telnet這樣的工具鏈接到你的Web主機,而後用下面的方法創建數據表。 
    首先,用一個文本編輯器打開你的表定義文件。而後登陸到你的主機,並輸入psql運行Postgres交互終端。默認的用戶論證方式是使用你的 telnet/FTP用戶名做爲你的Postgres賬號。這使得不須要你輸入用戶名和口令,Postgres就能自動鑑別你的身份。你的Web主機也許 不是採用的這種方式,在這種狀況下,你須要爲psql程序帶入參數:psql -d databasename -U username -W。-d用來指定數據庫,-U指定用戶名,而-W要求psql提示你輸入一個口令。 
    當你成功地運行了psql之後,將每一個CREATE TABLE查詢單獨地粘貼到psql中並按回車鍵。若是在你的SQL語句中有錯誤,psql會給出相應提示。經過逐一地加入每個表,你會獲得每個表的 調試信息,這樣作起來至關簡單。 
    若是,在你輸入了表的定義以後,你發現遺漏了一兩個字段,有兩種方法能解決這個問題。你可使用ALTER TABLE命令,或者是使用DROP TABLE刪除這張表,而後從新生成。若是你使用第二種方法,你會看到一個警告以驗證你是否是真的想要刪除表。 
    要使用DROP TABLE命令,只須要輸入DROP TABLE practicetable;。這會刪除咱們剛纔定義的表。可是當你對這個表從新進行定義時,你會發現一個錯誤。這是由於在刪除一個表時並不相應地刪除這 個表中SERIAL類型字段的序列。這些遺留下來的序列會在你重建表時引發錯誤。要解決這個問題,你必須在刪除表以前使用DROP SEQUENCE sequencename;刪除相應的序列。並且有件很討厭的事,那就是序列名並不就是SERIAL列的名字。當你定義一個SERIAL類型的字段 時,Postgres會自動生成這樣的序列名:tablename_colname_seq。在如今的這種狀況下,DROP SEQUENCE 語句將會是這樣的:DROP SEQUENCE practicetable_someID_seq;。如今你就能夠刪除這張表並從新生成它了。 
    在添加完這些表以後,你能夠輸入z對這些表進行復查。而輸入q將會退出psql。如今剩下來的就是準備輸入到Postgres中的數據了。 

處理Dump文件 
    由於MySQL保留了絕大多數的SQL語言的標準,從一個SQL的dump文件中導出實際數據並非太困難的。然而,在咱們使用Postgres對這個文 件進行處理前,咱們仍是須要做一些編輯工做。 
    對於數據記錄,在MySQL和Postgres之間的主要區別是對引號的處理。在Postgres中,字符串變量(包含文本的變量)必須由兩個單引號引 出。而在MySQL中,你還可使用雙引號,可是幸運的是,在mysqldump程序中程序中使用的是單引號,這恰好與Postgres一致。然 而,MySQL和Postgres還有一個地方不一樣,那就是對字符串中出現的引號的處理。在MySQL中使用"",而在Postgres中使用"。使用你 的文本編輯器並經過替換功能將其中全部的""替換爲"。有趣的是,Postgres和MySQL都使用'來表示單引號,這使得咱們免去了一個麻煩。 

導入到Postgres中 
     當你整理好SQL dump文件後,將這個文件上載到你的Web主機中,就如同你當初建表那樣登陸到主機,轉到SQL dump文件存放的目錄。啓動psql,不過此次你必須使用另外一個命令行參數:psql -f sqldump.txt,這兒的sqldump.txt就改成你的SQL dump文件的文件名。這個命令會將所有的SQL文件導入到適當的Postgres數據表中。在此以前,你也許還須要其它的一些命令行參數以使得psql 能夠對你的身份進行驗證。若是發生了錯誤,psql會告訴這是由什麼引發的。找到文件中的這一部分,找到問題並手工解決它。我當初是沒有遇到任何問題,我 差很少準備結束工做了。可是,很快我注意到另外一個問題。 
    在我開始使用個人新的Postgres驅動的站點時,我偶然地發現MySQL和Postgres之間另外一個不兼容的地方。SERIAL類型的自增字段所使 用的Postgres的序列,它從1開始,並在每次有一個SERIAL類型字段的記錄插入時加一。然而,在我導入MySQL的dump文件時,這個 dump文件中的SQL將這個值定義爲整型主鍵。我當時的狀況是,我有一個到惟一主鍵已經到了60,而序列仍然是1。因而個人每個插入命令都無法成功, 由於根據序列產生的不是惟一ID。我當時用了一個很笨的方法解決這個問題,那就是運行了60次INSERT語句以將序列調整爲適當的值,可是後來有一個熟 悉Postgres的朋友教給我一個好方法。下面就是他所講的方法: 
    使用telnet這樣的終端程序鏈接到你的主機。而後啓動psql程序。首先,肯定表中ID的最大值。這能夠用SELECT fieldname FROM tablename WHERE fieldname=MAX(fieldname);。而後使用DROP SEQUENCE table_colname_seq;刪除有問題的序列,這兒table是表名,而colname是SERIAL字段的列名。而後使用CREATE SEQUENCE table_colname_seq START 61;重建序列,固然這兒的61應根據你的實際狀況進行修改。 

安裝一個圖形界面的工具 
    當我成功地將數據導入到Postgres後,我還須要讓個人不懂Unix的夥伴可以操做數據庫中的數據。當初的MySQL我是使用的 phpMyAdmin,這是一個很好用的工具,它可以在線的顯示和編輯數據庫。幸運的是,已經有了「Postgres版本」的phpMyAdmin,那就 是phpPgAdmin。 
phpPgAdmin的安裝很是簡單。首先,從phpPgAdmin網站下載最新的版本,而後將其放到你的Web主 機上的你所能訪問的地方。使用telnet這樣的工具登錄到主機。到phpPgAdmin.tar.gz文件所在的目錄,輸入tar -xzvf phpPgAdmin.tar.gz對程序進行解壓(這裏只是舉個例子,你的文件名可能不同)。下面一件事就是將解壓生成的新的子目錄移到合適的地方, 並閱讀README文件。 
    最後,用你的Web主機上的文本編輯器打開config.inc.php。這個文件中包含了對phpPgAdmin的配置。將這個文件配置好你就能夠經過 瀏覽器使用PhpPgAdmin了,它會提示你輸入用戶名並登陸,經過這個程序你管理你的數據庫將變得很是簡單。 

結語 
    與MySQL相比,Postgres更加穩定,更加可靠,能夠應付更大的數據。按照上面的提示,你可使用SQL的dump文件將數據從MySQL轉到 Postgres。若是在這個過程當中你遇到什麼困難,從Postgres網站你能夠找到一些很是有用的文檔資源。

===========================
MSDE

MSDE全稱是MS SQL Server Desktop Engine,俗稱MSSQL的桌面版,它是一個基於 SQL Server 核心技術構建的數據引擎。MSDE 2000 支持單處理器和雙處理器,是面向小型應用程序桌面擴展的可靠的存儲引擎和查詢處理器。MSDE與SQL Server徹底兼容,它只支持數據庫容量2G,併發用發不超5個,沒有圖型管理工具,可是免費的 。
SQL Server系列產品具備各類發行版本,用以知足在不一樣的環境下對處理的數據量、併發用戶數和硬件的不一樣要求。通常來講,MSDE適合在併發用戶數小於5 人,數據量低於2GB的狀況下使用。當數據量和併發用戶數超過上面的配額的時候,SQL Server成爲了更好的選擇。因爲MSDE與SQL Server徹底兼容,開發人員可使用一樣的數據訪問語言在規模相對較小的MSDE數據庫系統和規模較大的SQL Server數據庫系統之間實現無縫轉換,而且,當所在組織的規模擴大後對數據庫系統的功能和性能提出新的需求時,則能夠在不修改現有數據庫應用程序中的 任何代碼的狀況下,將它徹底移植到基於SQL Server的平臺上運行。
MSDE不包含圖形界面,是經過命令行管理程序osql來鏈接的。
MSDE爲多個 Microsoft 產品(包括 Microsoft Visual Studio 和 Microsoft Office Developer Edition)的組件提供。它的版本和 SQL Server 版本之間有直接關係。MSDE 1.0 基於 SQL Server 7.0;MSDE 2000 基於 SQL Server 2000。雖然是微軟的免費數據庫,但MSDE不適用大量用戶訪問。

==================
哪個分佈式 DB2 9.5 版本適合您?
Paul Zikopoulos (paulz_ibm@msn.com), 數據庫專家, IBM

關於 DB2 Express-C 的好消息是對它的限制很少:沒有數據庫大小限制,沒有自動管理或工具限制,沒有內存模型限制(可使用 64 位內存模型),等等 —— 您使用的就是純正的 DB2。而一些 Express 競爭產品每每設置了許多限制;可是,這超出了本文的範圍。

DB2 Express-C 能夠在運行 Linux 或 Windows 操做系統的服務器上使用。在 IBM DB2 Express-C 下載站點 上能夠找到支持平臺的完整列表。

開 發人員喜歡 DB2 Express-C,由於可使用它免費開發和部署應用程序。ISV 也喜歡 DB2 Express-C,由於可使用它免費開發 DB2 並在他們的打包應用程序中部署和發佈 DB2。請牢記,由於 DB2 Express-C 是純正的 DB2,這意味着能夠不加修改地將這些應用程序部署到任何 DB2 版本上,甚至能夠遷移到 DB2 for z/OS 上(只要在編寫應用程序時使用 DB2 系列 95+% 的公共 SQL API 集)。

在學術領域,教育工做者能夠利用本文前面提到的 IBM 學院計劃。這個計劃容許他們無償使用 DB2 技術,容許他們的學生在任何課程中使用 DB2 Express-C。這些 DB2 參與者能夠不受限制地開展活動,免費構建、部署和發佈數據服務器。

DB2 Express-C 在 2006 年 8 月 17 日的 VARBusiness' 2006 上得到了 Best of the Midmarket 獎。您不想試試 DB2 Express-C 嗎?立刻 下載 一個拷貝。

許可和訂價

DB2 Express-C 能夠免費構建、部署和發佈。所以,這個 DB2 版本沒有相關聯的許可費用。可是,在任何規模的服務器上,它限制 DB2 引擎只能使用最多 2 GB 的內存和 2 個處理器核心。能夠在虛擬化環境中使用 DB2 Express-C。

===========================
甲骨文發放免費餐 Oracle XE版任你下
做者:IT168 電腦虎   2005-11-09

甲骨文11月9日宣佈向中國市場推出的可免費下載的Oracle Database 10g Express Edition (Oracle Database XE) ,供專業人員在學習及應用開發的起步階段使用。用戶能夠從Oracle網站下載 Oracle Database XE版,還能夠經過 甲骨文公司提供的 免 費在線論壇參與對Oracle Database XE的使用討論。

 

    Oracle Database XE創建在Oracle數據庫10g第二版的代碼庫之上,與Oracle數據庫產品系列徹底兼容。Oracle Database XE可用於32位Linux和Windows操做系統,在功能上,Oracle Database XE版至關於Oracle Standard Edition One。但因爲是免費版本,在硬件上受到了必定的限制,如:

  • 至多使用1個CPU或1個雙核CPU的處理能力;
  • 最多可以使用1GB內存;
  • 每一個服務器只限於一個CPU;
  • 最多存儲4GB的用戶數據。
    隨着Oracle Database XE的推出,甲骨文現有的產品系列擴充爲六個版本:Oracle Enterprise Edition、Oracle Standard Edition(SE)、Oracle Standard Edition One(SE 1)、Oracle Personal Edition、Oracle Database Lite和免費的Oracle Database XE
相關文章
相關標籤/搜索