SUMMARY: DBM

From: Ellen Davis <daviser_at_email.uc.edu>
Date: Thu, 22 May 1997 12:30:54 -0400

Original Question:
> I have a DBM file of information on our employees which resides on a HP
> system running HP-UX 10. I would like to NFS mount the file to an
> AlphaServer 1000 running DU 4.0B and read it there. However, when I try
> this I cannot get it to work. The same program which can read the file on
> the HP will not read it on the AlphaServer (dbm_fetch returns NULL). Can
> this be done? Or am I going to have to make a DBM file on the AlphaServer
> also?

Thanks to all who replied:

Michael Smith
Steven W. Orr
Robert L. McMillin
Dr. Tom Blinn
Jude T. Cruz
Eric Z. Ayers
Tim Mooney

and suggested:

>
>The problem proabaly has to do with locking. Maybe your HP or alpha isn't
>configured for locks over NFS (try nfssetup on DU, or look in rc.config
>to enable it)
>
>In case you didn't know already, locking over NFS is painfully slow and
>full of gotchas. (many programs that work reliably on a local file
>system will not work correctly when run on an nfs file system). You can
>expect about 1% of the performance you might have gotten over a disk
>file if you have any contention on the file.
>


> DBM files might
>be architecture specific (more precisely, endian-specific). This would mean
>reading a big-endian created file from a little-endian machine wouldn't
>work.
>

>There are currently three different dbm interfaces. I'm not sure whether
>the files produced by all three are equal. The three are dbm (vanilla),
>gdbm (from GNU FSF), and ndbm which is not available on all systems. I
>know that the functional difference between {g,}dbm and ndbm is that ndbm
>allows the accessing program to have multiple files open at a time. The
>point is that a perl program can access a dbm file and might give you a
>quicker way to resolve experiments. Good luck.
>

> you probably want to use gdbm to at least give the files a chance
>of being consistent across the machines. Second, you might want to
>check into whether the dbm file format is itself byte-order dependent.
>(Is HP PA big- or little-endian?)
>

>
>There are two possibilities. One is that the dbm implementation on Digital
>UNIX is somehow incompatible with that on HP. That's possible, but it seems
>unlikely. The more likely problem is that although Digital's Alpha systems
>are "little end" machines like Intel x86 processors (and like VAX systems
>and PDP-11 systems were before them), that the HP-UX systems are "big end"
>like IBM mainframes or Sun SPARC systems.
>
>Unless the dbm software somehow KNEW that the database it was reading was in
>the opposite endian representation and corrected for it, there's no way it
>would be likely to be able to operate correctly.
>
>I'm not certain that the HP systems are big-endian, but that's what I think
>they are, and that would explain why the NFS mount isn't working; if there
>is a mix of binary and text data in the database (as I believe is the case)
>then you can't just read it as a byte stream, stuff it into memory, and get
>the right results when you try to interpret stuff that's supposed to be the
>binary fields.
>
>So you are probably going to either have to implement a server on the HP
>systems to provide application level access (should not be really hard to do
>if you think about it a bit), or replicate the database (which you probably
>would have to do with a unload/reload kind of copying).
>
>

>What you may want to look at is converting your dbm files to using Berkeley
>DB, which is binary compatible across various platforms. There are a lot
>of other good reasons to use Berkeley DB too, above and beyond the binary
>compatibility. An old version of it is even shipped as a standard part of
>Digital Unix 4.x.
>
>If you have a recent version of `perl' installed on your machine, take a
>look at the man page for `AnyDBM_File', which is part of Perl's man page
>library (it's probably in /usr/local/lib/perl5/man/man3, if you have it).
>That man page has a nice comparison of the various DB formats.
>


The problem in my case seemed to be that I was working with different
endian machines. I am looking at using Berkeley DB. But right now I have
other problems to deal with. The AlphaServer seems to have a hardware
problem. I won't mount my users_domain and is logging disk errors.
Digital is looking at it right now.






 Ellen Davis
Received on Thu May 22 1997 - 22:23:28 NZST

This archive was generated by hypermail 2.4.0 : Wed Nov 08 2023 - 11:53:36 NZDT