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)