Referință rapidă

Ghid rapid Erlang ETS (Erlang Term Storage)

Ghid rapid de referinta pentru Erlang ETS in Elixir si Erlang: initializare tabele, control acces, tipuri de tabele si parcurgere.

· Publicat

ETS (Erlang Term Storage) este o baza de date cheie-valoare in memorie integrata direct in runtime-ul Erlang/OTP (BEAM).

🔗 Conex: Ghid rapid Limbajul Elixir

Inițializarea tabelelor și operațiuni de bază

# Creare tabel nou numit
table = :ets.new(:user_cache, [:set, :public, :named_table])

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

# Cautare inregistrari dupa cheie
result = :ets.lookup(:user_cache, {:user_1})
# => [{:user_1, "Alice", 30}]

# Stergere inregistrare sau golire tabel
:ets.delete(:user_cache, :user_1)
:ets.delete_all_objects(:user_cache)

# Distrugere completa a tabelului
:ets.delete(:user_cache)

Tipuri de tabele (Table Types)

Configurarea semanticii tabelului prin optiunile de creare:

Type Duplicate Keys Ordering Notes
:set No Unordered Tipul implicit; cheia este primul element; neordonat
:ordered_set No Ordered Chei sortate in ordinea termenilor Erlang; cautare O(log N)
:bag Yes Unordered Permite chei identice, interzice tuple identice
:duplicate_bag Yes Unordered Permite tuple complet identice

Controlul accesului (Access Controls)

  • :protected: Toate procesele pot citi; doar procesul proprietar poate scrie (Implicit).
  • :public: Orice proces poate citi si scrie concurent.
  • :private: Doar procesul proprietar poate citi si scrie.

Parcurgere pe tabele :ordered_set (Traversal)

# Functii de navigare intre chei
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)

Subiecte conexe