4

All I need is a large persistent lookup table in Erlang and dets seems like just the thing though I need a definative answer to:

  • just how big the total size of the binaries in the table can be.
  • how big each entry can be
  • what to do if the answer to the first question is less than 100G
Arthur Ulfeldt
  • 90,827
  • 27
  • 201
  • 284

3 Answers3

8

This is kind of an RTFM question. As quoted directly in the second paragraph of the DETS manual:

The size of Dets files cannot exceed 2 GB. If larger tables are needed, Mnesia's table fragmentation can be used.

Dustin
  • 89,080
  • 21
  • 111
  • 133
2

One obvious approach, once it is thought of, is to hash dets entries over multiple dets files.

A linear hash should make it dynamically growable, by splitting buckets into newly created dets files when one file reaches an upper threshold.

There are also a number of port drivers that enable you to use sleepycat/berkely db, or tokyo tyrrant. Those databases have file limits that are much higher than 2Gb.

Christian
  • 9,417
  • 1
  • 39
  • 48
0

using mnesia fragmented dic_copies can overcome these limits provided you know how many fragments to crate ahead of time
http://www.trapexit.org/Mnesia_Table_Fragmentation

Arthur Ulfeldt
  • 90,827
  • 27
  • 201
  • 284