Module db_ets

DB back-end using ets.

Copyright © 2013-2014 Zuse Institute Berlin,

Version: $Id$

Behaviours: db_backend_beh.

Authors: Jan Fajerski (fajerski@zib.de).

Description

DB back-end using ets. Two keys K and L are considered equal if K == L yields true.

Data Types

db()

db() = ets:tab()

entry()

entry() = db_backend_beh:entry()

key()

key() = db_backend_beh:key()

'$end_of_table' is not allowed as key() or else iterations won't work!

Function Index

close/1Closes and deletes the DB named DBName.
close_and_delete/1Closes and deletes the DB named DBName.
delete/2Deletes the tuple saved under Key and returns the new DB.
foldl/3Is equivalent to ets:foldl(Fun, Acc0, DB).
foldl/4Is equivalent to foldl(DB, Fun, Acc0, Interval, get_load(DB)).
foldl/5foldl iterates over DB and applies Fun(Entry, AccIn) to every element encountered in Interval.
foldl_unordered/3Works similar to foldl/3 but uses ets:foldl instead of our own implementation.
foldr/3Is equivalent to ets:foldr(Fun, Acc0, DB).
foldr/4Is equivalent to foldr(DB, Fun, Acc0, Interval, get_load(DB)).
foldr/5Behaves like foldl/5 with the difference that it starts at the end of Interval and iterates towards the start of Interval.
get/2Returns the entry that corresponds to Key or {} if no such tuple exists.
get_load/1Returns the current load (i.e.
get_name/1Returns the name of the DB specified in new/1.
get_persisted_tables/0Gets a list of persisted tables (none with ets!).
is_available/0Checks for modules required for this DB backend.
new/1Creates new DB handle named DBName.
new/2Creates new DB handle named DBName with possibility to pass Options.
open/1Open a previously existing database.
put/2Saves arbitrary tuple Entry or list of tuples Entries in DB DBName and returns the new DB.
supports_feature/1Returns true if the DB support a specific feature (e.g.
tab2list/1Returns a list of all objects in the table Table_name.

Function Details

new/1

new(DBName :: nonempty_string()) -> db()

Creates new DB handle named DBName.

new/2

new(DBName :: nonempty_string(), Options :: [term()]) -> db()

Creates new DB handle named DBName with possibility to pass Options.

open/1

open(DBName :: nonempty_string()) -> no_return()

Open a previously existing database. Not supported by ets. A new database is created

close/1

close(DBName :: db()) -> true

Closes and deletes the DB named DBName

close_and_delete/1

close_and_delete(DBName :: db()) -> true

Closes and deletes the DB named DBName

put/2

put(DBName :: db(), Entry :: entry() | [Entries :: entry()]) ->
       db()

Saves arbitrary tuple Entry or list of tuples Entries in DB DBName and returns the new DB. The key is expected to be the first element of Entry.

get/2

get(DBName :: db(), Key :: key()) -> entry() | {}

Returns the entry that corresponds to Key or {} if no such tuple exists.

delete/2

delete(DBName :: db(), Key :: key()) -> db()

Deletes the tuple saved under Key and returns the new DB. If such a tuple does not exists nothing is changed.

get_persisted_tables/0

get_persisted_tables() -> [nonempty_string()]

Gets a list of persisted tables (none with ets!).

get_name/1

get_name(DB :: db()) -> nonempty_string()

Returns the name of the DB specified in new/1.

is_available/0

is_available() -> boolean() | [atom()]

Checks for modules required for this DB backend. Returns true if no modules are missing, or else a list of missing modules

supports_feature/1

supports_feature(Feature :: atom()) -> boolean()

Returns true if the DB support a specific feature (e.g. recovery), false otherwise.

get_load/1

get_load(DB :: db()) -> non_neg_integer()

Returns the current load (i.e. number of stored tuples) of the DB.

foldl/3

foldl(DB :: db(),
      Fun :: fun((Key :: key(), AccIn :: A) -> AccOut :: A),
      Acc0 :: A) ->
         Acc1 :: A

Is equivalent to ets:foldl(Fun, Acc0, DB).

foldl/4

foldl(DB :: db(),
      Fun :: fun((Key :: key(), AccIn :: A) -> AccOut :: A),
      Acc0 :: A,
      Interval :: db_backend_beh:interval()) ->
         Acc1 :: A

Is equivalent to foldl(DB, Fun, Acc0, Interval, get_load(DB)).

foldl/5

foldl(DB :: db(),
      Fun :: fun((Key :: key(), AccIn :: A) -> AccOut :: A),
      Acc0 :: A,
      Intervall :: db_backend_beh:interval(),
      MaxNum :: non_neg_integer()) ->
         Acc1 :: A

foldl iterates over DB and applies Fun(Entry, AccIn) to every element encountered in Interval. On the first call AccIn == Acc0. The iteration stops as soon as MaxNum elements have been encountered.

foldr/3

foldr(DB :: db(),
      Fun :: fun((Key :: key(), AccIn :: A) -> AccOut :: A),
      Acc0 :: A) ->
         Acc1 :: A

Is equivalent to ets:foldr(Fun, Acc0, DB).

foldr/4

foldr(DB :: db(),
      Fun :: fun((Key :: key(), AccIn :: A) -> AccOut :: A),
      Acc0 :: A,
      Interval :: db_backend_beh:interval()) ->
         Acc1 :: A

Is equivalent to foldr(DB, Fun, Acc0, Interval, get_load(DB)).

foldr/5

foldr(DB :: db(),
      Fun :: fun((Key :: key(), AccIn :: A) -> AccOut :: A),
      Acc0 :: A,
      Interval :: db_backend_beh:interval(),
      MaxNum :: non_neg_integer()) ->
         Acc1 :: A

Behaves like foldl/5 with the difference that it starts at the end of Interval and iterates towards the start of Interval.

foldl_unordered/3

foldl_unordered(DB :: db(),
                Fun ::
                    fun((Entry :: entry(), AccIn :: A) ->
                            AccOut :: A),
                Acc0 :: A) ->
                   Acc1 :: A

Works similar to foldl/3 but uses ets:foldl instead of our own implementation. The order in which will be iterated over is unspecified, but using this fuction might be faster than foldl/3 if it does not matter.

tab2list/1

tab2list(Table_name :: db()) -> [Entries :: entry()]

Returns a list of all objects in the table Table_name.


Generated by EDoc, Sep 11 2020, 15:26:02.