调查一下各位高手对Firebird 1.5的看法!
各位觉得Firebird 1.5比Interbase6.x有哪些优点?
Firebird 1.5在运行中会有什么问题?(比如文件损坏或者数据混乱之类的)
问题点数:0、回复次数:29Top
1 楼CuteBit(康)回复于 2004-05-05 00:16:47 得分 0
fb1.5 vs ib6.X 具体的功能和方面在 Firebird_v1.5.ReleaseNotes(fb1.5Release)文档里有比较详细的描述。
>>Firebird 1.5在运行中会有什么问题?(比如文件损坏或者数据混乱之类的)
如果你真有发现这样严重的问题bug,你可以在 fb-support 新闻组里发布你的问题,那里每天都有 fb 小组人员“视察”。你的问题我相信很快会有解决的。因为 fb 是开源免费的数据库,包括技术支持。
BTW:你的帖子可能会让不少谦虚的人“止步”。:))Top
2 楼leehq(没有读过高中的人)回复于 2004-05-05 10:45:09 得分 0
upTop
3 楼leehq(没有读过高中的人)回复于 2004-05-05 19:13:08 得分 0
?Top
4 楼CuteBit(康)回复于 2004-05-06 01:44:08 得分 0
leehq(没有读过高中的人)
技术区内重要的是交流。既然有人(我)已经诚心的回复你的问题,更多时候,回复人希望得到提问者的一些有意义的反馈,这样才能进行更多的交流探讨。
你灌水式的 UP/? 很没意思,也很没礼貌!我不知道你这样的冷漠是什么意思.Top
5 楼leehq(没有读过高中的人)回复于 2004-05-08 10:54:18 得分 0
我只想让更多的人来回答我而已,这也有错吗?Top
6 楼CuteBit(康)回复于 2004-05-08 13:16:02 得分 0
想法我明白。也很赞同。
交流上要注意礼貌和技巧。
Top
7 楼zousoft(菜菜鸟的战斗诗歌)回复于 2004-05-09 20:01:56 得分 0
xixi, 我是菜鸟. 学习...Top
8 楼erickleung()回复于 2004-05-14 12:30:51 得分 0
任何都有个别的优点或死穴, 若楼主不清楚说明自己的境况, 要人怎样分析呢? 怪不得人们说你在灌水.
简约的说一个是开源;一个是商业性, 各有自己的取向, 只要能从实际出发, 一样可以满足客人的要求, 都是好工具.
相对其他sql server; fb相信是最少最秀身的安装, 甚至可以从无硬盘环境下运作. 如文件损坏或者数据混乱之类的问题, 绝大部份都和用户本身和程式有直接关系, 如果fb会无原无故生问题, 大家早便弃之而去, 不用苦苦哀求Borland云许, 让当时已死的ib5, 以开源形式而复生成fb.
灌水完毕.Top
9 楼leehq(没有读过高中的人)回复于 2004-06-07 20:37:37 得分 0
多谢各位!Top
10 楼coaco()回复于 2004-06-12 22:01:10 得分 0
有一个缺点,比如你的用户在用速达,它是用IB6.x的,然后你用FB1.5的话(同一台服务器),可能安装上会有问题的——当然SQL SERVER也有版本的问题,可问题在于速达好象没打算对原来的版本做数据库升级,所以,可能会麻烦,最好请版主再灌一次水,看看这样的问题如何解决.Top
11 楼coaco()回复于 2004-06-15 09:35:04 得分 0
补充一下,在下不是“高手”Top
12 楼leehq(没有读过高中的人)回复于 2004-06-17 21:49:19 得分 0
coaco(),帮你顶一下!Top
13 楼alphax(豪言壮语的乌鸦)回复于 2004-06-26 10:18:01 得分 0
哎,刚才打了几行,回复失败丢了
>> 用IB6.x的,然后你用FB1.5的话(同一台服务器),可能安装上会有问题的
其实IB可以和FB共存的,FB提供了一某个server port或service name启动的feature
你可以通过传递FB服务的启动参数来控制这一点,客户程序也可以制定连接那一个服务器
也可以同时运行多个FB实例,详细信息,请参阅FB 1.5 release notes
另外,我也有个问题想了好久想不明白,想在这里请教大家
IB/FB有个事务参数consistency,Delphi的大多数存取控件都将它视为Repeatable read
级别,但是,据我所知,IB/FB是通过锁定整个数据表来实现这种Repeatable read,也就是
一旦读/写取了某个数据表,则其他事务就不能更新该数据表了,
很自然,insert也是被拒绝的,那么幻象插入的问题就不复存在了,
那为什么还没有达到serializable级别呢?
Top
14 楼CuteBit(康)回复于 2004-06-26 23:25:09 得分 0
hi...alphax
>>哎,刚才打了几行,回复失败丢了
我也经常遇到这样的情况 :((
>>那为什么还没有达到serializable级别呢?
我喜欢这样的问题..不过今天我没时间回复太多,,或者你开个新贴讨论一下..Top
15 楼coaco()回复于 2004-06-27 14:38:30 得分 0
关于共存的问题首先我觉得是那些商业软件服务不到位的原因,不是IB/FB的原因。
用FB可以共存没有试过,不过我觉得应该有两个前提:
第一,后续程序最好不使用IBX,因为IBX只认GDS32.DLL,可能会有冲突。
第二,后续程序指定另一个端口,不再使用3050
Top
16 楼alphax(豪言壮语的乌鸦)回复于 2004-06-28 10:53:09 得分 0
to CuteBit达达
想了两个晚上,终于想通了“为什么还没有达到serializable级别”的问题,
我老是考虑两个consistency事务并发的情况,没有考虑到consistency事务
和其他事务并发的情况
to coacco达达
>>第一,后续程序最好不使用IBX,因为IBX只认GDS32.DLL,可能会有冲突
Firebird 1.5提供一个向后兼容的选项就是提供一个GDS32.DLL
而IBX的新版本是依赖一个称为GDSLibrary的接口来工作的,
你可以可以通过注册一个TRegisterGDSLibrary类型的例程来达到
载入FBClient.DLL而不是默认的GDS32.DLL的目的
详细的请参阅IBIntf单元的RegisterGDSLibraryFactory例程以及GetGDSLibrary函数
>>第二,后续程序指定另一个端口,不再使用3050
应该留一个接口,使得应用程序可以根据配置文件决定使用哪个端口
Top
17 楼alphax(豪言壮语的乌鸦)回复于 2004-06-28 10:54:07 得分 0
不好意思,写多了一个cTop
18 楼coaco()回复于 2004-06-29 09:07:53 得分 0
还希望楼上再指点一下,IBIntf单元中,GDSLibrary的工作机制不甚了解,似乎也没有相关的说明,它似乎是通过如下方式的实现的:
IGDSLibrary = interface
['{BCAC76DD-25EB-4261-84FE-0CB3310435E2}']
不好意思,我对PASCAL不熟,如果象您所说,把它指向fbclient.dll 如何操作法呢?我在网上搜了相关的例程,也没有找到Top
19 楼alphax(豪言壮语的乌鸦)回复于 2004-06-29 14:48:37 得分 0
我目前自己用的是,Firebird提供的兼容gds.dll,因为我打算项目基本完成以后才去弄它
既然你现在想要,那等一下吧,我现在弄一下,Top
20 楼alphax(豪言壮语的乌鸦)回复于 2004-06-29 16:52:22 得分 0
其实你直接改IBHeader里的IBASE_DLL就可以了,
不过,既然它提供了registerGDSLibaray函数,
我比较倾向于通过注册一个例程来达到
载入FBClient.DLL而不是默认的GDS32.DLL的目的
初步搞好了,基本测试也做了,
本来想贴出来,无奈说回复太长了
如果你需要,就留个emailTop
21 楼coaco()回复于 2004-06-29 18:07:00 得分 0
太谢谢了!
Travel_man@163.com
写一个主题,因为现在垃圾邮件太多了.
我也倾向于后一种 :),用前一种方法是不是还要重新编译IBX并替换相应的库文件呢?Top
22 楼coaco()回复于 2004-06-30 08:43:13 得分 0
还没有收到,没发吧?Top
23 楼alphax(豪言壮语的乌鸦)回复于 2004-06-30 11:09:56 得分 0
刚才发了,请查收Top
24 楼coaco()回复于 2004-06-30 13:21:22 得分 0
收到了,谢谢Top
25 楼coaco()回复于 2004-06-30 14:22:15 得分 0
经客户端测试,完全可以不需要 GDS32.dll
编程环境是 BCB6.0,开始为了保险起见,在DM(数据)模块里添加了
#include FBClientLibrary.hpp 一行,测试通过
后来连这一行也删除了,完全没有问题
关于注释中提到的:
注意:如果某些单元在initialization的部分使用IBX控件,
则必须确保本单元在program的uses子句中的位置处于那个单元之前
这样的情况没有出现,奇怪,究竟什么情况下会有注释中的情况发生?Top
26 楼alphax(豪言壮语的乌鸦)回复于 2004-06-30 16:22:30 得分 0
这主要是针对Delphi用户而言的,
先看IBIntf单元的GetGDSLibrary函数
function GetGDSLibrary : IGDSLibrary;
begin
if not Assigned(GDSLibrary) then
//如果本地的GDSLibrary全局变量尚未创建
if Assigned(FRegisterGDSLibrary) then
GDSLibrary := FRegisterGDSLibrary
else
//如果没有注册别的GDSLibraryFactory的话,使用默认的IGDSLabrary
GDSLibrary := TDynamicLibrary.Create;
Result := GDSLibrary;
end;
每个IBX控件都使用GetGDSLibrary函数来获得IGDSLibrary接口的,
Delphi有initialization的概念,这些部分的代码在进入程序入口以前被调用,
调用的顺序依照它们出现在program uses部分的顺序(还有一些其他的规则,这里不说了)
如果某个单元在initialization部分使用了IBX,很显然,
如果此前没有注册一个Factory函数,
对GetGDSLibrary会导致创建一个默认的IGDSLabrary并存储在全局变量中
这个注释只是用于Delphi用户,并且通常不会出现注释中说的情况
但是如果你的BCB项目中含有其他Delphi单元,并且它们在Initialization部分使用了IBX,
那你必须确保这个顺序,否则载入的将是GDS.DLL
Top
27 楼coaco()回复于 2004-06-30 21:59:51 得分 0
非常感谢,关于initialization留待以后有机会找找对应于BCB应该是什么样的情况。Top
28 楼leehq(没有读过高中的人)回复于 2004-07-01 00:48:27 得分 0
upTop
29 楼leehq(没有读过高中的人)回复于 2004-07-15 17:46:35 得分 0
upTop




