I am starting with Firebird and have found components to access a database by Devart.
They offer native components (IBDAC) or DBExpress drivers. (I am using Delphi XE2 Pro which doesn't include Firebird drivers)
I guess native components are a bit faster, but that's not too important for me.
What are the advantages/disadvantages of each approach and why should I choose one over the other?
Check Anydac. It is universal data access library, but supports most of Firebird specific features including - multiple transactions, database events, services (backup/restore), etc. The performance is very good. Sorry, i cannot imagine dbExpress advantages over Anydac.
IBdac
your application is tied to firebird
you are familiar with bde or ado
performance
maximal Firebird support
DBexpress
portability (it is easy to port you application to anther database).
upgrade pro edition to enterprise so you can use one supplied by
embarcadero.
You can check Devart FAQ.
FIBPlus and UIB are also good choice
Native components can support database specific functions. I've missed event support with DBExpress when using 3rd party driver from Upscene.
DBExpress should make it easier to create database agnostic application, but I've no experience about that.
ZEOSlib might be a nice alternative, actively developed and supporting many databases including Firebird.
Related
I want to code a server side software with Delphi+Firebird but i need a documentation (or tutorial) that explains all the steps and components from the beginning. Is there any site/tutorial/document that you can suggest? which explains step by step coding.
Even if you suggest a component to make server side connection with regard to your experiences, i will be glad.
Thanks.
The main English information source for Firebird is IBPhoenix.
The main Russian information source for Firebird is IBase.
The Firebird FAQ gives a list of Delphi connectivity options and answers on many other Firebird questions.
It will be hard to pass along IBExpert. There you will find useful tools and Firebird articles.
Actually Firebird is a fork from Interbase, yes Interbase had become an open source some time ago and then become closed source again. So, u can use Interbase as a reference. But as time goes, Firebird become better and better in quality. Also become different from Interbase itself. To get more info on Firebird, u can visit www.ibphoenix.com.
For the components to connect Firebird, u can use FIBPlus, UIB, anyDac, UNIDAC and many more. The one u must avoid is IBX itself, Jeff Overcash has state that IBX is NEVER tested against Firebird and WILL NOT TESTED agains Firebird. They see Firebird as competitor actually.
I use Firebird daily and it never fails (except if your HDD broken).
Documentation is a weak side of Firebird server. We usually use a combination of:
Interbase documentation
Firebird release notes
Information from Firebird forums
Helen Borrie's Firebird book
Delphi uses pretty unified technology to talk to any server be it Firebird or not. So, there is just enough information you could find in a help or in available books.
My application uses TDbChart and ADO. I was wondering, for deployment, do I need to include BDE files too?
Do you know other charting tools that can be used with ADO (freeware preferably)? I just need simple charting tool. TDbChart is a good one, but if I need to deploy BDE files too, I think it's becoming too bulky and complicated.
Thanks!
No, you don't need deploy the BDE if you are using ADO. ADO and BDE are two different technologies to connect to an database.
Moreover the TDbChart is a data-aware control, because that can be used with any TDataSet descendent connected to an TDataSource.
So you can use ADO, Zeos, dbexpress or the bde components (and many more). to connect your TDbChart to the data.
I would like to know the better alternatives to the Delphi BDE. We have this huge application using Firebird 1.5 and BDE, and would like to consider the following alternatives:
IBObjects
FIBPlus
The migration will involve conversion to Firebird 2.5 dialect 3.
Can I get your ideas on which one is better? Your input is highly appreciated.
Thank you.
I have never used IBObjects because I was quite happy with FibPlus. FibPlus datasets support interesting "separate transactions" feature that makes possible to write applications which are very similar to BDE applications but at the same time use Firebird transactions more effectively and support other Firebird specific features. I have written some beginner's notes about using FibPlus that may be helpful as a starting point.
Both components are very good. Migrating from BDE will be easier with IBO, because it has components with the same property and methods names used in the "BDE" ones, and you can use the GReplace utility to change all the declarations from "BDE" to "IBO", ie: TQuery to TIBOQuery, etc. Check more info at http://www.ibobjects.com/ibo_help/convertbdetoibo.htm
Anyway, you should understand how IBO works to fine tune your application after the conversion.
It would be easier to migrate to FIBPlus if your app was using IBX instead of BDE.
I have Delphi Professional 2007 and 2009 and was thinking of upgrading either or both to Enterprise due to a new project that requires me to interface to a Sybase ASE database.
I did some research and it appears that 2007 Sybase driver leaked memory and it doesn't appear that this problem was fixed.
Does anyone know if the Codegear Enterprise drivers for Sybase ASE are reliable and do any alternatives exist?
The BDE had some huge shortcomings and it seems that a lot of those were brought right into DBExpress. Some of these include:
No suport for multiple result sets
No way to get your hands on server messages that are not errors
No control over where the cursors are located
No support for async calls (where you use ct_poll)
My advice would be to write your own (simpler than it sounds) or to use ADO. ADO exposes a lot of ASE's functionality and the performance is very good.
Have you looked at NativeDB? The website might be a little off-putting, but I have a legacy D5 app that connects to ASA using their tools. At some point in the next month or two I'm going to have to buy an upgrade so that I have their latest D2007 driver, because I need to move that legacy app to D2007.
It works well (and it's damn fast) with ASA - I don't know about ASE but it might be worth a quick email asking them, or downloading a trial component. It's not that expensive for what it does, either.
I am thinking about using SQLite
It is a self-contained, server less, zero-configuration, transactional SQL database engine and is open source.
Will I gain anything by using Blackfish instead of SQLight ?
Why not Firebird?
http://www.firebirdsql.org
http://www.firebirdfaq.org
"...Firebird is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms. Firebird offers excellent concurrency, high performance, and powerful language support for stored procedures and triggers. It has been used in production systems, under a variety of names, since 1981...."
Stick with FOSS (Free Open Source Software).
Both SQLite and Firebird are excellent choices. Both fill your requirements. Both are very reliable, zero-configuration and support transactions.
Without knowing enough about your intended use, Firebird would be my first choice because it makes possible to migrate to a Client Server deployment with close to zero effort and it has a very robust set of features. It is all about the options.
IMHO Blackfish is not a god choice - "Blackfish SQL runs on both the .NET framework and on the Java platform." - enough said.
Use SQLite.
Much smaller, less overhead, no licensing issues etc.
Laslty, only you can decide which one will do everything you need a db system to do. Which one has all of the features you need to support?
John
I will vote for Sqlite first, because it's compact, lite and fast, but depend on your application you may go with other choices like Firebird or PostgreSql.
for example Sqlite has limitation to one writer at the same time, it may not be problem for most of desktop applications that used by one user, but it will not scale for more uses in future.
you can go with FireBird embedded as solution which will be act like Sqlite, then move to firebird server when you need more users.
In other side BlackFish database, will force you to install .Net framework on your client's machines, which is something isn't good IMO, specially if you need to distribute your application on Internet, beside it will require license when it scale for more than developer edition.
Another thing to consider is how are you going to access your data. If you are using DBX4 for instance, it is very easy to change what database you are looking at. In which case I would suggest trying both (plus any others that people highly recommend you try). On the other hand if you are using the the Interbase or ADO data access components then your ability to change is somewhat more limited.