Delphi Handbooks Collection


Delphi XE Handbook


Delphi 2010 Handbook


September 3, 2010

BlackFish SQL Gone in Delphi XE, What About a Replacement?

BlackFish SQL, the .NET database installed with recent versions of Delphi, is not part of Delphi XE... and it seems Embarcadero pulled the plug on it. But what about having a native alternative?

BlackFish SQL, the .NET database installed with recent versions of Delphi, is not part of Delphi XE... and it seems Embarcadero pulled the plug on it.

BlackFish SQL Gone

According to the Delphi XE FAQ:

Is Blackfish SQL still included with Delphi? Blackfish SQL is no longer included with Delphi as of the XE version. We recommend InterBase which is available in multiple configurations is a great choice as an embedded database.

BlackFish SQL started with JBuilder, was a complete SQL database written in Java, great for small or embedded applications, and was ported to C# with an automatic tool to create a fully compatible .NET version. Nice for small demos, you had to pay for deployment, and while it could be used for Delphi .NET development, it made little sense to use a managed database engine for a native Delphi application. I guess very few licences were ever sold and that it will be discontinued, sold, open-sourced (in case some developers really care), or anything like that. I doubt many Delphi developers will ever notice.

Delphi and Local Database Engines

Still, this opens up an interesting topic. In the early days, for simple applications (and even some large ones) the natural choice for Delphi developers was Paradox. Later on (with Paradox disappearing) many developers used another simple local database, Microsoft Access (and many still do). At the same time, the company pushed for migrating towards full relational databases, including their very own Interbase. Many Delphi developers picked that direction, but for some it was way too complex for the task at hand.

In parallel, there has been a lot of interest around fast and powerful ISAM databases that added fast SQL processing without giving up their navigational nature. Unlike a relational DB, with a navigational one you can open a million records table in a grid and let the user browse it (not that this is a great idea, though). This makes porting existing code incredibly faster and minimize changes in the user interface of classic applications. Two good Delphi-related examples (out of dozens, sorry for those I'm not mentioning) are Advantage Database Server and Nexus DB. Before you ask, similar tools don't lack much of the features of big brothers, work on networks and over the Internet, provide hot backups, replication, triggers and stored procedures, encryption, and much more.

While far from common for enterprise applications (in which you might have to comply with the database choice of the customer), similar databases are really great for ISV and web applications and in many other circumstances. I really think Delphi has lacked a local and simple option, and suggesting people to buy the cheap "Interbase To Go" or pick the free Firebird Embedded still doesn't address the original concern. With Delphi core dataset classes and data-ware controls still bound to a navigational model, a navigational database can really make simple applications fast to write and fast to execute.

Any Room for a Local Delphi DB?

So I still hope Embarcadero can address this issue in the future, offering a nice local engine (a third party one or on open source one could do) for the Professional version... and maybe a future free or very cheap version of the product, as it was in the early days. Having removed most dbExpress connectivity options from the Professional versions, the current best options are still Microsoft Access, third-party databases with custom components, or third-party data access components. Sure, we like options, but I think this something far from optimal for the product, particularly at an entry level. So I ask, is there room for a local Delphi database in the box?

 





 

32 Comments

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

I have heard some good things about SQLite
http://sqlite4delphi.sourceforge.net/
Comment by Stijn Sanders [http://yoy.be/] on September 3, 15:06

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

The best options IMHO are rather:

* FireBird Embedded: you've already got the components
for it, the same as those for Interbase & FireBird.
* SQLite: if you need performance and reliability in a
small local package, nothing else comes close.

I wouldn't consider Access as being anywhere near one
of the "best options" though.
Comment by Eric [http://delphitools.info] on September 3, 15:18

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

Why not to choose SQLite as a replacement? It's 
lightning fast, powerful, free and open source. Delphi 
developers can only benefit from having native access to 
SQLite. 
Comment by liquid on September 3, 15:20

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

Paradox/BDE is still there and works reliably with XP,
Vista and 7. Unsupported? Well, we never know when
some of the independent vendors will disappear also.
Comment by Paradox on September 3, 15:39

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

My personal opinion - the third-party data access
components are much more stable, better supported and
provide a better access to the specific features of
the particular databases than dbExpress. The only
reason to use dbExpress IMO is to support a single
codebase for a lot of different database servers - a
very rare case really.

As for local DB engine as a part of the product - it
would be interesting for students, beginners and
hobbyist programmers, but I am afraid the current
company policy is to ignore them totally.
Comment by Serg [http://sergworks.wordpress.com] on September 3, 16:12

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

Little strange!

Honestly - I never understood why thy did not put it 
out in more public or at least well document it. If 
they would a least have had a managment facility ... 
this takes too long. There must be a command shell --
> help .... at least or like nexusdb a web 
interface...

Maybe having a DB based on managed code ... I think 
we all have understood ... nice but you have now 
still SQL Server in kind of CE and Express... and as 
you mentioned Access (the service library of Anydac 
now has the repair built in and had support for 
Blackfish SQL too). Honestly one needs a lot to 
overcome Nexus DB.

Mike
Comment by Michael Thuma on September 3, 16:12

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

If they're taking a cross platform strategy, starting with OS X, then SQLite 
is the clear first choice. It's widely used by developers using Apple's tools 
so it would fit right in. 

It would also be the natural choice for any potential smart phone 
development. iPhone databases are generally in SQLite, and from what I 
understand that's what is being used by Droid apps (though I could be 
mistaken there). If Apple ever come to their senses and we can develop in 
Delphi for iWhatever devices the database would be the same as 
everyone else uses.
Comment by Ron Grove [http://www.evanoah.com] on September 3, 16:49

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

Marco,

that's bad news but not a really suprising me ... BF is really a treasure 
on the db-market but less people have realized this in the past (like 
IB with the Asthon-Tate deal in 1992, where everyone only think 
about dBase). 
some big advantages for me:
* ReadOnly-possible (running a jds - database from a DVD)
* two-fish encryption (only the 16 bytes of every datablock is 
"readable“)
* really high-performance for:
        stream-reading
        Dataware-like app‘s
        high transaction-work isn‘t a problem

+ with default 4kb-blocks ->         8 TB max for every database
+ support until 32kb-blocks....
+ incredable limits, meaning only theoretical a limit
+ running in the JAVA- or .net-Framework
+ small server-app-size: < 2 MB! (+ framework)
+ near to 0%-Deployment
+ 2 files for the database (*.jds & *.loga)
+ SP and Trigger create in any Java and any .net-language
+ ADO.net (.net)
+ dbx4 (win32)
+ JDBC (JAVA)

In 2003 was my first contact with NDataStore and I know some big 
jds-databases (not GB-size, more!!). They run since 2000 on 
mainframes with Java and it works great, not more or less ...  after 
resign of some developers in 2005 NDataStore was death, and now  is 
the 2nd death of the great database, but on the market you find a lot 
of good databases, commercial and free and without acitivities (active 
maintaining and improvements, e.g. .net-version support) and 
marketing no database can be successful on the market. 
I made in the past some inhouse-trainings about BF or talk on 
conferences about BF, amazing results in the database was possible.

so long BlackfishSQL. I loved this database really. 

Like last post on my blog: Time to say goodbye  :-(
Comment by Thomas Pfister on September 3, 16:55

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

With Interbase SMP available as Server, Desktop and To-Go edition, it's 
certainly good enough to replace BlackFish. 

Of course IB is not free - which might be the reason for some user not to 
even evaluate it.

http://www.embarcadero.com/products/interbase-smp/product-
editions-for-me 
Comment by Olaf Monien [http://www.monien.net/blog] on September 3, 18:11

The "database noone needed" 

I predicted it over one year ago... ;-)
Comment by Luigi D. Sandon [http://www.sandon.it/?q=node/37] on September 3, 18:30

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

I heartly recommend Accuracer: 
http://www.accuracer.com/
It's very fast (they clame being the faster BDE 
replacement), is a single file database, ... an has 
alot of nice features:

+ Client/server database engine with server component 
and custom messages
+ Easy-to-use multi-user (file-server) database engine
+ Multi-thread access
+ Storing all tables inside the single database file
+ Embedded database: no BDE, no DLLs
+ SQL'92 (DML & DDL) support
+ SQL stored procedures and functions support
+ Referential Integrity support (SQL'99 compliance)
+ 100% Unicode support - SQL, filters, database 
objects names
+ Easy-to-use changes detection and write failures 
detection
+ Fully compatible with standard DB-aware controls
IProvider Support (ClientDataset)
+ Small footprint and low memory usage
+ In-Memory tables support for the fastest data access
+ Varchar and BLOB field types with optional data 
compression
+ Strong database encryption with wide variety of 
algorithms and modes
+ Transactions support with READ COMMITTED isolation 
level
+ BatchMove component
+ Reverse engineering (tables to SQL script export)
+ Backup and Restore support
Triggers - database and server events
+ Capability of database embedding inside the 
executable file
+ ODBC Driver available
+ Windows / Linux cross-platform database engine
+ No royalties
+ Native Delphi database, full source code available
+ Ideal as BDE replacement - does not require any .dll 
and includes data transfer utility.
 
Comment by Ciprian Popa on September 3, 19:15

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

Is this really an 'issue'?  Use SQLite.  Best local 
db system out there.  imo, the only thing blackfish 
was good for was taking up disk space.


Comment by JerseyGuy on September 3, 19:16

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

I really hope Borland drop the idea of trying to make databases. Let them 
focus on what they really can do - Delphi.

Lets hope they stop spilling resources in dying breed projects like X 
Builder, C# Builder, Turbo Prolog (anyone), etc... the list is endless. One 
day out of curiosity I made a list of about 50+ projects 
Borland/Inprise/CodeGear/Embarcadero started and then trashed. If only 
this energy and tallent was spent in the right direction (read Delphi) by 
now we should have already had x64, MacOS support, Mainframe 
support, AppEngine, parallel execution, 10 times bigger RTL.

I hope Borcadero does not start a Delphi database of their own. They 
simply can make DB Express compilable within the executable and write 
good driver for SQLite. Sufficient enough I believe.
Comment by Gad D Lord [http://www.mtgstudio.com] on September 3, 19:32

NexusDB Embedded 

I would like to take this opportunity to mention that
an embedded version (DCU only, no source) of NexusDB
without any artificial restrictions is available free
of charge:

http://www.nexusdb.com/support/index.php?q=FreeEmbedded

It includes full support for both navigational access
through TnxTable and SQL:2003 support through TnxQuery.

Version 3.05 with support for Delphi XE will be
published in the next couple of days (it's already
going out to paying customers, the free version sits
at the end of the queue and will be published once QA
is done on the installers).

Comment by Thorsten Engler [http://www.nexusdb.com/support/index.php?q=FreeEmbedded] on September 4, 03:16

Finally 

The only thing that wonders me is what took them so
long or why they even started Blackfish. About the
only one who uses it are the Embarcadero
newsgroups/forums which exactly aren't a sample of
showcase reliability. 

The obvious *embedded* database replace is SQLite. It
already won on about every other platform (IPhone,
Android, OSX, Symbian, many Windows apps, etc.). It is
supported natively in many languages like Android Java
and PHP.

Delphi should provide SQLite support out of the box,
because that is what outsiders and newbies expect. No
matter how good NexusDB, ElevateDB and Advantage are.
The time for small esoteric Delphi databases is over
and the competition is wider spread, has more embedded
features, is faster, open source and not unimportant
is cheaper (like free).

If you need a real DB server then the picture is
different though. 
Comment by Jan Derk on September 4, 10:27

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

Considered Apple's iOS operating system (iPhone, iPod, iPad) has 
standardized local storage on SQLite (often hidden behind Cocoa Touch 
classes, but SQLite nonetheless), maybe this is the way to go for Delphi 
as well?
Comment by Stefan van As on September 4, 14:12

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

Honestly - I never understood why you like Advantage 
Database Server. I use it at work and it is so 
ondfashion and so unstable ... Lucky we are now changing 
to msSQL

msSQL is also a fine replacement for BlackFish SQL .. 
Comment by on September 4, 16:07

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

Hi Marco,
you are the guru on what is develop in Delphi since 
jears. I wander now when I look back on the earlier 
versions of Delphi, and accepting lot of impovements 
and costs I see that in DB development the 
Professional XE ios not far away fron Delphi 5 
Standard. This is wrong for all developers of small 
applications.
Comment by p_miclea on September 5, 11:52

Two different needs 

IMHO Delphi has two different needs to cover. One is 
the need of an embedded/local database, cheap and 
easy to deploy. And here SQLite is hard to beat. The 
other is the need for a small database for one to few 
clients C/S applications, with a door open to large 
installations. This choice is more difficult, because 
as an application grow needs may be different. Scaled 
down versions of high-end RDBMS could be a sure bet 
(especially since some customers may alredy have 
them), while some small database engines may look a 
more risky choice, especially if what is bundled is a 
too limited version. One of the issue is that the 
more you have to offer, the easier is to build a 
limited version. When the full product is already too 
limited, it is difficult to take away features 
without ending up with a little usable one. That's 
true, for example for Delphi and Interbase too.
Comment by Luigi D. Sandon on September 5, 18:54

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

SQLite for pure embedded (single-user).
Firebird for all other uses.
Both are free, well-supported, etc.
Comment by Maxim [] on September 6, 05:45

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

 It seems to me that Embarcadero is loosing it's 
way.Cuting down the database options from profesional 
edition was and is wrong.MSSQL support and at least 
ado connection should be in the prof version.I use 
SQL Lite, but it's not all shining ..Expand usage of 
profesional version , cut the prices and for love of 
god MAKE HELP FILES and SAMPLES readable again 
Comment by mig640 on September 6, 10:59

ElevateDB 

 I would recommend they lisence ElevateDB, the new
version of dbisam. It suports unicode, sql, views,
triggers, stored procs -- a fantastic piece of native
delphi artwork.
Comment by Jon Lennart Aasenden [http://delphimax.wordpress.com] on September 6, 11:21

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

>mig640

ADO is present in professional version (under dbGo
catagory) - see version matrix
Comment by Radek [http://delphi.cz] on September 6, 15:27

PostgreSQL 

For a server based database engine i would recommanded
this. It is free in any way, no strings attached.
Comment by Ben Collins on September 7, 07:28

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

TurboDB for VCL

I would like to mention TurboDB as a fine
Paradox/Blackfish replacement.
Compared to SQLLite it is written in Delphi, so you
can compile it completely into your application. No
COM, no DLLs, no ADO, no configuration, not registry
entries...
Compared to other local embedded databases mentioned
above it has very fast multi-user access.





Comment by Peter Pohmann (dataweb) [http://www.dataweb.de/en/products/delphi_database.html] on September 7, 12:53

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

+1 on Jon Lennart comments

License DBISAM, Greate piece of work! 
Comment by Mane on September 7, 18:25

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

use DBF.

Or use Firebird Embedded.
Comment by Edmar Frazão on September 8, 23:55

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

Firebird is fantastic, embedded or not
You can use the out the box components or get
freeware's or buy 3rd parties (worth every cent)

Blackfish: Another stupid resources waisted (like .NET
crap) instead of 64 bits/cross compiling. Even
interbase, it is a waste (who really buys it?) they
should re-conciliate with firebird join forces to
incorporate the best of both and make money on the
support or offering better utilities tahn the
open-source world.

But then again this company (or the string of) has
been famous for its "Head in the a.." vision and
marketing.
Comment by Philippe Watel on September 10, 07:49

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

 
When looking at all these databases you should also
look at the Zeoslib database components. These
components work with a range of databases. I found
they worked  exceptionlly well with Mysql and SQLite.
I did find it was a bit slower with MS SQL compared
with MSSQL/ADO compo. Gee maybe the developers of
MSsql know a bit about ADO. or vs versa
From their website the list of database's it supports
MySQL, PostgreSQL, Interbase, Firebird, MS SQL,
Sybase, Oracle and SQLite. 
So in theory it should make switching to a different
database reasonable easy. I have made utilities were
you can open different databases at runtime you just
enter the connection details. Of course that's the
easy bit. It might require a bit more effort with a
larger application.
So it may partially solve the upgrade to a bigger
database requirement option.



Comment by Brian on September 11, 05:48

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

DBISAM from ElevateSoft has worked great for me when 
I require a local database. No BDE, plus a host of 
additional features like a client/server engine (if 
needed), "in memory" tables, and excellent support.
Comment by Gikas Markantonatos [http://customsystem.com] on October 1, 14:43

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

 A native Paradox engine is a good solution. We use 
Paradox Tables over 12 years. It is a performant, 
stable and well tested format. The only problem on 
newer OS like Vista and Windows 7 is the really 
unneeded shared memory in the BDE. I wrote an entry 
in Quality Central. But maybe it is 10 years to late.
Comment by [] on October 26, 06:37

BlackFish SQL Gone in Delphi XE, What About a Replacement? 

I say to you, OBJECTS!

Move to something for easy storage of objects. Most 
everyone is or has moved to using objects. Delphi 
should move into the future and eliminate the "object-
>relational" headache by making storing objects 
seamless.

I can't believe I even have to post this.
Comment by Rich on March 3, 01:38


Post Your Comment

Click here for posting your feedback to this blog.

There are currently 0 pending (unapproved) messages.