nih-gov/www.ncbi.nlm.nih.gov/mailman/pipermail/cpp-announce/2001/000060.html

196 lines
8.6 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE> [C++ Toolkit ANNOUNCE] NCBI database API: the &quot;driver&quot; part is ready
</TITLE>
<LINK REL="Index" HREF="index.html" >
<LINK REL="made" HREF="mailto:cpp-announce%40ncbi.nlm.nih.gov?Subject=%5BC%2B%2B%20Toolkit%20ANNOUNCE%5D%20NCBI%20database%20API%3A%20%20the%20%22driver%22%20part%20is%20ready&In-Reply-To=">
<META NAME="robots" CONTENT="index,nofollow">
<META http-equiv="Content-Type" content="text/html; charset=us-ascii">
<LINK REL="Previous" HREF="000059.html">
<LINK REL="Next" HREF="000061.html">
</HEAD>
<BODY BGCOLOR="#ffffff">
<H1>[C++ Toolkit ANNOUNCE] NCBI database API: the &quot;driver&quot; part is ready</H1>
<!--htdig_noindex-->
<B>Denis Vakatov</B>
<A HREF="mailto:cpp-announce%40ncbi.nlm.nih.gov?Subject=%5BC%2B%2B%20Toolkit%20ANNOUNCE%5D%20NCBI%20database%20API%3A%20%20the%20%22driver%22%20part%20is%20ready&In-Reply-To="
TITLE="[C++ Toolkit ANNOUNCE] NCBI database API: the &quot;driver&quot; part is ready">vakatov at ncbi.nlm.nih.gov
</A><BR>
<I>Fri Nov 16 21:04:55 EST 2001</I>
<P><UL>
<LI>Previous message: <A HREF="000059.html">[C++ Toolkit ANNOUNCE] New features in the on-line C++ Toolkit docs (style &amp; convenience)
</A></li>
<LI>Next message: <A HREF="000061.html">[C++ Toolkit ANNOUNCE] Object loader (serializeable classes generated off ASN.1) changes
</A></li>
<LI> <B>Messages sorted by:</B>
<a href="date.html#60">[ date ]</a>
<a href="thread.html#60">[ thread ]</a>
<a href="subject.html#60">[ subject ]</a>
<a href="author.html#60">[ author ]</a>
</LI>
</UL>
<HR>
<!--/htdig_noindex-->
<!--beginarticle-->
<PRE> &quot;NCBI database API (DBAPI)&quot;
is a new C++ Toolkit project to provide the means to seamlessly
connect to and communicate with various RDBMS
(such as Sybase, MS SQL Server, etc.) using different underlying
client libraries (such as CTLIB, DBLIB, FreeTDS, etc.).
Here is an announcement about the &quot;driver&quot; part of the DBAPI.
------------
The &quot;driver&quot; part of the DBAPI has been written and incorporated
into the C++ Toolkit. Presently, it includes the following
(relatively stable and working) parts:
1) Public API and docs -- for regular users
2) Driver API -- for driver developers (includes a small test API)
3) Implementation of 3 drivers -- for CTLIB, DBLIB and FreeTDS
Note 1. Presently, we have only UNIX based DBAPI drivers implemented,
however the works are underway to implement more drivers, in
particular for MS Windows with MS SQL server and a &quot;bridge&quot;
driver to provide built-in client/server functionality
(by Victor Sapojnikov, see below).
Note 2. The &quot;driver&quot; public API, however portable, is a relatively low-level,
and there is a higher level API (by Michael Kholodov) under
active development right now -- it is expected to be
finished in a matter of weeks.
***** ON-LINE DOCS
<A HREF="http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/libs.html#ref_TableDBAPI_DRIVER">http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/libs.html#ref_TableDBAPI_DRIVER</A>
<A HREF="http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/libs/dbapi_driver.html">http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/libs/dbapi_driver.html</A>
***** PUBLIC INTERFACES
<A HREF="http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/include/dbapi/driver/">http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/include/dbapi/driver/</A>
public.hpp -- Context, connection, command and result classes
types.hpp -- Data types (e.g. CDB_Int, CDB_DateTime, CDB_Text)
exception.hpp -- Exceptions and error handling
***** EXAMPLES
Generic code for all test examples:
<A HREF="http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/src/dbapi/driver/samples/dbapi_driver_samples.cpp">http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/src/dbapi/driver/samples/dbapi_driver_samples.cpp</A>
Driver-specific tests calling the generic code (&quot;dbapi_driver_samples.cpp&quot;)
for implemented (CTLIB, DBLIB and FreTDS) drivers:
<A HREF="http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/src/dbapi/driver/ctlib/samples/">http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/src/dbapi/driver/ctlib/samples/</A>
<A HREF="http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/src/dbapi/driver/dblib/samples/">http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/src/dbapi/driver/dblib/samples/</A>
<A HREF="http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/src/dbapi/driver/ftds/samples/">http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/lxr/source/src/dbapi/driver/ftds/samples/</A>
ctl_lang.cpp
ctl_sp_who.cpp
***** CAVEATS
&quot;DBLIB&quot; driver --
Text/image operations fail when working with MS SQL server,
because MS SQL server sends text/image length in the reverse byte order,
and this cannot be fixed (as it was fixed for FreeTDS) as we do not
have access to the DBLIB source code.
&quot;FreeTDS&quot; driver --
1) BCP operations do not work at all.
2) The &quot;compute results&quot; functionality (like from SELECT ... AVERAGE ...)
does not work as the current FreeTDS implementation cannot decipher
the &quot;compute results&quot; specific result set returned by server.
3) RPC is implemened via a language call, so it will work only if
the OpenServer it's communicating with has language handler installed
(and it's not installed on some NCBI OpenServers).
4) The FreeTDS client library (the one using TDS protocol version 7.0)
presently installed in NCBI at &quot;/netopt/Sybase/clients-mssql/current&quot;
was tweaked to work with the MS SQL server and significantly optimized
(by Eugene Yaschenko). However it will not work with Sybase server.
5) Another, earlier non-tweaked version of FreeTDS client library
theoretically should be able to work with both MS SQL and SYBASE servers
(using TDS protocol version 4.2), however it was not thoroughly tested
and can be pretty slow.
***** CREDITS (major)
Vladimir Soussov --
Principal designer of the &quot;driver&quot; part of the NCBI DB API.
Author of the first working draft of generic API and library,
CTLIB and DBLIB drivers, and test suite.
Author of the FreeTDS driver. Author of the driver docs.
Denis Vakatov --
Put up the original proposal for developing the NCBI DB API, held first
meetings to discuss the overall DBAPI concepts and structure.
Later, performed a major revamp (in collaboration with Vladimir Soussov)
of the generic API and CTLIB driver code, and incorporated them into the
NCBI C++ Toolkit. Added to some of the docs.
Anton Lavrentiev --
Performed a major revamp (in collaboration with Vladimir Soussov) of
DBLIB driver code, reorganized test suite.
***** ON-GOING DEVELOPMENTS and FUTURE PLANS
Victor Sapojnikov --
[in progress] Port DBLIB driver to work under MS Windows with MS SQL server.
[future plan] Design and implement a &quot;bridge&quot; driver
using &quot;NCBI compact protocol&quot; (written by V.Soussov) as
communication protocol.
Vladimir Soussov --
[in progress] Write a (sketchy) documentation/overview on the public
part of the &quot;driver&quot; layer of DB API.
Anton Butanaev --
[future plan] Design and implement the &quot;user&quot; layer of DB API.
Vladimir Soussov, Anton Butanaev --
[future plan] Implement &quot;MySQL&quot; driver.
Michael Kholodov --
[in progress] Design and implement the &quot;mini-driver&quot; layer of DB API.
The working draft already exists.
Revise the &quot;mini-driver&quot; API (w/Denis Vakatov).
</PRE>
<!--endarticle-->
<!--htdig_noindex-->
<HR>
<P><UL>
<!--threads-->
<LI>Previous message: <A HREF="000059.html">[C++ Toolkit ANNOUNCE] New features in the on-line C++ Toolkit docs (style &amp; convenience)
</A></li>
<LI>Next message: <A HREF="000061.html">[C++ Toolkit ANNOUNCE] Object loader (serializeable classes generated off ASN.1) changes
</A></li>
<LI> <B>Messages sorted by:</B>
<a href="date.html#60">[ date ]</a>
<a href="thread.html#60">[ thread ]</a>
<a href="subject.html#60">[ subject ]</a>
<a href="author.html#60">[ author ]</a>
</LI>
</UL>
<hr>
<a href="http://www.ncbi.nlm.nih.gov/mailman/listinfo/cpp-announce">More information about the cpp-announce
mailing list</a><br>
<!--/htdig_noindex-->
</body></html>