<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Coffee|Code : Dan Scott, Caffeinated Librarian Geek - Databases</title>
    <link>http://coffeecode.net/</link>
    <description>Many ideas crammed into bits...</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.3.1 - http://www.s9y.org/</generator>
    <pubDate>Fri, 02 May 2008 01:39:17 GMT</pubDate>

    <image>
        <url>http://coffeecode.net/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Coffee|Code : Dan Scott, Caffeinated Librarian Geek - Databases - Many ideas crammed into bits...</title>
        <link>http://coffeecode.net/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Tuning PostgreSQL for Evergreen on a test server</title>
    <link>http://coffeecode.net/archives/156-Tuning-PostgreSQL-for-Evergreen-on-a-test-server.html</link>
            <category>Evergreen</category>
            <category>PostgreSQL</category>
    
    <comments>http://coffeecode.net/archives/156-Tuning-PostgreSQL-for-Evergreen-on-a-test-server.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=156</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=156</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;&lt;strong&gt;Update 2008-05-01&lt;/strong&gt;: Fixed a typo for sysctl: -a parameter simply shows all settings; -w parameter is needed to write the setting. Duh.&lt;/p&gt;
&lt;p&gt;
Once you have decided on and acquired your &lt;a href=&quot;http://www.coffeecode.net/archives/155-Test-server-strategies.html&quot;&gt;test hardware for Evergreen&lt;/a&gt;, you need to think about tuning your PostgreSQL database server. Once you start loading bibliographic records, you might notice that after 100,000 records or so that your search response times aren&#039;t too snappy. Don&#039;t snarl at Evergreen. By default, PostgreSQL ships with very conservative settings (something like machines with 256 MB of RAM!) so if you don&#039;t tune those settings you&#039;re getting a false representation of your system&#039;s capabilities.
&lt;/p&gt;
&lt;p&gt;
The &quot;right&quot; settings for PostgreSQL depend significantly on your hardware and deployment context, but in almost any circumstance you will want to bump up the settings from the delivered defaults. To give you an idea of what you need to consider, I thought I would share the settings that we&#039;re currently using on our Evergreen test server at Laurentian University. You might be able to use these as a starting point and adjust them accordingly once you&#039;ve run some representative load tests against your configuration. And it&#039;s useful documentation for me to fall back on in a few months, when all of this has escaped my grasp &lt;img src=&quot;http://coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;
&lt;/p&gt;
&lt;h4&gt;The defaults (as shipped in Debian Etch)&lt;/h4&gt;
&lt;p&gt;The defaults in Debian Etch are quite conservative. Consider that our test server has 12GB of RAM. The default only allocates 1MB of RAM to work memory (which is critical for sorting performance) and only 8MB of RAM to shared buffers. Following are the defaults set in /etc/postgresql/8.1/main/postgresql.conf:&lt;/p&gt;
&lt;pre&gt;
# - Memory -

#shared_buffers = 1000                  # min 16 or max_connections*2, 8KB each
#temp_buffers = 1000                    # min 100, 8KB each
#max_prepared_transactions = 5          # can be 0 or more
# note: increasing max_prepared_transactions costs ~600 bytes of shared memory
# per transaction slot, plus lock space (see max_locks_per_transaction).
#work_mem = 1024                        # min 64, size in KB
#maintenance_work_mem = 16384           # min 1024, size in KB
#max_stack_depth = 2048                 # min 100, size in KB

# - Free Space Map -

#max_fsm_pages = 20000                  # min max_fsm_relations*16, 6 bytes each
#max_fsm_relations = 1000               # min 100, ~70 bytes each
&lt;/pre&gt;
&lt;h4&gt;Our test server settings&lt;/h4&gt;
&lt;p&gt;Our test server has 12 GB of RAM. Assuming that the PostgreSQL defaults were set for a system with 1 GB of RAM, we should be able to multiply the memory-based settings by at least a factor of 12. We&#039;re a little bit more aggressive than that in our settings. Note, however, that this is a single-server install of Evergreen, so we&#039;re also running memcached, ejabberd, Apache, and all of the Evergreen services as well as the database - oh, and a test instance of an institutional repository, among other apps - so we&#039;re not nearly as aggressive as we would be in a dedicated PostgreSQL server configuration. Please note that I&#039;m making no claims that this is the optimal set of configuration values for PostgreSQL even on our own hardware!&lt;/p&gt;
&lt;pre&gt;
# shared_buffers: much of our performance depends on sorting, so we&#039;ll set it 100X the default
# some tuning guides suggest cranking this up to as much 30% of your available RAM
shared_buffers = 100000 # 8K * 100000 = ~ 0.8 GB

# work_mem: how much RAM each concurrent process is allowed to claim before swapping to disk
# your workload will probably have a large number of concurrent processes
work_mem=524288 # 512 MB

# max_fsm_pages: increased because PostgreSQL demanded it
max_fsm_pages = 200000
&lt;/pre&gt;
&lt;p&gt;After you change these settings, you will need to restart PostgreSQL to make the settings take effect.&lt;/p&gt;
&lt;h4&gt;Kernel tuning&lt;/h4&gt;
&lt;p&gt;In addition to PostgreSQL complaining about max_fsm_pages not being high enough, your operating system kernel defaults for SysV shared memory might not be high enough to support the amount of RAM PostgreSQL demands as a result of your modifications. In one of our test configurations, we had cranked up work_mem to 8GB; Debian complained about an insufficient SHMMAX setting, so we were able to adjust that by running the following command as root to set the kernel SHMMAX to 8GB (8*1024^2):&lt;/p&gt;
&lt;pre&gt;
sysctl -w kernel.shmmax=8589934592
&lt;/pre&gt;
&lt;p&gt;To make this setting sticky through reboots, you can simply modify /etc/sysctl.conf to include the following line:&lt;/p&gt;
&lt;pre&gt;
# Set SHMMAX to 8GB for PostgreSQL
#kernel.shmmax=8589934592
&lt;/pre&gt;
&lt;h4&gt;Other measures&lt;/h4&gt;
&lt;p&gt;
Debian Etch comes with PostgreSQL 8.1. The first version of PostgreSQL 8.1 was released in November 2005. That&#039;s a long time in computer years. Version 8.2, which was released less than a year later, &quot;adds many functionality and performance improvements&quot; (according to the &lt;a href=&quot;http://www.postgresql.org/docs/8.2/static/release-8-2.html&quot;&gt;release notes&lt;/a&gt;). If you&#039;re not getting the performance you expect from your hardware with Debian Etch, perhaps a &lt;a href=&quot; http://packages.debian.org/etch-backports/postgresql-8.2&quot;&gt;backport of PostgreSQL 8.2&lt;/a&gt; would help out.
&lt;/p&gt;
&lt;h4&gt;Further resources&lt;/h4&gt;
&lt;p&gt;This is just a shallow dip into PostgreSQL tuning for Evergreen - hopefully enough to alert you to some of the factors you need to consider if you&#039;re putting Evergreen into a serious testing environment or production environment. Here are a few places to dig deeper into the art of PostgreSQL tuning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PostgreSQL manual, resource consumption section of server configuration: &lt;a href=&quot;http://www.postgresql.org/docs/8.1/static/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-MEMORY&quot;&gt;version 8.1&lt;/a&gt; and &lt;a href=&quot;http://www.postgresql.org/docs/8.2/static/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-MEMORY&quot;&gt;version 8.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;An annotated version of the 8.0 parameters with more explicit advice is available at &lt;a href=&quot;http://www.powerpostgresql.com/Downloads/annotated_conf_80.html&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Some good advice is buried about halfway down &lt;a href=&quot;http://cbbrowne.com/info/postgresql.html&quot;&gt;Christopher Browne&#039;s page&lt;/a&gt; under the heading &quot;Tuning PostgreSQL&quot;, along with links to further resources&lt;/li&gt;
&lt;li&gt;The &quot;Performance Whack-A-Mole&quot; presentation at  &lt;a href=&quot;http://www.powerpostgresql.com/Docs&quot;&gt;PowerPostgreSQL&lt;/a&gt; is a great tutorial for holistic system tuning&lt;/li&gt;
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Mon, 14 Apr 2008 14:48:19 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/156-guid.html</guid>
    
</item>
<item>
    <title>The Linux Documentation Project, DB2, XML, and nostalgia</title>
    <link>http://coffeecode.net/archives/139-The-Linux-Documentation-Project,-DB2,-XML,-and-nostalgia.html</link>
            <category>DB2</category>
    
    <comments>http://coffeecode.net/archives/139-The-Linux-Documentation-Project,-DB2,-XML,-and-nostalgia.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=139</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=139</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;I took a walk down memory lane this evening. I thought I might as well bore you with the details.&lt;/p&gt;
&lt;p&gt;One of my first forays into the open source world was to participate in the &lt;a href=&quot;http://tldp.org&quot;&gt;Linux Documentation Project&lt;/a&gt; (TLDP). At the time (circa 1999), I was working for IBM as a technical writer for &lt;a href=&quot;http://ibm.com/db2&quot;&gt;DB2 database&lt;/a&gt;. IBM was releasing DB2 on the Linux platform, I was part of the pre-release testing team, and I had turned to TLDP to provide me with an introduction to the world of Linux as a total n00b. It was a godsend of information.&lt;/p&gt;
&lt;p&gt;When DB2 was officially released on the Linux platform, it only officially supported a handful of distributions. Given the normal technical writing and release cycle, the officially supported versions of the distributions were woefully out of date in the official documentation. That, and much of the required installation and configuration information was either missing, or wrong. Don&#039;t lay any blame on the people involved; that was just the way that the release process (including translation into umpteen languages that were all available on release day) forced the end product to be. My focus was on application development, but I had to get test environments set up so I could ensure what I was writing actually worked (that&#039;s the way I roll as a tech writer). Of course, I chose an unsupported-by-DB2 but much more current distribution (Mandrake Linux 5.3 &quot;Venus&quot; I believe) simply because it would install on my hardware, when Red Hat 5.2 would not.&lt;/p&gt;
&lt;p&gt;It struck me that my install experiences would help other DB2 users as well. I realized it would also give IBM a way around the barrier imposed by the restriction that the official documentation for a given release was published once per release - no updates. By contributing a DB2 HOWTO to TLDP, I would not only be able to provide documentation on the distributions that people were actually using, I would also be able to update the HOWTO as circumstances warranted. My manager supported the project, and helped me stickhandle some obstacles. The result, I believe, was beneficial all around; I contributed some code to TLDP to help improve the PDF output and helped mentor some TLDP n00bs; DB2 got some usable documentation when it really needed it; and I had the opportunity to learn a technical writing DTD that made sense (&lt;a href=&quot;http://docbook.org/&quot;&gt;DocBook&lt;/a&gt;) and play with an impressive open-source publishing toolchain.&lt;/p&gt;
&lt;p&gt;Over time, my friend and co-worker Ian Hakes picked up the ball and drove the next iteration of the DB2 HOWTO with my help. It has been over a year and a half since I left IBM, so I haven&#039;t paid any attention to the DB2 HOWTO. Recently, however, as I was playing around with an updated version of the DocBook toolchain, I discovered that Ian has released a brand new version of the &lt;a href=&quot;http://tldp.org/HOWTO/DB2-HOWTO/index.html&quot;&gt;DB2 HOWTO&lt;/a&gt; to cover installation of DB2 Express-C on various distributions. He included a touching tip of the hat to me, as well. What a swell guy!&lt;/p&gt;
&lt;p&gt;On one hand, I&#039;m not sure that TLDP has nearly as much of a mandate as it did eight years ago. There are scads of books, a handful of good magazines, blogs, wikis, and web sites all publishing information about Linux these days. On the other hand, there&#039;s something to be said for a corpus of documentation maintained and edited by volunteers who just want to get information into the hands of people who need help -- without compensation, without publicity, and generally without thanks.&lt;/p&gt;
&lt;p&gt;So, given how much TLDP has helped me - thank you, &lt;a href=&quot;http://tldp.org/vlist.html&quot;&gt;TLDP volunteers&lt;/a&gt;. And thank you, Norm Walsh and the entire DocBook community, for providing an open-source publishing toolchain that starts with semantic XML and results in professional-looking documentation.&lt;/p&gt;
&lt;p&gt;P.S. I made another commit to the DB2 HOWTO tonight - just balancing out an XML element that was missing to return the document to valid XML state. And let me tell you, it felt good!&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 16 Sep 2007 20:34:25 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/139-guid.html</guid>
    
</item>
<item>
    <title>Java 6 is out; now including JavaDB (aka Apache Derby)</title>
    <link>http://coffeecode.net/archives/107-Java-6-is-out;-now-including-JavaDB-aka-Apache-Derby.html</link>
            <category>Apache Derby</category>
    
    <comments>http://coffeecode.net/archives/107-Java-6-is-out;-now-including-JavaDB-aka-Apache-Derby.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=107</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=107</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;A quick little note to mention the &lt;a href=&quot;http://java.sun.com/javase/6/&quot;&gt;official release of Java 6&lt;/a&gt;. &lt;em&gt;Okay, Dan, but why do you care?&lt;/em&gt;, you might ask. Good question, oh person-who-does-not-read-headlines.&lt;/p&gt;
&lt;p&gt;The reason I care is that Sun chose to bundle &lt;a href=&quot;http://db.apache.org/derby&quot;&gt;Apache Derby&lt;/a&gt; in this release -- take a peek in the &lt;tt&gt;/db/&lt;/tt&gt; subdirectory of the Java SDK. Bundling Derby is going to mean a huge boost to the visibility and usage of the little Java database that could. It will be the &lt;em&gt;de facto&lt;/em&gt; default database for Java developers; and if they haven&#039;t already used it, I suspect they&#039;re going to be pleasantly surprised at Derby&#039;s robustness and ability to perform. I was chatting with a few of the DSpace developers a week or so ago, and mentioned my hope (in all my spare time) to port the &lt;a href=&quot;http://dspace.org&quot;&gt;DSpace&lt;/a&gt; institutional repository to Derby as a possible default database. Right now, you see, the default database for DSpace is PostgreSQL, and unfortunately correctly configuring PostgreSQL seems to be the biggest barrier new users encounter while deploying DSpace. Switch to an embedded Derby database, and those headaches go away.&lt;/p&gt;
&lt;p&gt;On the other hand, it seems that at least one of the DSpace developers have done a bit of experimenting with Derby in the past, as he claimed its performance suffered after 500,000 rows of data or so. Well, even if that is an insurmountable limit, that&#039;s a pretty good start for most institutional repositories -- and I suspect that the Derby developers would be highly motivated to show that Derby can, in fact, scale beyond that limit.&lt;/p&gt;
&lt;p&gt;So, if you&#039;re a Java developer or dabbler, get on out there and give Derby + Java 6 a try. You&#039;re going to have a lot of company. Oh yeah, and if you need a good book on Derby...&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 11 Dec 2006 23:50:36 -0500</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/107-guid.html</guid>
    
</item>
<item>
    <title>Neat-o: ArchimÃ¨de uses Apache Derby</title>
    <link>http://coffeecode.net/archives/102-Neat-o-Archimde-uses-Apache-Derby.html</link>
            <category>Apache Derby</category>
            <category>Coding</category>
    
    <comments>http://coffeecode.net/archives/102-Neat-o-Archimde-uses-Apache-Derby.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=102</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=102</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;A while back I &lt;a href=&quot;http://sourceforge.net/mailarchive/message.php?msg_id=37113278&quot;&gt;mentioned on the DSpace-devel mailing list&lt;/a&gt; that I was interested in adapting DSpace to use embedded Apache Derby as the default database, rather than PostgreSQL, as a means of lowering the installation and configuration barriers involved with setting up access to an external database. I haven&#039;t had time yet to actually carry out my musing, but today I had the chance to set up the &lt;a href=&quot;http://sourceforge.net/projects/archimede&quot;&gt;ArchimÃ¨de&lt;/a&gt; institutional repository on a test server -- and imagine my surprise when I saw a derby.log file sitting in the ArchimÃ¨de repository. It looks like someone else at UniversitÃ© Laval had the same idea as me much further back.&lt;/p&gt;
&lt;p&gt;It&#039;s still on my horizon to adapt DSpace to Derby; seeing that it works well for ArchimÃ¨de confirms my belief that it&#039;s the right direction to go.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 14 Nov 2006 14:04:58 -0500</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/102-guid.html</guid>
    
</item>
<item>
    <title>In-depth _and_ official DB2 and PHP documentation</title>
    <link>http://coffeecode.net/archives/68-In-depth-_and_-official-DB2-and-PHP-documentation.html</link>
            <category>DB2</category>
            <category>PHP</category>
    
    <comments>http://coffeecode.net/archives/68-In-depth-_and_-official-DB2-and-PHP-documentation.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=68</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=68</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;
I should have mentioned this before, but now that I noticed Chris Jones&#039; post on the &lt;a href=&quot;http://blogs.oracle.com/opal/2006/06/12#a39&quot;&gt;Underground PHP and Oracle Manual&lt;/a&gt;, I felt obliged to point out that one of the final fruits of my labours at IBM is now visible in the DB2 &quot;Viper&quot; Information Center -- a &lt;a href=&quot;http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.apdv.php.doc/doc/c0021523.htm&quot;&gt;set of task-oriented documentation&lt;/a&gt; that describes how to do all of the things that you really need to do with DB2 and PHP, using either the &lt;a href=&quot;http://php.net/ibm_db2&quot;&gt;ibm_db2&lt;/a&gt; or &lt;a href=&quot;http://php.net/pdo_odbc&quot;&gt;PDO_ODBC&lt;/a&gt; modules.
&lt;/p&gt;
&lt;p&gt;
By &quot;task-oriented&quot; I mean that, instead of documenting a set of objects and methods, the docs take the perspective of a developer and describe how to accomplish specific tasks (like &quot;Connecting to a DB2 database from PDO&quot; or &quot;Calling a stored procedure&quot; or &quot;Retrieving multiple result sets&quot;). I hope it works as both a good introduction to PHP development for DB2 users, and a good introduction to DB2 for PHP developers. And, of course, the same approach will work for Apache Derby databases as well.
&lt;/p&gt;
&lt;p&gt;
I find it interesting that Oracle has positioned their PHP documentation as &quot;underground&quot;, while IBM has chosen to incorporate their PHP documentation into their official set of DB2 documentation. Oracle gets the points for coolness, but IBM&#039;s approach will make the pointy-headed types a bit more comfortable.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ok, one qualification: this is the DB2 Viper beta 1 documentation, so calling it &quot;official&quot; is a tad premature... but you get my drift. An example of the beta-ness of these docs is the table of contents entry for &lt;strong&gt;Executing XQuery expressions&lt;/strong&gt; that remains tantalizingly empty... hmm, might it have anything to do with &lt;a href=&quot;http://cvs.php.net/viewcvs.cgi/pecl/ibm_db2/ibm_db2.c?r1=1.48&amp;amp;r2=1.49&quot;&gt;this CVS commit&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;Second qualification: I can&#039;t take full credit for the PHP docs in the DB2 manual, because they weren&#039;t frozen by the time I left IBM. And the DB2-related reference documentation from php.net has been incorporated into the DB2 manual, which represents the efforts of php.net doc writers as well. But I&#039;ll certainly take credit for any errors &lt;img src=&quot;http://coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Corrected bad XHTML (unescaped ampersand in URL). Bad Dan. And corrupted an intermediate version with garbage from another posting. Even worse.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 13 Jun 2006 08:40:06 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/68-guid.html</guid>
    
</item>
<item>
    <title>ADOdb: getting good support for IBM DB2, Cloudscape, and Apache Derby</title>
    <link>http://coffeecode.net/archives/37-ADOdb-getting-good-support-for-IBM-DB2,-Cloudscape,-and-Apache-Derby.html</link>
            <category>DB2</category>
            <category>PHP</category>
    
    <comments>http://coffeecode.net/archives/37-ADOdb-getting-good-support-for-IBM-DB2,-Cloudscape,-and-Apache-Derby.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=37</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=37</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;
The stable release of the &lt;a href=&quot;http://php.net/ibm_db2&quot;&gt;ibm_db2&lt;/a&gt; PECL extension for IBM DB2, Cloudscape, and Apache Derby brought a high performing, highly functional database connectivity alternative to Unified ODBC for PHP 4 and 5 users. However, in and of itself a database extension does not enable you to use the many PHP applications that you might want to use. You either have to add a specific driver for each application that implements its own portability layer (such as &lt;a href=&quot;http://phpmyfaq.de&quot;&gt;phpMyFAQ&lt;/a&gt;), or if the application relies on one of the standard database abstraction layers (&lt;a href=&quot;http://pear.php.net/package/DB&quot;&gt;PEAR DB&lt;/a&gt;, &lt;a href=&quot;http://pear.php.net/package/MDB2&quot;&gt;MDB2&lt;/a&gt;, or &lt;a href=&quot;http://adodb.sourceforge.net/&quot;&gt;ADOdb&lt;/a&gt;), then a driver needs to be added to the corresponding database abstraction layer.
&lt;/p&gt;
&lt;p&gt;
To date, the standard database abstraction layers have offered support for DB2 only through the Unified ODBC extension (and despite substantial overlap in names, MDB2 does not offer support for DB2 at all). Due to some limitations of the Unified ODBC extension, access to DB2 would seem slow and buggy -- and access to Apache Derby or Cloudscape would be frought with minefields, as Unified ODBC does not provide a way of differentiating between the databases to which you are connected and their corresponding features. The ibm_db2 extension offers the &lt;a href=&quot;http://php.net/db2-server-info&quot;&gt;db2_server_info()&lt;/a&gt; function which can tell you whether you are connected to DB2 on Linux, DB2 on a zSeries machine, or an Apache Derby database, and let your application or database abstraction layer perform the appropriate workarounds.
&lt;/p&gt;
&lt;p&gt;
Now, however, as part of Larry Menard&#039;s efforts to enable &lt;a href=&quot;http://gallery.menalto.com&quot;&gt;Gallery 2&lt;/a&gt;, an &lt;a href=&quot;http://phplens.com/lens/lensforum/msgs.php?id=14602&quot;&gt;ADOdb driver built on top of the ibm_db2 extension&lt;/a&gt; will, in all probability, be made available as part of a future ADOdb release. Undoubtedly there will be further testing to do, and tweaks and performance optimizations in the future code--for example, differentiating between the capabilities of Apache Derby and DB2--but this is a huge first step! Thanks to Larry and the Gallery 2 team for making this contribution.
&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Fri, 10 Feb 2006 09:36:57 -0500</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/37-guid.html</guid>
    
</item>
<item>
    <title>(Un)common but potentially mind-twisting DB2 issues</title>
    <link>http://coffeecode.net/archives/33-Uncommon-but-potentially-mind-twisting-DB2-issues.html</link>
            <category>DB2</category>
    
    <comments>http://coffeecode.net/archives/33-Uncommon-but-potentially-mind-twisting-DB2-issues.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=33</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=33</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;
It is perhaps a sad reflection on my life that I&#039;m using a personal blog to offer technical information about a product that I work on, rather than telling you about what I ate last night (spinach and goat cheese salad with a raspberry vinaigrette dressing, quinoa, and a rather tomatoey coq au vin), how the weather is (freezing rain and snow last night), or the last time we got together with friends (Peter and Deb came over last night for a lovely visit over wine and dinner).
&lt;/p&gt;
&lt;p&gt;
Instead, here are a few gotchas for DB2 on Linux that might otherwise take you a few hours to figure out.
&lt;/p&gt;
&lt;h4 class=&quot;entrytitle&quot;&gt;Shiny new DB2 for Linux (2.6 kernel) requires compat RPMs?&lt;/h4&gt;
&lt;p&gt;
DB2 for Linux Version 8.2 (aka Version 8.1 FixPak 7) has been &lt;a href=&quot;http://ibm.com/db2/linux/validate&quot;&gt;validated&lt;/a&gt; on distributions running both 2.4 and 2.6 Linux kernels. However, starting with FixPak 9 (aka Version 8.2.2, which has replaced Version 8.2 if you order a brand new copy of DB2 with physical media today), you have to choose a 2.4 or 2.6 kernel-specific version of DB2 on the x86 and x86-64 architectures.
&lt;/p&gt;
&lt;p&gt;If you&#039;re unlucky, you might find that once you install this newer version of DB2 meant for a shiny new distribution running a 2.6 Linux kernel, DB2 suddenly stops running and complains that it can&#039;t find the libstdc++.so.5 library. The reason is because the new versions of DB2 are built for compatibility with the first enterprise Linux distribution that offered the 2.6 kernel -- SLES 9 -- and guess what level of libstdc++ SLES 9 comes with? Yeah, you guessed right. And the reason the older versions of DB2 don&#039;t need libstdc++ is because they shipped with their own copy of the Intel C++ libraries.
&lt;/p&gt;
&lt;p&gt;
Fun stuff eh? The moral of the story is: install your compat-libstdc++ libraries (or whatever they&#039;re called), and you won&#039;t get hurt when you upgrade DB2.
&lt;/p&gt;
&lt;h4 class=&quot;entrytitle&quot;&gt;DB2 for Linux on POWER aka PPC64 aka pSeries: searching for libibmc++&lt;/h4&gt;
&lt;p&gt;Here&#039;s another missing library problem for which Google turned up no help... After installing DB2 for Linux on POWER, the user tried to run any DB2 command and received the following error message:&lt;/p&gt;
&lt;pre&gt;db2: error while loading shared libraries: libibmc++.so.1: 
  cannot open shared object file: No such file or directory&lt;/pre&gt;
&lt;p&gt;
The problem occurs because DB2 for Linux on POWER is compiled against the IBM XL C++ libraries. This means that you have to install the IBM XL C/C++ Advanced Edition V7.0 for Linux Runtime Environment as described in a &lt;a href=&quot;http://www-1.ibm.com/support/docview.wss?uid=swg24007906&quot;&gt;DB2 technote&lt;/a&gt;.
&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 18 Jan 2006 09:03:14 -0500</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/33-guid.html</guid>
    
</item>
<item>
    <title>DB2 validated for use on Ubuntu</title>
    <link>http://coffeecode.net/archives/27-DB2-validated-for-use-on-Ubuntu.html</link>
            <category>DB2</category>
    
    <comments>http://coffeecode.net/archives/27-DB2-validated-for-use-on-Ubuntu.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=27</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=27</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    Good news for all you DB2 for Linux people who love Ubuntu -- IBM just &lt;a href=&quot;http://ibm.com/db2/linux/validate&quot;&gt;validated&lt;/a&gt; Ubuntu as a Linux distribution on which IBM is willing to offer its enterprise level support. You can see that Ubuntu was excited in their &lt;a href=&quot;http://www.ubuntu.com/include/UbuntuReadyForDB2.pdf&quot;&gt;press release&lt;/a&gt; about the accomplishment. And rightully so: no other database server has announced production-level support for Ubuntu. Cool.
&lt;p&gt;
I&#039;ve issued some updates to the &lt;a href=&quot;http://tldp.org/HOWTO/DB2-HOWTO/index.html&quot;&gt;DB2 for Linux HOWTO&lt;/a&gt; that will hopefully be published soon; I had based the original Ubuntu install instructions on my Gentoo experiences and there were a few embarassing references to that that I hadn&#039;t cleaned up (and which were painfully evident now that I&#039;m running Ubuntu 5.10 &quot;Breezy Badger&quot; on the dual-boot side of my laptop).
&lt;/p&gt;&lt;p&gt;
In a future update to the HOWTO, I plan to offer a little more fine-grained installation advice; the current instructions install everything under the sun, including support for 29 different languages, warehouse agents, and assorted other features that probably aren&#039;t required for most developers or users. But at least you can get up and running relatively easily &lt;img src=&quot;http://coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;
&lt;/p&gt;&lt;p&gt;
So if you want to try Ubuntu, go to &lt;a href=&quot;http://ubuntulinux.org&quot;&gt;http://ubuntulinux.org&lt;/a&gt;. It has replaced SuSE Workstation 9.2 on my laptop -- and I&#039;m even using Gnome again, which I had given up on a few years ago.
&lt;/p&gt;&lt;p&gt;
If you want to try DB2, you can download a &lt;a href=&quot;http://www14.software.ibm.com/webapp/download/search.jsp?go=y&amp;amp;rs=dm-db2express&quot;&gt;90-day trial&lt;/a&gt; of DB2 Express.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 08 Nov 2005 21:17:21 -0500</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/27-guid.html</guid>
    
</item>
<item>
    <title>Apache Derby: Off to the Races in the (paper) flesh!</title>
    <link>http://coffeecode.net/archives/26-Apache-Derby-Off-to-the-Races-in-the-paper-flesh!.html</link>
            <category>Apache Derby</category>
    
    <comments>http://coffeecode.net/archives/26-Apache-Derby-Off-to-the-Races-in-the-paper-flesh!.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=26</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=26</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    Just got back from a gruelling Paris - Amsterdam - Berlin - Paris - Toronto series of flights (don&#039;t ask) to wrap up my European October getaway and found this sitting on my doorstep.
&lt;p&gt;
&lt;img src=&quot;uploads/pics/apachederby-bookcover.gif&quot; alt=&quot;Apache Derby: Off to the Races book cover&quot; /&gt;
&lt;/p&gt;&lt;p&gt;
 Yes, sirs and madams, it is the official hard-bound 500+ page book known as &lt;i&gt;Apache Derby: Off to the Races&lt;/i&gt; -- the book that gives you everything you need to know to develop applications with this scrupulously standards-compliant little database (and even do a little administration of this normally zero-administration beastie).
&lt;/p&gt;&lt;p&gt;
As you &lt;a href=&quot;http://www.coffeecode.net/archives/7-Im-an-author!-Apache-Derby-Off-to-the-Races.html&quot;&gt;may already know&lt;/a&gt;, I wrote a good chunk of this book: chapters on PHP, Perl, Python, ODBC network communication, maintenance, and tuning. It was written during a time that was pretty gruelling for me, personally and professionally, and at times it felt like it would never end -- but now that I can hold the thing in my hands, it seems worthwhile. (I hope Lynn thinks so as well!) And the experience of working with Paul and George was something that I&#039;m glad to have had as well; I&#039;ve learned a lot from them.
&lt;/p&gt;&lt;p&gt;
So: if you don&#039;t have your own copy yet, it&#039;s time to &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;camp=1789&amp;amp;tag=coffeecode-20&amp;amp;creative=9325&amp;amp;path=ASIN/0131855255/qid=1118973020/sr=2-1/ref=pd_bbs_b_2_1&quot;&gt;buy a copy&lt;/a&gt; (yep, and if you use that link you&#039;ll even contribute an extra couple of pennies to my pocket).
&lt;/p&gt;
&lt;h3&gt;Glitches&lt;/h3&gt;
&lt;p&gt;
Ah yes, I have found a glitch already. Actually I had half suspected this was coming, due to the last-minute change I requested to keep pace with the rapid pace of PHP Data Objects (PDO) development and evolution... a &lt;a href=&quot;http://www.netevil.org/node.php?nid=629&quot;&gt;global change to using class constants in PDO&lt;/a&gt; (from PDO_ATTR_BLAH to PDO::ATTR_BLAH) happened about a day before our final proofs were being sent off to the printer. I asked for the corresponding global change, and, of course, the name of the PDO_ODBC module now reads PDO::ODBC. It&#039;s not the end of the world, but it&#039;s a tiny bit embarassing.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 01 Nov 2005 18:09:55 -0500</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/26-guid.html</guid>
    
</item>
<item>
    <title>SQLEUCCM error message for DB2</title>
    <link>http://coffeecode.net/archives/25-SQLEUCCM-error-message-for-DB2.html</link>
            <category>DB2</category>
    
    <comments>http://coffeecode.net/archives/25-SQLEUCCM-error-message-for-DB2.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=25</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=25</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;Hopefully this proves useful to someone else in the same position in the future... I have been working on a simple PHP application that connects to DB2 using the &lt;a href=&#039;http://php.net/ibm_db2&#039;&gt;ibm_db2&lt;/a&gt; extension. Recently I decided to try scaling it up to test the application with a more realistic (10GB) database. 
&lt;/p&gt;&lt;p&gt;
I created a new test database on a partition that had enough room, but then encountered a very strange error message just trying to connect to the database:
&lt;/p&gt;
&lt;blockquote&gt;[IBM][CLI Driver] SQL0969N There is no message text corresponding to SQL error &quot;-2079391743&quot; in the message file on this workstation. The error was returned from module &quot;SQLEUCCM&quot; with original tokens &quot;&quot;. SQLCODE=-2079391743&lt;/blockquote&gt;
&lt;p&gt;
Needless to say, this message really didn&#039;t help me much. Googling and Yahooing for the terms also gave me no useful results (there was a thread on the International DB2 User Group mailing list, but the site requires a user ID and login and I just wanted to get on with my day). The &lt;a href=&quot;http://ibm.com/db2/udb/support/&quot;&gt;DB2 support site&lt;/a&gt; didn&#039;t provide any hits, and neither did the &lt;a href=&quot;http://publib.boulder.ibm.com/infocenter/db2help&quot;&gt;DB2 Information Center&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
It took me a while to figure this out, but apparently the ownership and permissions on the directory that contains your tablespaces (if you&#039;re using filesystem-based, or &quot;system managed&quot; tablespaces) have to be &quot;just so&quot;. DB2, for the uninitiated, uses operating system accounts and groups for database authentication and privileges. My DB2 instance user was &quot;db2inst1&quot;, belonging to the &quot;db2iadm1&quot; group -- default values -- however, the directory in which I created the tablespaces belonged to user &quot;dan&quot; and group &quot;db2iadm1&quot;.
&lt;/p&gt;
&lt;pre&gt;localhost php4 # ls -l /opt/photos/db2base -d
drwxrwxrwx  3 dan db2iadm1 72 Oct 18 10:35 /opt/photos/db2base&lt;/pre&gt;
&lt;p&gt;
Okay, so even though the db2inst1 user is a member of the db2iadm1 group, DB2 apparently also wants it to own the directory in which the tablespaces live. By issuing a &quot;chown db2inst1 /opt/photos/db2base&quot; command, DB2 was satisfied and my PHP scripts started working again. And maybe, just maybe, the next user that runs into this problem will find this post in a search engine and save themselves an hour or two of befuddlement... &lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 18 Oct 2005 11:26:27 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/25-guid.html</guid>
    
</item>
<item>
    <title>Apache Derby tutorial (OSCON 2005) materials</title>
    <link>http://coffeecode.net/archives/16-Apache-Derby-tutorial-OSCON-2005-materials.html</link>
            <category>Apache Derby</category>
    
    <comments>http://coffeecode.net/archives/16-Apache-Derby-tutorial-OSCON-2005-materials.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=16</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=16</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;The presentations, handouts, and solutions for the &quot;Deep Dive with Apache Derby: Perl, PHP, and Python&quot; tutorial I gave at OSCON 2005 are finally online, including a couple of last-minute corrections:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://coffeecode.net/talks/index.php&quot;&gt;Presentations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://coffeecode.net/uploads/talks/2005/derby_tutorial_oscon_2005.zip&quot;&gt;Handouts and solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The tutorial (my first solo 3.5 hour teaching session) went reasonably well, although my expectations of what comprises a tutorial apparently differs from the OSCON standard. I had structured the tutorial to be hands-on: after a brief lecture, the attendees were expected to perform exercises like installing Apache Derby, creating a database, setting up a connection through PHP, and the like. I was there to help them through the hurdles. 
&lt;/p&gt;&lt;p&gt;
In contrast, most of the other tutorials were apparently three-hour lectures. I sat in on the end of Larry Rosen&#039;s *Law for Geeks*, which appeared to be a great discussion forum -- good format, important subject, great speaker. I followed that up with Monday morning&#039;s *Introduction to PostgreSQL*, which, at the one-hour mark, was going painfully slowly... so I slipped out at the break to do a last-minute run through of my own tutorial instead, and fixed a couple of bugs in the presentation materials just in time &lt;img src=&quot;http://coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;
&lt;/p&gt;&lt;p&gt;
My tutorial had about 20 attendees at the start, but I knew it was going to be trouble when less than half of them actually had laptops. Of the laptops, about three had Linux (hurrah -- that matched my tutorial assumptions), a couple had Windows (I had tested everything on Windows, so I knew I could help them through), and one had Mac OSX (completely untested and foreign to me). That ratio was actually rather kind to me; in the rest of the OSCON audience, it seemed about half of the attendees were carrying Mac laptops.
&lt;/p&gt;&lt;p&gt;
After the break, I was down to about seven hard-core attendees. The attrition didn&#039;t surprise or dismay me -- if I was stuck in a hands-on tutorial without being able to get my hands on anything, I would probably leave too. Now, I had asked people to buddy up, but apparently overcoming the fear of strangers was too much to ask (and I admittedly didn&#039;t break the ice enough). The other rather frustrating factor was the rather sluggish wireless connectivity and ibm.com&#039;s sadistic time-outs playing hell with the 200 MB download required for the DB2 Application Development Client. I ended up copying all of the software onto a USB drive and distributing it manually to the attendees. Despite the frustrations with technology, though, I really felt positive vibes from the audience -- and nobody laid a beating on me in a dark corner after the session &lt;img src=&quot;http://coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;
&lt;/p&gt;&lt;p&gt;
&lt;strong&gt;Updated 2005-08-11&lt;/strong&gt;: Fixed the link to the presentations. Apparently not many people have tried to look at them, or didn&#039;t bother to tell me that they were not found &lt;img src=&quot;http://coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Updated 2007-11-20&lt;/strong&gt;: Apparently my host dropped one of the libraries required by the PHP presentation system, so the link to my presentation stopped working. Fixed - thanks to Gordon Agress for bringing this to my attention.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 08 Aug 2005 00:45:43 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/16-guid.html</guid>
    
</item>
<item>
    <title>Apache Derby graduates, Derby 10.1 has been released!</title>
    <link>http://coffeecode.net/archives/15-Apache-Derby-graduates,-Derby-10.1-has-been-released!.html</link>
            <category>Apache Derby</category>
    
    <comments>http://coffeecode.net/archives/15-Apache-Derby-graduates,-Derby-10.1-has-been-released!.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=15</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=15</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;Heh -- one day after my OSCON tutorial on &lt;b&gt;Apache Derby: Perl, PHP, and Python&lt;/b&gt;, where I focused on the 10.1-alpha release from back in May, the Derby team &lt;a href=&quot;http://db.apache.org/derby/releases/release-10.1.1.0.html&quot;&gt;announced the first Derby 10.1 release&lt;/a&gt;. Figures that there would be a flurry of activity &lt;i&gt;after&lt;/i&gt; my talk &lt;img src=&quot;http://coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;
&lt;/p&gt;&lt;p&gt;
I also noticed that, following the announcement of Derby&#039;s graduation from an Apache incubator project into a full-fledged Apache sub-project, the migration of Apache Derby from &lt;a href=&quot;http://incubator.apache.org/derby&quot;&gt;http://incubator.apache.org/derby&lt;/a&gt; to &lt;a href=&quot;http://db.apache.org/derby&quot;&gt;http://db.apache.org/derby&lt;/a&gt; is closer to completion. Great stuff!
&lt;/p&gt;&lt;p&gt;
I think I&#039;ll have to talk with the Derby team about having a bit more of an open and more traditional release process; most open source projects that I&#039;ve been involved with go with more than one alpha release, and they don&#039;t usually wait two months before suddenly declaring the official release. I have to assume that timing for OSCON and the Derby graduation into a full-fledged Apache sub-project played some part in the move, but it would be nice to see a more public discussion of the release cycle for future releases.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 03 Aug 2005 17:55:36 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/15-guid.html</guid>
    
</item>
<item>
    <title>I'm an author! &quot;Apache Derby: Off to the Races&quot;</title>
    <link>http://coffeecode.net/archives/7-Im-an-author!-Apache-Derby-Off-to-the-Races.html</link>
            <category>Apache Derby</category>
    
    <comments>http://coffeecode.net/archives/7-Im-an-author!-Apache-Derby-Off-to-the-Races.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=7</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    If you&#039;re looking for a book that covers Apache Derby / IBM Cloudscape top-to-bottom, and you want a gentle introduction to programming database applications with PHP, Perl, Python, JDBC, or .NET, &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;camp=1789&amp;amp;tag=coffeecode-20&amp;amp;creative=9325&amp;amp;path=ASIN/0131855255/qid=1118973020/sr=2-1/ref=pd_bbs_b_2_1&quot;&gt;Apache Derby: Off to the Races&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=coffeecode-20&amp;amp;l=ur2&amp;amp;o=1&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt; is the book for you!

No, really... I&#039;m a co-author, responsible for the chapters on managing Apache Derby (hey, it&#039;s a zero-admin database, so that wasn&#039;t too hard), setting up Apache Derby as a Network Server for ODBC / Call Level Interface (CLI) applications, and writing Perl, PHP, and Python database applications with Derby with both Web interfaces and GUI interfaces. &lt;a href=&quot;http://netevil.org/&quot;&gt;Wez Furlong&lt;/a&gt;, the king of PECL and PDO himself, reviewed the PHP chapter, so you know that, at least, is going to be good &lt;img src=&quot;http://coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 

My co-authors are Paul Zikopoulos and George Baklarz, who have written a ton of other commercial books. Me, this is my first time out in the real world (I&#039;ve written technical manuals for IBM before), and I&#039;m pretty excited. I just sent the last, corrected copy of my chapters back to the publisher yesterday, and while I&#039;m sure there are parts that I could improve on (if I thought about it for a really really long time), I&#039;m pretty damn proud of what&#039;s going in there and I think it will stand the reader in good stead.

Of course, it&#039;s not going to be published until the fall, but why wait -- order your copy now at &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;amp;camp=1789&amp;amp;tag=coffeecode-20&amp;amp;creative=9325&amp;amp;path=ASIN/0131855255/qid=1118973020/sr=2-1/ref=pd_bbs_b_2_1&quot;&gt;Apache Derby: Off to the Races&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=coffeecode-20&amp;amp;l=ur2&amp;amp;o=1&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt;! 
    </content:encoded>

    <pubDate>Wed, 15 Jun 2005 22:48:00 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/7-guid.html</guid>
    
</item>
<item>
    <title>Miguel deIcaza addresses MySQL User Conference</title>
    <link>http://coffeecode.net/archives/2-Miguel-deIcaza-addresses-MySQL-User-Conference.html</link>
            <category>MySQL</category>
    
    <comments>http://coffeecode.net/archives/2-Miguel-deIcaza-addresses-MySQL-User-Conference.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=2</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=2</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    Miguel gave a high-energy, high-enthusiasm, but rather scattered keynote address to the MySQL User Conference this morning:

&lt;ul&gt;
&lt;li&gt;Mentions of Apache Derby in context of Mono.Net Java interpreter: 2&lt;/li&gt;
&lt;li&gt;Mentions of SQLite as embedded database for Fspot application: 2&lt;/li&gt;
&lt;li&gt;Mentions of DB2 as supported database in Mono ADO.Net connector: 1&lt;/li&gt;
&lt;li&gt;Mentions of MySQL as supported database in Mono ADO.Net connector: 1&lt;/li&gt;
&lt;/ul&gt;

Probably not what the MySQL folks had in mind &lt;img src=&quot;http://coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; &lt;br /&gt;&lt;a href=&quot;http://coffeecode.net/archives/2-Miguel-deIcaza-addresses-MySQL-User-Conference.html#extended&quot;&gt;Continue reading &quot;Miguel deIcaza addresses MySQL User Conference&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 21 Apr 2005 13:34:14 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/2-guid.html</guid>
    
</item>

</channel>
</rss>