Seinfeld fans are probably wondering why I misspelled "yadda yadda yadda" in the title of this piece. In fact, I thought I would, but I didn't. It turns out that "yadda yadda yadda" can also be spelled "yada yada yada," that it wasn't invented by the writers of Seinfeld, and that it in fact goes back at least 40 years to Lenny Bruce, if not longer.
At any rate, I'm using YADA to stand for "Yet Another Database API." If you've been following data APIs, you probably know about a slew of them. To list the ones I can think of off the top of my head:
ODBC, Open Database Connectivity, is a language-, database-, and OS-independent database API that ships with all current versions of Windows, and is also available for the Macintosh and a variety of Unix platforms.
JDBC, Java Database Connectivity, is a cross-database, cross-OS connectivity API for Java that ships with J2SE and J2EE.
DAO, Data Access Objects, provides a framework for using code to create and manipulate databases. DAO supplies a hierarchical set of objects that use the Microsoft Jet (i.e., Access) database engine to access data and database structure in Microsoft Jet (.MDB) databases, ODBC data sources, using an ODBC driver, and installable ISAM databases, such as dBASE and Paradox, which the database engine can read directly. DAO has been retired in favor of ADO, OLE DB or ODBC.
RDO, Remote Data Objects, was originally designed to act as a thin layer on top the ODBC API, for productivity in coding client/server applications; it was an alternative to DAO that avoided using the Jet engine, and worked especially well with SQL databases. Later, the capabilities of RDO were extended. RDO was more or less retired in favor of ADO.
RDS, Remote Data Services, is a proprietary Microsoft mechanism for accessing remote data across the Internet or intranet. It has been formally retired in favor of ADO or SOAP.
OLE DB is a set of COM-based interfaces that expose data from a variety of sources.
Finding Runtime Concurrency Errors in Multithreaded Java Applications Join Coverity on June 3 at 2:00 PM ET / 11:00 AM PT for a web seminar "Finding Runtime Concurrency Errors in Multi-threaded Applications." In this session Thomas Schultz of Coverity's Advanced Technology Group will offer a presentation and demonstration of Coverity Thread Analyzer for Java, a new dynamic analysis solution for multithreaded Java applications that automatically and predictably detects existing and potential race conditions and deadlocks that can cause deadly application behavior. Register today and find out how to:
<ul><li> Automatically and rapidly detect serious concurrency errors</li>
<li> Avoid data corruption and application failures
<li> Sharply reduce the problem of testing billions of unpredictable thread interleavings </li>
<li>Reduce risk of migration to multicore systems</li>
<li>Combine dynamic and static analysis to improve overall code quality</li></ul>
Solving the Multicore Programming Problem Processor raw speed gains are hitting a brick wall of power consumption. The voracious appetite for performance now must be sated through the use of multiple CPUs. The problem: multicores are hard to program. Chuck Moore of AMD said "To make effective use of multicore hardware today, you need a PhD in computer science." Learn how Gedae expands the pool of multicore developers while offering unrivaled performance and productivity. Event Date: Wednesday, June 11, 2008.
In this volume of Best of BYTE, we explore the emergence of some heuristic algorithms. Although we have only scratched the surface of this intriguing subject, we hope we've suggested the potential of the synthesis of heuristics and algorithms.