SXDE 1/08 and PostgreSQL

Solaris Express, Developer Edition 1/08 or SXDE 1/08 as its affectionately called within Sun is being released on monday. There are certain new features that I think needs to be highlighted specially for the PostgreSQL community.

Well for starters the versions of PostgreSQL included in SXDE are PostgreSQL 8.1.10 and PostgreSQL 8.2.5. (Unfortunately not all security fixes made it to the release though). However the big news is the PostgreSQL servers which are pretty hidden now has an administration GUI. Yes pgAdmin III is now included in SXDE.

Also there are lot of new features which now are quite well integrated with PostgreSQL.

For example take NetBeans 6.0 which is newly included in SXDE 1/08. The most tauted addition in Netbeans 6.0 is the Ruby Feature.  But many people fail to notice that now by default NetBeans knows that there is a database called PostgreSQL (along with MySQL) and it also has the PostgreSQL JDBC driver all configured to connect to PostgreSQL database. How about that for simplifying PostgreSQL access for Java applications?

 Another new feature in SXDE 1/08 is "Project WebStack".  Project WebStack or "Web Application Stack optimized for Solaris"  makes the Solaris equivalent of LAMP (which some people call it SAMP, AMPS, etc) easy to use out of the box. LAMP/SAMP is traditionally Apache WebServer, MySQL, PHP.  It does support PostgreSQL  and hence for the PostgreSQL loving folks like me, we know have WebServer, PostgreSQL with PHP support along with an IDE, Netbeans all out of the box with this new version.  Also Glassfish, the only application server which boasts of publishing results with PostgreSQL is also included in the release.

So that takes care of application development where it uses PostgreSQL.

Little known secret about SXDE is there is nothing preventing you to use it actually as a deployment platform. Why would one use it as a deployment platform? Well for one it is free, second it has features that seems compelling enough that other versions may not have and its a feature that is needed now in order to deploy.

Are there any such features in SXDE? To my mind yes there are few.

My favorite deployment features are as follows:

1. Support for CIFS Server in ZFS along with iSCSI and NFS. So ZFS volumes can now be exported from Solaris in three forms NFS, iSCSI and CIFS (Windows). Now why that is important for PostgreSQL community. Actually I can use my favorite system X4500 just as mirror storage and use a bigger system like Sun Fire X4450 to drive the PostgreSQL engine while the database is stored in X4500. Which means while the data is stored on mirrored drives in X4500 via ZFS, but now this allows me to use Operating System of Choice (Solaris for me, Linux and/or Windows for many) on 16-core Sun Fire X4450 for run PostgreSQL.  So now I have 24TB (after mirror) storage talking to my server, allowing me to take snapshots or make clones for replications irrespective of the Operating System that is running beneath PostgreSQL. This feature alone allows you to use ZFS features in Solaris without moving your PostgreSQL application to Solaris. Definitely an "award" worthy feature.

2. Sun xVM server:  The "hypervisor" to allow other Operating System to be hosted with SXDE as the "host" operating system. I do see lot of opportunities here again for deployment. For example another one of my pet projects (which means managers gets to take the  allocated time away from it since they know I will end up doing it anyway sooner or later)  is to create a framework for deploying PostgreSQL based end user applications pre-configured, minimized and easy to setup "appliances" on top of existing xVM servers. I think this model will be very beneficial for applications based on different open source products. One example that comes to my mind is SugarCRM deployment using PostgreSQL and glassfish. Since if one ends up using components from different communities, there ends up some configuration work. But now such configuration work need not be replicated as one properly setup, then theoretically all you should do is "sys-unconfig" the virtual machine and make clones of it and deploy it on any xVM server. The first boot will take you to OS configuration. But the application setup is already out and configured and ready to start via SMF.

So overall lots of new features in SXDE 1/08 that helps the PostgreSQL users whether they are running their database on Solaris or not.



I wouldn't trust NFS or CIFS to hold a mission-critical PostgreSQL instance. There have been a number of reports of weird data corruption problems on NFS if you browse through the PostgreSQL mailing lists (regardless of the quality of the underlying NFS master as far as I know), and I'd be surprised if CIFS in a production environment worked any better. Exporting ZFS via iSCSI and then mounting on another OS would be cool though.

Using an X4500 as the little Sun guys crack me up. I've got a loaner one of those here but it fails to make favorite status because as far as I can tell it doesn't have a write cache in front of all the drives. Kind of makes it hard to get good performance with insert-heavy applications that are limited by how fast they can fsync things to disk. Plenty fast at everything else though.

P.S. the first link here (for SXDE) is broken--should be an absolute URL, it's a relative one.

Posted by Greg Smith on February 03, 2008 at 08:45 PM EST #

Hi Greg,

Thanks for reporting the broken URL.Its fixed now. Sun Fire X4500 does have some write cache but you have to look at it another way.
First of all it has 8MB on every disk which ZFS enables it if you assign the whole drive to ZFS. Plus if you look at how the whole ZFS thing works on X4500 and you use it as NAS,CIFS,iSCSI server than the 16GB RAM works as write cache for you (until you sync).

Adding an UPS will add "battery-backup" to your write cache. Doesnt it?

For sync performances, there are some practices that one can do to improve your fsync performance. For example in case of PostgreSQL, it would be desirable to have a small 4-6 disk pool and assign a dataset for PostgreSQL logs so only those disks will start spinning in case of fsync. Since rest of the files are not forced to sync, ZFS will optimize writes in those cases so it should not be an issue.

If you want to discuss it more let me know. I have done few tests inhouse here. It wont match the performance of Fiber Channel Drives which are very expensive but it certainly delivers quite a bit.

Posted by Jignesh Shah on February 04, 2008 at 02:06 AM EST #

Post a Comment:
Comments are closed for this entry.

Jignesh Shah is Principal Software Engineer in Application Integration Engineering, Oracle Corporation. AIE enables integration of ISV products including Oracle with Unified Storage Systems. You can also follow me on my blog


« July 2016