Szybka pomoc

Ściągawka z Erlang ETS (Erlang Term Storage)

Szybki przewodnik po pamięci Erlang ETS w Elixirze i Erlangu: inicjalizacja tabel, uprawnienia dostępu, typy tabel (set/ordered_set/bag) i wyszukiwanie.

· Opublikowano

ETS (Erlang Term Storage) to wbudowana baza danych klucz-wartość w pamięci maszyny wirtualnej Erlang/OTP (BEAM).

🔗 Powiązane: Ściągawka z języka Elixir

Inicjalizacja tabeli i podstawowe operacje

# Utworzenie nowej nazwanej tabeli
table = :ets.new(:user_cache, [:set, :public, :named_table])

# Wstawianie krotek do tabeli
:ets.insert(:user_cache, {:user_1, "Alice", 30})
:ets.insert(:user_cache, {:user_2, "Bob", 25})

# Wyszukiwanie rekordow wedlug klucza
result = :ets.lookup(:user_cache, {:user_1})
# => [{:user_1, "Alice", 30}]

# Usuniecie rekordu lub wyczyszczenie tabeli
:ets.delete(:user_cache, :user_1)
:ets.delete_all_objects(:user_cache)

# Calkowite zniszczenie tabeli
:ets.delete(:user_cache)

Typy tabel (Table Types)

Konfiguracja semantyki tabeli za pomocą opcji:

Type Duplicate Keys Ordering Notes
:set No Unordered Domyslny typ tabeli; klucz to pierwszy element; nieuporzadkowana
:ordered_set No Ordered Klucze posortowane wedlug porzadku termow Erlanga; wyszukiwanie O(log N)
:bag Yes Unordered Zezwala na powielone klucze, zabrania identycznych krotek
:duplicate_bag Yes Unordered Zezwala na w pelni powielone krotki

Kontrola dostępu (Access Controls)

  • :protected: Wszystkie procesy moga czytac; tylko wlasciciel moze pisac (Domyslnie).
  • :public: Kazdy proces moze czytac i pisac wspolbieznie.
  • :private: Tylko proces wlasciciela moze czytac i pisac.

Przechodzenie po tabeli :ordered_set (Traversal)

# Funkcje nawigacji po kluczach
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)

Powiązane tematy