破宝

我是一块破破烂烂的宝贝石头。
随笔 - 85, 评论 - 1279, 引用 - 54

导航

工具

关于

自选精华版 RECOMMENDATIONS
留言板 GUESTBOOK

本人 blog 文章、图片及其他资源等,除另有声明外,均遵循以下原则向全球(当然包括朝鲜、古巴、利比亚等国)共享:

1。欢迎转载、复制、传播、引用,但转载、复制(包括但不仅限于作为参考资料复制到本地)、传播、引用同时必须在显著位置注明作者(破宝/percyboy)和文章原始 URL 地址等信息。但商业转载、复制、传播(尤指用于图书、光盘等媒体的部分或全部),须事先征得本人的许可。

2。文章以“现状”提供,不为由于使用本站资源而造成的任何损失而负责,仅提供力所能及的咨询和参考意见。

3。关于修改:允许您将本 blog 中的资源作为参考资料复制时的一定修改,但仍须保留作者和出处信息;其他情况下的修改(包括修改后再发布),须和本人确认许可。
 

标签

每月存档

广告



访客

 

最近在学习 Firebird Embeded Database。作为一款单文件型小型数据库,Firebird 具有很多吸引人的特征,比如支持事务、支持存储过程触发器等,而且 Embeded 版本的 Firebird 在 .NET 开发中只需要拷贝两个文件:一个 fbembed.dll (非托管但不需要注册的动态链接库)和一个 ADO.NET Data Provider 的 FirebirdSql.Data.Firebird.dll。这些特征都非常适合那些需要在客户端存储一些数据,但又不想安装数据库(比如MSDE)软件的情形。

据称,在国外,需要使用客户端数据库的情况中,有30%左右的开发者选择Access,有30%的开发者选择MSDE 2000,有30%的开发者选择Embedded Firebird,剩余10%选择其他小型数据库,如SQLite,MySQL 等。

上面所说的Access,MSDE 2000,Embedded Firebird,SQLite等都是可以免费再分发(free redistributable)的数据库。相比而言,MSDE 2000 显著缺点是需要安装,最大优点是和服务器端的 SQL Server 编程模型一致,开发便利。Access的显著缺点是功能较少,不支持事务等常用功能,最大优点是简单、多数开发者都很熟悉,部署也很方便。SQLite支持事务,也是一款单文件数据库,比较不足的是 .NET Data Provider 还不是很成熟。Firebird则同时具有:单文件、部署简单不需安装(只需 XCOPY 两个文件)、支持事务、存储过程、触发器,.NET Data Provider比较稳定成熟等优点。

Firebird 本身有SuperServer和Embedded版本之分,后者只能本机访问,不接受TCP连接。对于开发者而言,从Embedded数据库切换到SuperServer,只需更改数据库连接串中的ServerType值就行。

但是,在你正式决定使用?Firebird 之前,请你注意下面这个 known issue(已知问题): Firebird 数据库文件不能放置在含有中文等字符的路径中。Firebird 的文件名不可以用中文字符,所在路径的任何部分如果含有中文字符,都将无法访问到数据库。举个例子,中文Windows桌面所在的目录一般是“C:\Documents and Settings\用户名\桌面”,如果数据库文件放置在桌面上,就无法访问到。当然,Firebird 内部是可以存储中文字符的,因为它支持 GB2312 和 UNICODE 等字符集。

我已向 Firebird 开发者报告了这个 BUG,希望能早日解决这个 BUG。

需要注意一点,连接串中的 Database 地址如果使用相对路径,请一定注意这个相对路径是相对于 fbembed.dll 所在目录的。

相关文章

Loading...

打印 | 张贴于 2005-04-18 12:27:00 | Tag:暂无标签

留言反馈

#回复: Embedded Firebird DB 简介 编辑
不错哦, 头一次看到。太落后了。
2008-01-15 00:16:00 | [匿名用户:冬雷软件]
#回复: Embedded Firebird DB 简介 编辑
不错
2008-01-15 00:15:00 | [匿名用户:冬雷软件]
#re: Embedded Firebird DB 简介 编辑
可以将Embedded Firebird DB数据库文件放在光盘上访问吗?ACCESS数据库访问时会在原路径中产生一个临时文件,如果在光盘上访问就会失败.
2006-07-20 17:42:00 | [匿名用户:yzyt]
#re: Embedded Firebird DB 简介 编辑
to 分散地发送:

Berkeley DB 是不错。不过它的 Licence 不适合作开发。
Berkeley DB 有两套授权机制,一种是开源协议,适合做开源软件或内部使用软件;一种是商业协议,适合做商业软件。简言之,除非你做的是开源软件,否则,Berkeley DB 不是免费的。

Berkeley DB is distributed under a dual licence. An open source licence is available for open source and internal use projects. A commercial licence is available for redistributing Berkeley DB within proprietary products. Sleepycat also provides world-class support, consulting and training services.
2006-03-19 20:53:00 | [匿名用户:破宝]
#re: Embedded Firebird DB 简介 编辑
一直用bk db,很好用,也支持中文路径
2005-12-31 00:27:00 | [匿名用户:分散地发送 ]
#re: Embedded Firebird DB 简介 编辑
我试了一下,可以用中文目录和中文文件名呀!!
2005-10-12 11:37:00 | [匿名用户:blackart]
#re: Embedded Firebird DB 简介 编辑
我想问个东西,embedded能够承受100万左右的数据量?
2005-10-04 22:06:00 | [匿名用户:wzw]
#re: Embedded Firebird DB 简介 编辑
我希望能够找到一个加密强度大一点的单文件数据库。不知道还有什么好介绍?
2005-09-13 21:56:00 | [匿名用户:焦点人物]
#re: Embedded Firebird DB 简介 编辑
谁说“最后找到的是Firebird Embedded Database,试用了一下很不错,单文件发布,不需安装,有密码保护,真是很理想”的?

你只要能拿到他的文件,再安装个fireBird,就可以随意查看了,真是没劲。
我看,比ms access还裸。
2005-09-04 19:02:00 | [匿名用户:ligb]
#re: Embedded Firebird DB 简介 编辑
access也是独占方式的。asp.net用firebird,我觉的还是用embed的好一些,如果用super的,那还不如用sql server.
试验中……
看能否并发连结……
2005-08-19 11:40:00 | [匿名用户:bluesnow]
#re: Embedded Firebird DB 简介 编辑
前面提的都是通过.net访问,请问如果用java编程访问Embedded Firebird DB方便吗?
2005-05-18 10:58:00 | [匿名用户:water]
#re: Embedded Firebird DB 简介 编辑
hehe,我前几天也在寻找一个用做 SmartClient 的 Client Data Caching的单文件型数据库,Access加密强度不够(用上面朋友的话说,完全是在裸奔),放弃;SQLite不支持数据库加密,也只好放弃。

最后找到的是Firebird Embedded Database,试用了一下很不错,单文件发布,不需安装,有密码保护,真是很理想。

不过最后客户让我们放弃了Firebird,理由:1.项目在客户端没有太多数据要加密;2.担心开源项目将来没有人维护(这个我觉得完全是杞人忧天,倒是商业软件半路甩手的见过不少);3.最关键的,对开源软件的质量不放心,看来某些FUD观念很是深入人心啊……

最后还是用了Access,里面对敏感数据加密。
2005-04-22 19:01:00 | [匿名用户:NetCobra]
#re: Embedded Firebird DB 简介 编辑
to 雨中漫步 :
如果你有主机的管理权限,这事好办,
我说了第二方案只是给没有管理权限的用户用的。
2005-04-22 10:37:00 | [匿名用户:破宝]
#re: Embedded Firebird DB 简介 编辑
那为什么不修改环境变量PATH的值呢?
2005-04-22 10:34:00 | [匿名用户:雨中漫步]
#re: Embedded Firebird DB 简介 编辑
to 雨中漫步:
对。默认是从 PATH 指定的目录中搜索 fbembed.dll,
改一下,让它从别的地方搜索。
2005-04-22 10:28:00 | [匿名用户:破宝]
#re: Embedded Firebird DB 简介 编辑
稍微修改一下托管的源码?
你是指Firebird .net驱动吗?
2005-04-22 10:24:00 | [匿名用户:雨中漫步]
#re: Embedded Firebird DB 简介 编辑
to 雨中漫步 :
我试过了,是可以的,是两个 dll。

一个方案是,把 fbembed.dll 放在 C:\windows\system32 等系统 PATH 指定的路径下。托管的那个 dll 放在你的 bin 目录中就可以了。

另一个方案是:稍微修改一下托管的源码,可以不用把 fbembed.dll 放在 C:\windows\system32 这样的敏感目录中,放在一般的目录,比如:可以和托管的 dll 放在一起。(我过些日子,改一下,发布出来)

前一方案适于自己是主机的管理员,操作主机比较方便;后一方面适于没有操作主机敏感目录的权限,比如使用虚拟主机的用户。
2005-04-22 10:01:00 | [匿名用户:破宝]
#re: Embedded Firebird DB 简介 编辑
to 破宝:
>>>请教一下关于“一个数据库连接”的依据?
>>>我这里简单测试了一下,是可以同时打开两个连接的。

哦,是我没说清楚 ,Embedded Firebird打开数据库时,是采用独占文件打开的,不能同时有第二个进程打开,这样,如果我发布程序时,就必须限制我的程序只能有一个实例在运行!

至于在ASP.NET中,我没试过多个连接的情况,不过,好像是支持连接缓冲池的!

如果在ASP.NET环境中,也可以发布一个DLL文件的情况下部署embedded firebird,那就爽了!
2005-04-22 09:48:00 | [匿名用户:雨中漫步]
#re: Embedded Firebird DB 简介 编辑
对,,这样就非常适合,做SmartClient的客户端数据保存呢!
妈的,,用Access牵扯到知识产权的问题,妈的,,用MSDN就要在客户那儿安全,太麻烦了!


请教,在那儿可以下载啊!
2005-04-21 22:35:00 | [匿名用户:大虫II世]
#re: Embedded Firebird DB 简介 编辑
单文件型小型数据库, 我也是用MDB的。 最关心是它的加密强度,像ACCESS那些密码随便就让人破解了,简直是裸奔!
另外,ADO.NET支持不支持也是担心的问题。
独占模式就更不敢奢望了。。。
2005-04-21 15:31:00 | [匿名用户:timiil]
#re: Embedded Firebird DB 简介 编辑
不错,可以考虑代替 Access 做 SmartClient 的 Client Data Caching。
2005-04-21 15:10:00 | [匿名用户:upto]
#re: Embedded Firebird DB 简介 编辑
to 雨中漫步, simonw:
请教一下关于“一个数据库连接”的依据?
我这里简单测试了一下,是可以同时打开两个连接的。

string connectionString = @"....";
FbConnection c1 = new FbConnection(connectionString);
FbConnection c2 = new FbConnection(connectionString);
c1.Open();
c2.Open();
c1.Close();
c2.Close();

没什么问题的。
2005-04-20 16:31:00 | [匿名用户:破宝]
#re: Embedded Firebird DB 简介 编辑
它起名叫做 Embeded,就说明了它的定位,
它被设计用于客户端程序(比如Windows Forms)中,并非诸位所期望的 asp.net 服务器环境中。
SuperServer 需要安装才能使用。
2005-04-20 15:56:00 | [匿名用户:破宝]
#re: Embedded Firebird DB 简介 编辑
“支持事务”和“部署简单”的确是最大的诱惑力,但要是Embeeded版本,只能有一个数据库连接,就不那么好用了。不知道SuperServer版本是不是依然部署简单,而且支持多连接呢
2005-04-20 15:53:00 | [匿名用户:simonw]
#re: Embedded Firebird DB 简介 编辑
fbclient.dll 只要放到程序可以找到的目录就行了,没有试过放到bin目录里行不行
另外,Embeeded版本,只能有一个数据库连接,感觉在ASP.NET里不太合适
2005-04-19 17:31:00 | [匿名用户:雨中漫步]
#re: Embedded Firebird DB 简介 编辑
CE不行,虽然有个CE平台的port,但是似乎非常不完善,不堪用。
2005-04-19 13:57:00 | [匿名用户:rIPPER]
#re: Embedded Firebird DB 简介 编辑
可以在其他的OS下用吗?比如Windows CE?
2005-04-19 12:52:00 | [匿名用户:aawolf]
#re: Embedded Firebird DB 简介 编辑
如果开发的是asp.net程序,那2个dll放在bin下面好像不行?不知道要放在哪里?
2005-04-19 09:37:00 | [匿名用户:chuanzai]
#re: Embedded Firebird DB 简介 编辑
其实,DBISAM也不错,只不过只支持Delphi/BCB开发环境
2005-04-18 20:15:00 | [匿名用户:古月春秋]
#re: Embedded Firebird DB 简介 编辑
我感觉我最看重的还是“支持事务”和“部署简单”这些特征。作为客户端的数据库,可能这两条还是很重要的。

另外它的SQL语法基本上是符合ANSI92标准的,和MS的T-SQL还是有不少差别的,但个人觉得和Oracle的PL/SQL相比,它还是比较接近MS的。当然Firebird的SQL看起来更接近MySQL,因为它们都比较符合ANSI标准。
2005-04-18 15:35:00 | [匿名用户:破宝]
#re: Embedded Firebird DB 简介 编辑
Well, 写sp的语法和sql server差别不小,不过还是值得学习;)
2005-04-18 15:28:00 | [匿名用户:rIPPER]
#re: Embedded Firebird DB 简介 编辑
阅,希望今后再多介绍几款这样的小型数据库!:)
2005-04-18 12:59:00 | [匿名用户:Cavingdeep]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode MVC Blogger System