Snelle referentie

Erlang ETS (Erlang Term Storage) Spiekbrief

Korte handleiding voor Erlang ETS in Elixir en Erlang: tabelinitialisatie, toegangscontroles, tabeltypen (set/ordered_set/bag) en doorlopen.

· Gepubliceerd

ETS (Erlang Term Storage) is een robuuste in-memory key-value database direct ingebouwd in de Erlang/OTP-runtime (BEAM).

🔗 Gerelateerd: Elixir Programmeertaal Spiekbrief

Tabelinitialisatie en basisbewerkingen

# Maak een nieuwe benoemde tabel aan
table = :ets.new(:user_cache, [:set, :public, :named_table])

# Voeg tuples in de tabel in
:ets.insert(:user_cache, {:user_1, "Alice", 30})
:ets.insert(:user_cache, {:user_2, "Bob", 25})

# Zoek records op sleutel
result = :ets.lookup(:user_cache, {:user_1})
# => [{:user_1, "Alice", 30}]

# Verwijder record of maak tabel leeg
:ets.delete(:user_cache, :user_1)
:ets.delete_all_objects(:user_cache)

# Verwijder de tabel volledig
:ets.delete(:user_cache)

Tabeltypen (Table Types)

Configureer tabelgedrag via aanmaakopties:

Type Duplicate Keys Ordering Notes
:set No Unordered Standaard tabeltype; sleutel is het eerste element; ongeordend
:ordered_set No Ordered Sleutels gesorteerd in Erlang-termvolgorde; O(log N) lookup
:bag Yes Unordered Staat identieke sleutels toe, weigert identieke tuples
:duplicate_bag Yes Unordered Staat identieke tuples toe

Toegangscontroles (Access Controls)

  • :protected: Alle processen kunnen lezen; alleen eigenaar kan schrijven (Standaard).
  • :public: Elk proces kan gelijktijdig lezen en schrijven.
  • :private: Alleen het eigenaar-proces kan lezen en schrijven.

Doorlopen op :ordered_set (Traversal)

# Navigatiefuncties voor sleutels
first_key = :ets.first(:user_cache)
next_key  = :ets.next(:user_cache, first_key)
prev_key  = :ets.prev(:user_cache, next_key)
last_key  = :ets.last(:user_cache)

Verwante onderwerpen