Subject | Re: [firebird-python] Differences between drivers |
---|---|
Author | Pavel Cisar |
Post date | 2012-05-25T06:55:28Z |
Mario,
Dne 24.5.2012 19:10, Mario Lacunza napsal(a):
for Python), while FDB is pure Python module using Firebird client
library via ctypes Python module. This has several consequences, namely
KDB doesn't work with Python 3 or other implementations than CPython,
while FDB supports Python 2 and 3, and can potentially run on other
Python implementations with ctypes module.
2. KDB support InterBase and Firebird starting from version 1. FDB
supports only Firebird 2.0 and newer.
3. FDB follows the KDB interface and functionality as close as possible,
except in parts that are specific to implementation method differences
and legacy support. For example FDB uses much simpler system for Dynamic
Type Translation than KDB.
4. Some KDB features are not yet implemented in FDB: event notification
(will be available in next release by the end of May), array support,
stream BLOB support to name a few. But core functionality should
identical or equivalent. Some features are implemented *slightly*
differently in FDB (different API), namely Distributed Transactions.
5. FDB implements some features that KDB doesn't, because they're of
recent date, like support for Trace Service, nbackup service etc.
and is still better choice if you want "stable" driver as FDB is still
in development and you may to run into bugs or rough edges (but we fix
issues promptly, so it could be a non-issue or event better option as
more users will help us to iron out the driver into "stable" one more
quickly).
FDB is necessary when you want to use Python 3 or some new features of
Firebird 2.5, and it could be also easier (at least that's the
intention) to work with it.
"stable" than FDB, but from long term POV, FDB is definitely the right
choice. It's also possible to start with KDB and replace it later with
FDB, as differences between them are really very small and
well-isolated. For example, Firebird's QA tool-chain built in Python
using KDB was converted to use FDB by changing 3 lines of code and
everything worked out of the box. Of course, we had to adjust
dependencies to driver exception format stored in test data - which is
different in both drivers (same "semantics", but different "syntax", so
to speak), but changes in test engine itself was really just 3 lines.
started as replacement here:
http://web.firebirdsql.org/index.php?op=devel&sub=python
best regards
Pavel Cisar
IBPhoenix
Dne 24.5.2012 19:10, Mario Lacunza napsal(a):
>1. KDB is implemented using mix of C/C++ and Python (extension library
> I want to know whats the differences between KI and FDB ??
for Python), while FDB is pure Python module using Firebird client
library via ctypes Python module. This has several consequences, namely
KDB doesn't work with Python 3 or other implementations than CPython,
while FDB supports Python 2 and 3, and can potentially run on other
Python implementations with ctypes module.
2. KDB support InterBase and Firebird starting from version 1. FDB
supports only Firebird 2.0 and newer.
3. FDB follows the KDB interface and functionality as close as possible,
except in parts that are specific to implementation method differences
and legacy support. For example FDB uses much simpler system for Dynamic
Type Translation than KDB.
4. Some KDB features are not yet implemented in FDB: event notification
(will be available in next release by the end of May), array support,
stream BLOB support to name a few. But core functionality should
identical or equivalent. Some features are implemented *slightly*
differently in FDB (different API), namely Distributed Transactions.
5. FDB implements some features that KDB doesn't, because they're of
recent date, like support for Trace Service, nbackup service etc.
> for what is better each one??KDB is necessary when you want to work with InterBase or Firebird 1.x,
and is still better choice if you want "stable" driver as FDB is still
in development and you may to run into bugs or rough edges (but we fix
issues promptly, so it could be a non-issue or event better option as
more users will help us to iron out the driver into "stable" one more
quickly).
FDB is necessary when you want to use Python 3 or some new features of
Firebird 2.5, and it could be also easier (at least that's the
intention) to work with it.
> which one is better to use in new projects?Depends on your criteria for immediate stability. Right now, KDB is more
"stable" than FDB, but from long term POV, FDB is definitely the right
choice. It's also possible to start with KDB and replace it later with
FDB, as differences between them are really very small and
well-isolated. For example, Firebird's QA tool-chain built in Python
using KDB was converted to use FDB by changing 3 lines of code and
everything worked out of the box. Of course, we had to adjust
dependencies to driver exception format stored in test data - which is
different in both drivers (same "semantics", but different "syntax", so
to speak), but changes in test engine itself was really just 3 lines.
> The dev of KI was stopped for Firebird?Yes. You can learn all details why it was stopped and why FDB was
started as replacement here:
http://web.firebirdsql.org/index.php?op=devel&sub=python
> I use FB a lot many years ago but for job reasons I dont use it in overIn such environment you can freely choice between both drivers.
> 3 years, I plan to use it with Python to development desktop app single
> and network environment. Im using Python 2.7 over Ubuntu 12.04 64 bits.
best regards
Pavel Cisar
IBPhoenix