免费数据库(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
相关文章
相关标签/搜索