<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE message PUBLIC
  "-//MLarc//DTD MLarc output files//EN"
  "../../mlarc.dtd"[
  <!ATTLIST message
    listname CDATA #REQUIRED
    title CDATA #REQUIRED
  >
]>

  <?xml-stylesheet href="../../mlarc.xsl" type="text/xsl"?>


<message 
  url="2003/01/9c6de8029efabdd5e50e038b39b60afe"
  from="Xavier Leroy &lt;xavier.leroy@i...&gt;"
  author="Xavier Leroy"
  date="2003-01-02T10:03:28"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?"
  prev="2003/01/25dd585393832a00ec069df6b9aa3e64"
  next="2003/01/48b807e3da767c9c00767bf580dd3d3c"
  prev-in-thread="2002/12/20995c2eed42f26e0a7193d54f646852"
  next-in-thread="2002/12/3495a91ddb9b58e5b4cbfbcecf3196b6"
  prev-thread="2002/12/955553377ddd7b841cae02e31027af85"
  next-thread="2002/12/e8956ad76e72ddd27c1ee0c4c94f2234"
  root="../../"
  period="month"
  listname="caml-list"
  title="Archives of the Caml mailing list">

<thread subject="[Caml-list] Cross-platform DBM equivalent?">
<msg 
  url="2002/12/20995c2eed42f26e0a7193d54f646852"
  from="Matt Gushee &lt;mgushee@h...&gt;"
  author="Matt Gushee"
  date="2002-12-26T07:17:55"
  subject="[Caml-list] Cross-platform DBM equivalent?">
<msg 
  url="2003/01/9c6de8029efabdd5e50e038b39b60afe"
  from="Xavier Leroy &lt;xavier.leroy@i...&gt;"
  author="Xavier Leroy"
  date="2003-01-02T10:03:28"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
</msg>
<msg 
  url="2002/12/3495a91ddb9b58e5b4cbfbcecf3196b6"
  from="Alessandro Baretta &lt;alex@b...&gt;"
  author="Alessandro Baretta"
  date="2002-12-26T08:37:34"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
<msg 
  url="2002/12/96888a372ce218950508243225a780b3"
  from="Matt Gushee &lt;mgushee@h...&gt;"
  author="Matt Gushee"
  date="2002-12-26T10:05:46"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
<msg 
  url="2002/12/ffd3fe14f523a6c74b89d10fa68e646a"
  from="Pierre Weis &lt;pierre.weis@i...&gt;"
  author="Pierre Weis"
  date="2002-12-26T16:50:33"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
<msg 
  url="2002/12/07b606dda0c1892004aca27b1e1f0cf3"
  from="guttman@m..."
  author="guttman@m..."
  date="2002-12-26T17:03:57"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
<msg 
  url="2002/12/db81a05edc4270565847a66314758ce1"
  from="Pierre Weis &lt;pierre.weis@i...&gt;"
  author="Pierre Weis"
  date="2002-12-27T13:07:37"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
</msg>
</msg>
<msg 
  url="2002/12/c79d369cc17db18e7368b8d2696aa740"
  from="David Brown &lt;caml-list@d...&gt;"
  author="David Brown"
  date="2002-12-26T17:08:57"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
</msg>
<msg 
  url="2002/12/7912d03296d1ae0a2a4c75621d2323bf"
  from="Stefano Zacchiroli &lt;zack@c...&gt;"
  author="Stefano Zacchiroli"
  date="2002-12-26T18:23:28"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
<msg 
  url="2002/12/4b687e470bd28b697a94f19ebab54b3c"
  from="Pierre Weis &lt;pierre.weis@i...&gt;"
  author="Pierre Weis"
  date="2002-12-27T13:12:17"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
<msg 
  url="2003/01/cea91efb37cfa81c5f9b96f1607c587c"
  from="Sven Luther &lt;luther@d...&gt;"
  author="Sven Luther"
  date="2003-01-12T10:13:07"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
</msg>
</msg>
</msg>
<msg 
  url="2002/12/d5e9b843f060acb0356e8a3a7c7657f4"
  from="Dmitry Bely &lt;dbely@m...&gt;"
  author="Dmitry Bely"
  date="2002-12-26T19:20:54"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
<msg 
  url="2002/12/df58225cc08453b568184e9786b41c89"
  from="Pierre Weis &lt;pierre.weis@i...&gt;"
  author="Pierre Weis"
  date="2002-12-27T13:20:07"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
<msg 
  url="2002/12/ba14d57d873313f787871b2decd9c86f"
  from="brogoff@s..."
  author="brogoff@s..."
  date="2002-12-27T18:03:58"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
</msg>
</msg>
</msg>
<msg 
  url="2002/12/559912569fba2d8a4b4754699c085d6c"
  from="Matt Gushee &lt;mgushee@h...&gt;"
  author="Matt Gushee"
  date="2002-12-27T07:22:02"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
</msg>
</msg>
</msg>
</msg>
<msg 
  url="2002/12/aed492fccff8265e6a83b9ecedbe0463"
  from="Yaron M. Minsky &lt;yminsky@C...&gt;"
  author="Yaron M. Minsky"
  date="2002-12-26T20:00:10"
  subject="Re: [Caml-list] Cross-platform DBM equivalent?">
</msg>
</msg>
</thread>

<contents>
&gt; I am developing an application that needs fast access to persistent
&gt; configuration data, and I thought that DBM might be a good way to
&gt; provide that functionality ... but I see that DBM isn't available on
&gt; Windows.

As others mentioned, you could compile the C sources for a DBM
implementation on Windows, then build the Caml/DBM binding.

&gt; Is there something similar that works on all platforms? Or an
&gt; alternative approach?
&gt; By the way, I'm at an early prototyping stage, so I can't be much more
&gt; specific about my needs. What I can say at this point is that speed is 
&gt; important; I think I need a key-value data structure, and it's probably
&gt; okay for the types of both keys and values to be limited to strings, as
&gt; with DBM.

I guess it all depends on the number of key-value pairs:

- For a few hundred entries, just parsing a plain text file is very
fast, e.g. using an ocamllex-generated lexer to do the parsing.  Plain
text files also make debugging easier.

- Up to 10^5 entries, input_value of a hash table or a "map" is quite
fast, e.g. less than 0.1 seconds.  This is what I use in the
SpamOracle mail filter to read the database of word frequencies.

It is true that the binary format used by input_value may change in
future OCaml releases, but so does the format of DBM databases, and
the input_value format hasn't changed in incompatible ways since 1996
or so :-)  Still, it is prudent to support conversions between
input_value form and some textual, portable form.

- Beyond 10^5 entries, either DBM or a real database (such as MySQL)
seems best.  Remember that DBM files are quite large, so an SQL
approach might be more effective.

Hope this helps,

- Xavier Leroy
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners

</contents>

</message>

