Erlang (programming language)/Tutorials/ETS: Difference between revisions
imported>Eric Evers |
imported>Eric Evers |
||
Line 53: | Line 53: | ||
Data structure options include: | Data structure options include: | ||
set, ordered set, bag, and duplicate bag. | set, ordered set, bag, and duplicate bag. | ||
A set has only unique keys and values. An sorted version of set. A bag can have duplicate keys. A duplicate bag can have duplicate keys and values. | A set has only unique keys and values. An sorted version of set exists. A bag can have duplicate keys. A duplicate bag can have duplicate keys and values. | ||
set [{zod,alice},{smith,joe}] | set [{zod, alice},{smith, joe}] | ||
ordered set [{smith,joe},{zod,alice}] | ordered set [{smith, joe},{zod, alice}] | ||
bag [{smith,joe},{smith,ann}] | bag [{smith, joe},{smith, ann}] | ||
duplicate bag [{smith,joe},{smith,joe]] | duplicate bag [{smith, joe},{smith, joe]] | ||
Access options include: | Access options include: | ||
private, protected, and public. | private, protected, and public. | ||
Private ets data is limited to the owning process. Protected ets tables are readable by other processes. Public ets tables have read and write access by other processes. | Private ets data is limited to the owning process. Protected ets tables are readable by other processes. Public ets tables have read and write access by other processes. |
Revision as of 08:40, 27 June 2008
The metadata subpage is missing. You can start it via filling in this form or by following the instructions that come up after clicking on the [show] link to the right. | |||
---|---|---|---|
|
ETS local data storage
ETS is the erlang table storage system, which provides hash storage and access functions. ETS data is stored in a process as long as it is running. Here is a sample of how to use some simple functions in ETS
Sample program: test_ets.erl
-module(test_ets). -compile(export_all). start() -> start( mouse ). start( Animal ) -> Kingdom = ets:new( 'magic', [] ), % note: table is not square populate( Kingdom, [{micky,mouse}, {mini,mouse}, {goofy}] ), Member = ets:member( Kingdom, micky ), io:format( " member ~w ~n ", [ Member ] ), show_next_key( Kingdom, micky ), find_animal( Kingdom, Animal ). show_next_key( _Kingdom, '$end_of_table' ) -> done; show_next_key( Kingdom, Key) -> Next = ets:next( Kingdom, Key ), io:format( " next ~w ~n ", [ Next ] ), show_next_key( Kingdom, Next ). populate( _Kingdom, [] ) -> {done,start}; populate( Kingdom, [H | T] ) -> ets:insert( Kingdom, H ), populate( Kingdom, T ). find_animal( Kingdom, Animal ) -> ets:match( Kingdom, { '$1', Animal } ).
% ============== % sample output % ============== % 53> test_ets:start(). % member true % next mini % next goofy % next '$end_of_table' % [[mini],[micky]]
Advanced options
There are a number of options for ets data.
Data structure options include: set, ordered set, bag, and duplicate bag. A set has only unique keys and values. An sorted version of set exists. A bag can have duplicate keys. A duplicate bag can have duplicate keys and values.
set [{zod, alice},{smith, joe}] ordered set [{smith, joe},{zod, alice}] bag [{smith, joe},{smith, ann}] duplicate bag [{smith, joe},{smith, joe]]
Access options include: private, protected, and public. Private ets data is limited to the owning process. Protected ets tables are readable by other processes. Public ets tables have read and write access by other processes.